| # -*-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\@$CMD_rmfile $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', "$CMD_rmfile $example\n"); | |
| # TEST #4 | |
| # ------- | |
| run_make_test(undef, '-s', "This makefile did not clean the dir... good\n"); | |
| 1; |