# -*-perl-*- $description = "The following test creates a makefile to test command echoing. It tests that when a command line starts with a '\@', the echoing of that line is suppressed. It also tests the -n option which tells make to ONLY echo the commands and no execution happens. In this case, even the commands with '\@' are printed. Lastly, it tests the -s flag which tells make to prevent all echoing, as if all commands started with a '\@'."; $details = "This test is similar to the 'clean' test except that a '\@' has been placed in front of the delete command line. Four tests are run here. First, make is run normally and the first echo command should be executed. In this case there is no '\@' so we should expect make to display the command AND display the echoed message. Secondly, make is run with the clean target, but since there is a '\@' at the beginning of the command, we expect no output; just the deletion of a file which we check for. Third, we give the clean target again except this time we give make the -n option. We now expect the command to be displayed but not to be executed. In this case we need only to check the output since an error message would be displayed if it actually tried to run the delete command again and the file didn't exist. Lastly, we run the first test again with the -s option and check that make did not echo the echo command before printing the message.\n"; $example = "EXAMPLE_FILE"; touch($example); # TEST #1 # ------- run_make_test(" all: \techo This makefile did not clean the dir... good clean: \t\@$delete_command $example\n", '', 'echo This makefile did not clean the dir... good This makefile did not clean the dir... good'); # TEST #2 # ------- run_make_test(undef, 'clean', ''); if (-f $example) { $test_passed = 0; unlink($example); } # TEST #3 # ------- run_make_test(undef, '-n clean', "$delete_command $example\n"); # TEST #4 # ------- run_make_test(undef, '-s', "This makefile did not clean the dir... good\n"); 1;