| $description = "Test various types of escaping in makefiles."; |
| |
| $details = "Make sure that escaping of `:' works in target names."; |
| |
| open(MAKEFILE,"> $makefile"); |
| |
| print MAKEFILE '$(path)foo : ; @echo cp $^ $@ |
| '; |
| |
| close(MAKEFILE); |
| |
| |
| # TEST 1 |
| |
| &run_make_with_options($makefile, "", &get_logfile); |
| $answer = "cp foo\n"; |
| &compare_output($answer,&get_logfile(1)); |
| |
| # TEST 2: This one should fail, since the ":" is unquoted. |
| |
| &run_make_with_options($makefile, "path=p:", &get_logfile, 512); |
| $answer = "$makefile:1: *** target pattern contains no `%'. Stop.\n"; |
| &compare_output($answer,&get_logfile(1)); |
| |
| # TEST 3: This one should work, since we escape the ":". |
| |
| &run_make_with_options($makefile, "'path=p\\:'", &get_logfile, 0); |
| $answer = "cp p:foo\n"; |
| &compare_output($answer,&get_logfile(1)); |
| |
| # TEST 4: This one should fail, since the escape char is escaped. |
| |
| &run_make_with_options($makefile, "'path=p\\\\:'", &get_logfile, 512); |
| $answer = "$makefile:1: *** target pattern contains no `%'. Stop.\n"; |
| &compare_output($answer,&get_logfile(1)); |
| |
| # This tells the test driver that the perl test script executed properly. |
| 1; |