| # -*-perl-*- |
| |
| $description = "Test ignored failures in recipe command lines"; |
| |
| run_make_test(qq! |
| one: |
| \t-exit 1 |
| \texit 0 |
| two: |
| \texit 1 |
| \texit 0 |
| !, |
| "one", "exit 1\n#MAKE#: [#MAKEFILE#;3: one] Error 1 (ignored)\nexit 0\n"); |
| |
| # TEST #1 |
| # ------- |
| |
| run_make_test(undef, " -i two", |
| "exit 1\n#MAKE#: [#MAKEFILE#;6: two] Error 1 (ignored)\nexit 0\n"); |
| |
| # TEST #2 |
| # ------- |
| |
| # Test that error line offset works |
| |
| run_make_test(qq! |
| all: |
| \t\@echo hi |
| \t\@echo there |
| \t\@exit 1 |
| !, |
| '', "hi\nthere\n#MAKE#: *** [#MAKEFILE#;5: all] Error 1", 512); |
| |
| # TEST #3 |
| # ------- |
| |
| # Try failing due to unknown command |
| my $unk = './foobarbazbozblat'; |
| unlink($unk); |
| |
| my $err = $ERR_no_such_file; |
| |
| run_make_test(qq! |
| one: ; -$unk xx yy |
| two: ; $unk aa bb |
| !, |
| 'one', "$unk xx yy\n#MAKE#: $unk: $err\n#MAKE#: [#MAKEFILE#;2: one] Error 127 (ignored)\n"); |
| |
| # TEST #4 |
| # ------- |
| |
| run_make_test(undef, 'two -i', |
| "$unk aa bb\n#MAKE#: $unk: $err\n#MAKE#: [#MAKEFILE#;3: two] Error 127 (ignored)\n"); |
| |
| # TEST #5 |
| # ------- |
| |
| run_make_test(undef, 'two', |
| "$unk aa bb\n#MAKE#: $unk: $err\n#MAKE#: *** [#MAKEFILE#;3: two] Error 127\n", 512); |
| |
| # Try failing due to non-executable file |
| |
| if ($ERR_nonexe_file) { |
| my $noexe = './barfooblatboz'; |
| touch($noexe); |
| |
| run_make_test(qq! |
| one: ; -$noexe xx yy |
| two: ; $noexe aa bb |
| !, |
| 'one', "$noexe xx yy\n#MAKE#: $noexe: $ERR_nonexe_file\n#MAKE#: [#MAKEFILE#;2: one] Error 127 (ignored)\n"); |
| |
| unlink($noexe); |
| } |
| |
| # Try failing by "running" a directory |
| |
| if ($ERR_exe_dir) { |
| mkdir('sd', 0775); |
| |
| run_make_test(q! |
| PATH := . |
| all: ; sd |
| !, |
| '', "sd\n#MAKE#: sd: $ERR_exe_dir\n#MAKE#: *** [#MAKEFILE#;3: all] Error 127", 512); |
| |
| run_make_test(q! |
| all: ; ./sd |
| !, |
| '', "./sd\n#MAKE#: ./sd: $ERR_exe_dir\n#MAKE#: *** [#MAKEFILE#;2: all] Error 127", 512); |
| |
| rmdir('sd'); |
| } |
| |
| 1; |