| # -*-perl-*- | |
| $description = "Test the -n option.\n"; | |
| $details = "Try various uses of -n and ensure they all give the correct results.\n"; | |
| open(MAKEFILE, "> $makefile"); | |
| # The Contents of the MAKEFILE ... | |
| print MAKEFILE <<'EOMAKE'; | |
| final: intermediate ; echo >> $@ | |
| intermediate: orig ; echo >> $@ | |
| EOMAKE | |
| close(MAKEFILE); | |
| &touch('orig'); | |
| # TEST 0 | |
| &run_make_with_options($makefile, "", &get_logfile); | |
| $answer = "echo >> intermediate\necho >> final\n"; | |
| &compare_output($answer, &get_logfile(1)); | |
| # TEST 1 | |
| &run_make_with_options($makefile, "-Worig -n", &get_logfile); | |
| $answer = "echo >> intermediate\necho >> final\n"; | |
| &compare_output($answer, &get_logfile(1)); | |
| unlink('orig', 'intermediate', 'final'); | |
| # We consider the actual updated timestamp of targets with all | |
| # recursive commands, even with -n. | |
| $makefile2 = &get_tmpfile; | |
| open(MAKEFILE, "> $makefile2"); | |
| print MAKEFILE <<'EOF'; | |
| .SUFFIXES: | |
| BAR = # nothing | |
| FOO = +$(BAR) | |
| a: b; echo > $@ | |
| b: c; $(FOO) | |
| EOF | |
| close(MAKEFILE); | |
| &utouch(-20, 'b'); | |
| &utouch(-10, 'a'); | |
| &touch('c'); | |
| # TEST 2 | |
| &run_make_with_options($makefile2, "", &get_logfile); | |
| $answer = "$make_name: 'a' is up to date.\n"; | |
| &compare_output($answer, &get_logfile(1)); | |
| # TEST 3 | |
| &run_make_with_options($makefile2, "-n", &get_logfile); | |
| $answer = "$make_name: 'a' is up to date.\n"; | |
| &compare_output($answer, &get_logfile(1)); | |
| # TEST 4 | |
| unlink(qw(a b)); | |
| &run_make_with_options($makefile2, "-t -n", &get_logfile); | |
| open(DASH_N_LOG, ">>" . &get_logfile(1)); | |
| print DASH_N_LOG "a exists but should not!\n" if -e 'a'; | |
| print DASH_N_LOG "b exists but should not!\n" if -e 'b'; | |
| close(DASH_N_LOG); | |
| &compare_output("touch b\ntouch a\n", &get_logfile(1)); | |
| # CLEANUP | |
| unlink(qw(a b c)); | |
| 1; |