summaryrefslogtreecommitdiff
path: root/tests/scripts/functions/wildcard
blob: bcd84ad793a3ff40c7924422a455b95bea94a8b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#                                                                    -*-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;