$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)
{
   $delete_command = "delete_file";
}
else
{
   $delete_command = "rm";
}

open(MAKEFILE,"> $makefile");

# The Contents of the MAKEFILE ...

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

# END of Contents of MAKEFILE

close(MAKEFILE);

&touch("foo");

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

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

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

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

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

# 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;
}


&touch("foo");

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

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

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

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

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

1;
