#                                                                    -*-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$CMD_rmfile \$(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 = "$CMD_rmfile 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;
