#                                                                    -*-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
$makefile:2: recipe for target 'clean' failed
$make_name: [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
$makefile:5: recipe for target 'clean2' failed
$make_name: [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;
