| # -*-perl-*- | |
| $description = "The following test creates a makefile to test wildcard | |
| expansions and the ability to put a command on the same | |
| line as the target name separated by a semi-colon."; | |
| $details = "\ | |
| This test creates 4 files by the names of 1.example, | |
| two.example and 3.example. We execute three tests. The first | |
| executes the print1 target which tests the '*' wildcard by | |
| echoing all filenames by the name of '*.example'. The second | |
| test echo's all files which match '?.example' and | |
| [a-z0-9].example. Lastly we clean up all of the files using | |
| the '*' wildcard as in the first test"; | |
| open(MAKEFILE,"> $makefile"); | |
| # The Contents of the MAKEFILE ... | |
| print MAKEFILE <<EOM; | |
| .PHONY: print1 print2 clean | |
| print1: ;\@echo \$(sort \$(wildcard example.*)) | |
| print2: | |
| \t\@echo \$(sort \$(wildcard example.?)) | |
| \t\@echo \$(sort \$(wildcard example.[a-z0-9])) | |
| \t\@echo \$(sort \$(wildcard example.[!A-Za-z_\\!])) | |
| clean: | |
| \t$delete_command \$(sort \$(wildcard example.*)) | |
| EOM | |
| # END of Contents of MAKEFILE | |
| close(MAKEFILE); | |
| &touch("example.1"); | |
| &touch("example.two"); | |
| &touch("example.3"); | |
| &touch("example.for"); | |
| &touch("example._"); | |
| # TEST #1 | |
| # ------- | |
| $answer = "example.1 example.3 example._ example.for example.two\n"; | |
| &run_make_with_options($makefile,"print1",&get_logfile); | |
| &compare_output($answer,&get_logfile(1)); | |
| # TEST #2 | |
| # ------- | |
| $answer = "example.1 example.3 example._\n" | |
| ."example.1 example.3\n" | |
| ."example.1 example.3\n"; | |
| &run_make_with_options($makefile,"print2",&get_logfile); | |
| &compare_output($answer,&get_logfile(1)); | |
| # TEST #3 | |
| # ------- | |
| $answer = "$delete_command example.1 example.3 example._ example.for example.two"; | |
| if ($vos) | |
| { | |
| $answer .= " \n"; | |
| } | |
| else | |
| { | |
| $answer .= "\n"; | |
| } | |
| &run_make_with_options($makefile,"clean",&get_logfile); | |
| if ((-f "example.1")||(-f "example.two")||(-f "example.3")||(-f "example.for")) { | |
| $test_passed = 0; | |
| } | |
| &compare_output($answer,&get_logfile(1)); | |
| # TEST #4: Verify that failed wildcards don't return the pattern | |
| run_make_test(q! | |
| all: ; @echo $(wildcard xz--y*.7) | |
| !, | |
| '', "\n"); | |
| # TEST #5: wildcard used to verify file existence | |
| touch('xxx.yyy'); | |
| run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!, | |
| '', "file=xxx.yyy\n"); | |
| unlink('xxx.yyy'); | |
| run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!, | |
| '', "file=\n"); | |
| 1; |