#                                                                    -*-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);

# Windows error look completely different :-/

sub errors_getinfo
{
    my ($cmd, $args) = @_;
    if ($port_type eq 'W32') {
        return (2, "process_begin: CreateProcess(NULL, $cmd $args, ...) failed.\nmake (e=2): The system cannot find the file specified.");
    }

    return (127, "#MAKE#: $cmd: $ERR_no_such_file");
}

# TEST #3
# -------

# Try failing due to unknown command
my $unk = './foobarbazbozblat';
unlink($unk);

my ($ernum, $erstr) = errors_getinfo($unk, "xx yy");
run_make_test(qq!
one: ; -$unk xx yy
!, 'one',
              "$unk xx yy\n$erstr\n#MAKE#: [#MAKEFILE#:2: one] Error $ernum (ignored)\n");

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

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

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

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

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

($ernum, $erstr) = errors_getinfo($unk, "qq rr");
run_make_test(qq!
three:
\t\@echo one
\t$unk qq rr
!, 'three',
              "one\n$unk qq rr\n$erstr\n#MAKE#: *** [#MAKEFILE#:4: three] Error $ernum\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) or print "mkdir: sd: $!\n";

    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;
