#                                                                    -*-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
!,
              'one', "$unk xx yy\n#MAKE#: $unk: $err\n#MAKE#: [#MAKEFILE#:2: one] Error 127 (ignored)\n");

# TEST #4
# -------

run_make_test(qq!
two: ; $unk aa bb
!, 'two -i',
              "$unk aa bb\n#MAKE#: $unk: $err\n#MAKE#: [#MAKEFILE#:2: two] Error 127 (ignored)\n");

# TEST #5
# -------

run_make_test(undef, 'two',
              "$unk aa bb\n#MAKE#: $unk: $err\n#MAKE#: *** [#MAKEFILE#:2: two] Error 127\n", 512);

# SV #56918 : Test the unknown command as the second recipe line

run_make_test(qq!
three:
\t\@echo one
\t$unk qq rr
!, 'three',
              "one\n$unk qq rr\n#MAKE#: $unk: $err\n#MAKE#: *** [#MAKEFILE#:4: three] 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;
