#                                                                    -*-perl-*-

$description = "The following tests the -i option and the '-' in front of \n"
              ."commands to test that make ignores errors in these commands\n"
              ."and continues processing.";

$details = "This test runs two makes.  The first runs on a target with a \n"
          ."command that has a '-' in front of it (and a command that is \n"
          ."intended to fail) and then a delete command after that is \n"
          ."intended to succeed.  If make ignores the failure of the first\n"
          ."command as it is supposed to, then the second command should \n"
          ."delete a file and this is what we check for.  The second make\n"
          ."that is run in this test is identical except that the make \n"
          ."command is given with the -i option instead of the '-' in \n"
          ."front of the command.  They should run the same. ";

if ($vos)
{
   $rm_command = "delete_file";
}
else
{
   $rm_command = "rm";
}

open(MAKEFILE,"> $makefile");

# The Contents of the MAKEFILE ...

print MAKEFILE "clean:\n"
              ."\t-$rm_command cleanit\n"
              ."\t$rm_command foo\n"
              ."clean2: \n"
              ."\t$rm_command cleanit\n"
              ."\t$rm_command foo\n";

# END of Contents of MAKEFILE

close(MAKEFILE);

&touch("foo");

unlink("cleanit");
$cleanit_error = `sh -c "$rm_command cleanit 2>&1"`;
chomp $cleanit_error;
$delete_error_code = $? >> 8;

# TEST #1
# -------

$answer = "$rm_command cleanit
$cleanit_error
$make_name: [$makefile:2: clean] Error $delete_error_code (ignored)
$rm_command foo\n";

&run_make_with_options($makefile,"",&get_logfile);

# If make acted as planned, it should ignore the error from the first
# command in the target and execute the second which deletes the file "foo"
# This file, therefore, should not exist if the test PASSES.
if (-f "foo") {
  $test_passed = 0;
}

# The output for this on VOS is too hard to replicate, so we only check it
# on unix.
if (!$vos)
{
   &compare_output($answer,&get_logfile(1));
}


&touch("foo");

# TEST #2
# -------

$answer = "$rm_command cleanit
$cleanit_error
$make_name: [$makefile:5: clean2] Error $delete_error_code (ignored)
$rm_command foo\n";

&run_make_with_options($makefile,"clean2 -i",&get_logfile);

if (-f "foo") {
  $test_passed = 0;
}

if (!$vos) {
   &compare_output($answer,&get_logfile(1));
}

1;
