VirtualBox

source: kBuild/trunk/src/gmake/tests/scripts/features/export@ 285

最後變更 在這個檔案從285是 53,由 bird 提交於 21 年 前

Initial revision

  • 屬性 svn:eol-style 設為 native
檔案大小: 4.5 KB
 
1# -*-perl-*-
2$description = "Check GNU make export/unexport commands.";
3
4$details = "";
5
6# The test driver cleans out our environment for us so we don't have to worry
7# about that here.
8
9open(MAKEFILE,"> $makefile");
10
11# The Contents of the MAKEFILE ...
12
13print MAKEFILE <<'EOMAKE';
14
15FOO = foo
16BAR = bar
17BOZ = boz
18
19export BAZ = baz
20export BOZ
21
22BITZ = bitz
23BOTZ = botz
24
25export BITZ BOTZ
26unexport BOTZ
27
28ifdef EXPORT_ALL
29export
30endif
31
32ifdef UNEXPORT_ALL
33unexport
34endif
35
36ifdef EXPORT_ALL_PSEUDO
37.EXPORT_ALL_VARIABLES:
38endif
39
40all:
41 @echo "FOO=$(FOO) BAR=$(BAR) BAZ=$(BAZ) BOZ=$(BOZ) BITZ=$(BITZ) BOTZ=$(BOTZ)"
42 @echo "FOO=$$FOO BAR=$$BAR BAZ=$$BAZ BOZ=$$BOZ BITZ=$$BITZ BOTZ=$$BOTZ"
43
44EOMAKE
45
46close(MAKEFILE);
47
48# TEST 0: basics
49
50&run_make_with_options($makefile,"",&get_logfile,0);
51
52$answer = "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
53FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n";
54
55&compare_output($answer,&get_logfile(1));
56
57# TEST 1: make sure vars inherited from the parent are exported
58
59$ENV{FOO} = 1;
60
61&run_make_with_options($makefile,"",&get_logfile,0);
62
63$answer = "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
64FOO=foo BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n";
65
66&compare_output($answer,&get_logfile(1));
67
68delete $ENV{FOO};
69
70# TEST 2: global export. Explicit unexport takes precedence.
71
72&run_make_with_options($makefile,"EXPORT_ALL=1",&get_logfile,0);
73
74$answer = "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
75FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n";
76
77&compare_output($answer,&get_logfile(1));
78
79# TEST 3: global unexport. Explicit export takes precedence.
80
81&run_make_with_options($makefile,"UNEXPORT_ALL=1",&get_logfile,0);
82
83$answer = "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
84FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n";
85
86&compare_output($answer,&get_logfile(1));
87
88# TEST 4: both: in the above makefile the unexport comes last so that rules.
89
90&run_make_with_options($makefile,"EXPORT_ALL=1 UNEXPORT_ALL=1",&get_logfile,0);
91
92$answer = "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
93FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n";
94
95&compare_output($answer,&get_logfile(1));
96
97# TEST 5: test the pseudo target.
98
99&run_make_with_options($makefile,"EXPORT_ALL_PSEUDO=1",&get_logfile,0);
100
101$answer = "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
102FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n";
103
104&compare_output($answer,&get_logfile(1));
105
106
107# TEST 6: Test the expansion of variables inside export
108
109$makefile2 = &get_tmpfile;
110
111open(MAKEFILE, "> $makefile2");
112
113print MAKEFILE <<'EOF';
114
115foo = f-ok
116bar = b-ok
117
118FOO = foo
119F = f
120
121BAR = bar
122B = b
123
124export $(FOO)
125export $(B)ar
126
127all:
128 @echo foo=$(foo) bar=$(bar)
129 @echo foo=$$foo bar=$$bar
130
131EOF
132
133close(MAKEFILE);
134
135&run_make_with_options($makefile2,"",&get_logfile,0);
136$answer = "foo=f-ok bar=b-ok\nfoo=f-ok bar=b-ok\n";
137&compare_output($answer,&get_logfile(1));
138
139
140# TEST 7: Test the expansion of variables inside unexport
141
142$makefile3 = &get_tmpfile;
143
144open(MAKEFILE, "> $makefile3");
145
146print MAKEFILE <<'EOF';
147
148foo = f-ok
149bar = b-ok
150
151FOO = foo
152F = f
153
154BAR = bar
155B = b
156
157export foo bar
158
159unexport $(FOO)
160unexport $(B)ar
161
162all:
163 @echo foo=$(foo) bar=$(bar)
164 @echo foo=$$foo bar=$$bar
165
166EOF
167
168close(MAKEFILE);
169
170&run_make_with_options($makefile3,"",&get_logfile,0);
171$answer = "foo=f-ok bar=b-ok\nfoo= bar=\n";
172&compare_output($answer,&get_logfile(1));
173
174
175# TEST 7: Test exporting multiple variables on the same line
176
177$makefile4 = &get_tmpfile;
178
179open(MAKEFILE, "> $makefile4");
180
181print MAKEFILE <<'EOF';
182
183A = a
184B = b
185C = c
186D = d
187E = e
188F = f
189G = g
190H = h
191I = i
192J = j
193
194SOME = A B C
195
196export F G H I J
197
198export D E $(SOME)
199
200all: ; @echo A=$$A B=$$B C=$$C D=$$D E=$$E F=$$F G=$$G H=$$H I=$$I J=$$J
201EOF
202
203close(MAKEFILE);
204
205&run_make_with_options($makefile4,"",&get_logfile,0);
206$answer = "A=a B=b C=c D=d E=e F=f G=g H=h I=i J=j\n";
207&compare_output($answer,&get_logfile(1));
208
209
210# TEST 8: Test unexporting multiple variables on the same line
211
212$makefile5 = &get_tmpfile;
213
214open(MAKEFILE, "> $makefile5");
215
216print MAKEFILE <<'EOF';
217
218A = a
219B = b
220C = c
221D = d
222E = e
223F = f
224G = g
225H = h
226I = i
227J = j
228
229SOME = A B C
230
231unexport F G H I J
232
233unexport D E $(SOME)
234
235all: ; @echo A=$$A B=$$B C=$$C D=$$D E=$$E F=$$F G=$$G H=$$H I=$$I J=$$J
236EOF
237
238close(MAKEFILE);
239
240@ENV{qw(A B C D E F G H I J)} = qw(1 2 3 4 5 6 7 8 9 10);
241
242&run_make_with_options($makefile5,"",&get_logfile,0);
243$answer = "A= B= C= D= E= F= G= H= I= J=\n";
244&compare_output($answer,&get_logfile(1));
245
246delete @ENV{qw(A B C D E F G H I J)};
247
248
249# This tells the test driver that the perl test script executed properly.
2501;
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette