]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - tools/regression/usr.bin/env/regress-env.rgdata
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / tools / regression / usr.bin / env / regress-env.rgdata
1 #-
2 # Copyright (c) 2005  - Garance Alistair Drosehn <gad@FreeBSD.org>.
3 # All rights reserved.
4 #
5 #  Redistribution and use in source and binary forms, with or without
6 #  modification, are permitted provided that the following conditions
7 #  are met:
8 #  1. Redistributions of source code must retain the above copyright
9 #     notice, this list of conditions and the following disclaimer.
10 #  2. Redistributions in binary form must reproduce the above copyright
11 #     notice, this list of conditions and the following disclaimer in the
12 #     documentation and/or other materials provided with the distribution.
13 #
14 #  THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 #  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 #  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 #  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 #  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 #  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 #  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 #  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 #  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 #  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 #  SUCH DAMAGE.
25 #
26 # $FreeBSD$
27 #
28
29 testpgm=/usr/bin/env
30 gblenv=PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
31 gblenv=TESTVAR=Global-TV-Value
32 gblenv=OUTSIDEVAR=OutsideValue
33
34 #  These first two tests are testing how well the regression-script itself is
35 #  handling environment-variables, as much as testing the `env' program.
36 [test]
37    sb_args:/bin/sh
38    setenv:TESTVAR=a1a
39    script:/bin/echo A-${TESTVAR}-Z
40    stdout:A-a1a-Z
41 [run]
42 [test]
43    sb_args:-S /bin/sh
44    script:/bin/echo A-${TESTVAR}-Z
45    stdout:A-Global-TV-Value-Z
46 [run]
47
48 [test]
49    sb_args:-S TESTVAR=bb22bb /bin/sh
50    script:/bin/echo A-${TESTVAR}-Z
51    stdout:A-bb22bb-Z
52 [run]
53 [test]
54    sb_args:-S\_TESTVAR=ab22ab\_/bin/sh
55    script:/bin/echo A-${TESTVAR}-Z
56    stdout:A-ab22ab-Z
57 [run]
58 [test]
59    sb_args:-S\_TESTVAR="abc\_33\_abc"\_/bin/sh
60    script:/bin/echo A-${TESTVAR}-Z
61    stdout:A-abc 33 abc-Z
62 [run]
63
64 #   First we see that 'sh' can not be found in /usr/sbin, and then
65 #   we show that it can be found without changing PATH by using -P
66 #   And then show that it can be NOT found by using -P...
67 [test]
68    sb_args:-S sh
69    setenv:PATH=/usr/sbin
70    script:/bin/echo A-${PATH}-Z
71    $?:127
72    stderr:[%-testpgm.basename-%]: sh: No such file or directory
73 [run]
74 [test]
75    sb_args:-S -P/bin sh
76    setenv:PATH=/usr/sbin
77    script:/bin/echo A-${PATH}-Z
78    stdout:A-/usr/sbin-Z
79 [run]
80 [test]
81    sb_args:-S -P/sbin:/usr/sbin sh
82    script:/bin/echo A-${PATH}-Z
83    $?:127
84    stderr:[%-testpgm.basename-%]: sh: No such file or directory
85 [run]
86
87 #  Hmm.  I wonder if -P should always set an 'ENV_PATH' variable?
88 [test]
89    sb_args:-S -P/bin:/usr/bin:${PATH} ENV_PATH=/bin:/usr/bin:${PATH} sh
90    setenv:PATH=/usr/sbin
91    script:/bin/echo A-${PATH}-Z
92    script:/bin/echo B-${ENV_PATH}-Y
93    stdout:A-/usr/sbin-Z
94    stdout:B-/bin:/usr/bin:/usr/sbin-Y
95 [run]
96
97 #   Show that the comment-characters are working, both for where they are
98 #   recognized and where they are ignored.
99 [test]
100    sb_args:-STESTVAR="abc44abc" /bin/sh # This is some arbitrary text
101    user_args:us11er us22er
102    script:/bin/echo A-${TESTVAR}-Z B-$1-Y
103    stdout:A-abc44abc-Z B-us11er-Y
104 [run]
105 [test]
106    sb_args:-STESTVAR="abc55abc" /bin/sh \c This is some arbitrary text
107    user_args:us11er us22er
108    script:/bin/echo A-${TESTVAR}-Z B-$1-Y
109    stdout:A-abc55abc-Z B-us11er-Y
110 [run]
111 [test]
112    sb_args:-STESTVAR=abc#44#abc /bin/sh
113    user_args:us11er us22er
114    script:/bin/echo A-${TESTVAR}-Z B-$1-Y
115    stdout:A-abc#44#abc-Z B-us11er-Y
116 [run]
117 [test]
118    sb_args:-STESTVAR='abc\c55\cabc' /bin/sh
119    user_args:us11er us22er
120    script:/bin/echo A-${TESTVAR}-Z B-$1-Y
121    stdout:A-abc\c55\cabc-Z B-us11er-Y
122 [run]
123
124 #   Test various aspects of quoted strings
125 [test]
126    sb_args:-STESTVAR="abc'def" /bin/sh
127    script:/bin/echo A-${TESTVAR}-Z
128    stdout:A-abc'def-Z
129 [run]
130 [test]
131    sb_args:-STESTVAR='abc"def' /bin/sh
132    script:/bin/echo A-${TESTVAR}-Z
133    stdout:A-abc"def-Z
134 [run]
135 [test]
136    sb_args:-STESTVAR='ab\'cd\'ef' /bin/sh
137    script:/bin/echo A-${TESTVAR}-Z
138    stdout:A-ab'cd'ef-Z
139 [run]
140 [test]
141    sb_args:-STESTVAR='abc\"def\'ghi' /bin/sh
142    script:/bin/echo A-${TESTVAR}-Z
143    stdout:A-abc\"def'ghi-Z
144 [run]
145 [test]
146    sb_args:-STESTVAR='abc''def''ghi' /bin/sh
147    script:/bin/echo A-${TESTVAR}-Z
148    stdout:A-abcdefghi-Z
149 [run]
150 [test]
151    sb_args:-STESTVAR='abc\ndef\nghi' /bin/sh
152    script:/bin/echo "A-${TESTVAR}-Z"
153    stdout:A-abc\ndef\nghi-Z
154 [run]
155 [test]
156    sb_args:-STESTVAR="abc\ndef\nghi" /bin/sh
157    script:/bin/echo "A-${TESTVAR}-Z"
158    stdout:A-abc
159    stdout:def
160    stdout:ghi-Z
161 [run]
162 [test]
163    sb_args:-STESTVAR=""\_OTHERVAR=""\_/bin/sh
164    script:/bin/echo A-${TESTVAR}-M-${OTHERVAR}-Z
165    stdout:A--M--Z
166 [run]
167 [test]
168    sb_args:-STESTVAR=no-term-"-dq... /bin/sh
169    script:/bin/echo "A-${TESTVAR}-Z"
170    $?:1
171    stderr:[%-testpgm.basename-%]: No terminating quote for string: TESTVAR=no-term-"-dq... /bin/sh
172 [run]
173 [test]
174    sb_args:-STESTVAR=no-term-'-sq... /bin/sh
175    script:/bin/echo "A-${TESTVAR}-Z"
176    $?:1
177    stderr:[%-testpgm.basename-%]: No terminating quote for string: TESTVAR=no-term-'-sq... /bin/sh
178 [run]
179
180 # Some tests of variable-substitution.
181 [test]
182    sb_args:-S TESTVAR=${TEST7} /bin/sh
183    setenv:TEST7=a23456a
184    script:/bin/echo "A-${TESTVAR}-Z"
185    stdout:A-a23456a-Z
186 [run]
187 [test]
188    sb_args:-S TESTVAR=${TEST8} /bin/sh
189    setenv:TEST8=b234567b
190    script:/bin/echo "A-${TESTVAR}-Z"
191    stdout:A-b234567b-Z
192 [run]
193 [test]
194    sb_args:-S TESTVAR=${TEST9} /bin/sh
195    setenv:TEST9=c2345678c
196    script:/bin/echo "A-${TESTVAR}-Z"
197    stdout:A-c2345678c-Z
198 [run]
199 [test]
200    sb_args:-S TESTVAR=${TEST8}+${TEST9}+${TEST10} /bin/sh
201    setenv:TEST8=a234567z
202    setenv:TEST9=a2345678z
203    setenv:TEST10=a23456789z
204    script:/bin/echo "A-${TESTVAR}-Z"
205    stdout:A-a234567z+a2345678z+a23456789z-Z
206 [run]
207 [test]
208    sb_args:-S TESTVAR=$* /bin/sh
209    script:/bin/echo "A-${TESTVAR}-Z"
210    $?:1
211    stderr:[%-testpgm.basename-%]: Only ${VARNAME} expansion is supported, error at: $* /bin/sh
212 [run]
213 [test]
214    sb_args:-S TESTVAR=/usr/bin:$PATH /bin/sh
215    script:/bin/echo "A-${TESTVAR}-Z"
216    $?:1
217    stderr:[%-testpgm.basename-%]: Only ${VARNAME} expansion is supported, error at: $PATH /bin/sh
218 [run]
219
220 #  For a short time `env' was changed to recognize 'something=value' as a
221 #  valid utility name if 'something' begins with a '/'.  However, that was
222 #  a bad idea, since variable-names with a '/' -- while rare -- are still
223 #  more blessed by standards than a filename with an '=' in it.  So, this
224 #  test goes back to expecting an error...
225 [test]
226    symlink:/bin/echo /tmp/envtest=echo
227    sb_args:-S/tmp/envtest=echo false
228    $?:1
229 [run]
230
231 # Show interactions between -i (clear environment), and ${VAR} substitution,
232 # and that -i will clear the environment at the right point in processing...
233 [test]
234    sb_args:-iS PATH=/bin:/usr/bin:/Not WASPATH=${PATH} WASOUT=${OUTSIDEVAR} TESTVAR=SbValue WASTEST=${TESTVAR} /bin/sh
235    script:/bin/echo "=== set ==="
236    script:# drop some environment variables that 'sh' itself sets, and
237    script:# then have 'set' print out all remaining environment variables.
238    script:# (can't unset OPTIND, so we use grep to get rid of that)
239    script:unset -v IFS PS1 PS2 PPID
240    script:set | grep -v '^OPTIND=' | sort
241    stdout:=== set ===
242    stdout:PATH=/bin:/usr/bin:/Not
243    stdout:TESTVAR=SbValue
244    stdout:WASOUT=OutsideValue
245    stdout:WASPATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
246    stdout:WASTEST=Global-TV-Value
247 [run]
248
249 # Had a bug with ${VAR} expansion if the character before the $ was
250 # one of the argument-separator characters.  So the first of the
251 # following worked, but the second one failed:
252 [test]
253    sb_args:-Secho Testv:${TESTV} Scriptname:
254    setenv:TESTV=ab/ba
255    stdout:Testv:ab/ba Scriptname: [%-script.pathname-%]
256 [run]
257 [test]
258    sb_args:-Secho testV: ${TESTV} scriptname:
259    setenv:TESTV=cd/dc
260    stdout:testV: cd/dc scriptname: [%-script.pathname-%]
261 [run]
262
263 #  A "nothing variable" inside a quoted string should produce a zero-length
264 #  argument, but if it's outside of quotes then it should result in, well,
265 #  nothing.  Note the tricks we play with [%-script.pathname-%] so that we
266 #  can supply parameters *to* the script, even though the kernel is always
267 #  going to stick the script name on as ARG[2] when invoking `env'.
268 [test]
269    sb_args:-S/bin/sh [%-script.pathname-%] userDQ: "" SQ: '' scriptname:
270    setenv:TNADA=
271    script:printf "list_args.sh with \$# = $#\n"
272    script:# Process all parameters.
273    script:N=0
274    script:while test $# != 0 ; do
275    script:    N=$(($N+1))
276    script:    printf "....\$$N = [%3d] '$1'\n" ${#1}
277    script:    shift
278    script:done
279    stdout:list_args.sh with $# = 6
280    stdout:....$1 = [  7] 'userDQ:'
281    stdout:....$2 = [  0] ''
282    stdout:....$3 = [  3] 'SQ:'
283    stdout:....$4 = [  0] ''
284    stdout:....$5 = [ 11] 'scriptname:'
285    stdout:....$6 = [ 16] '/tmp/env-regress'
286 [run]
287 [test]
288    sb_args:-S/bin/sh [%-script.pathname-%] userB "${TNADA}" scriptname:
289    setenv:TNADA=
290    script:printf "list_args.sh with \$# = $#\n"
291    script:# Process all parameters.
292    script:N=0
293    script:while test $# != 0 ; do
294    script:    N=$(($N+1))
295    script:    printf "....\$$N = [%3d] '$1'\n" ${#1}
296    script:    shift
297    script:done
298    stdout:list_args.sh with $# = 4
299    stdout:....$1 = [  5] 'userB'
300    stdout:....$2 = [  0] ''
301    stdout:....$3 = [ 11] 'scriptname:'
302    stdout:....$4 = [ 16] '/tmp/env-regress'
303 [run]
304 [test]
305    sb_args:-S/bin/sh [%-script.pathname-%] userA ${TNADA} scriptname:
306    setenv:TNADA=
307    script:printf "list_args.sh with \$# = $#\n"
308    script:# Process all parameters.
309    script:N=0
310    script:while test $# != 0 ; do
311    script:    N=$(($N+1))
312    script:    printf "....\$$N = [%3d] '$1'\n" ${#1}
313    script:    shift
314    script:done
315    stdout:list_args.sh with $# = 3
316    stdout:....$1 = [  5] 'userA'
317    stdout:....$2 = [ 11] 'scriptname:'
318    stdout:....$3 = [ 16] '[%-script.pathname-%]'
319 [run]
320 [test]
321    sb_args:-S/bin/sh [%-script.pathname-%] ${A} ${NB} ${C} ${ND} ${NE} ${F} S:
322    setenv:A=A_ThisisAlongstring_A1
323    setenv:NB=
324    setenv:C=C_ThisisAlongstring_C1
325    setenv:ND=
326    setenv:NE=
327    setenv:F=F_ThisisAlongstring_F1
328    script:printf "list_args.sh with \$# = $#\n"
329    script:# Process all parameters.
330    script:N=0
331    script:while test $# != 0 ; do
332    script:    N=$(($N+1))
333    script:    printf "....\$$N = [%3d] '$1'\n" ${#1}
334    script:    shift
335    script:done
336    stdout:list_args.sh with $# = 5
337    stdout:....$1 = [ 22] 'A_ThisisAlongstring_A1'
338    stdout:....$2 = [ 22] 'C_ThisisAlongstring_C1'
339    stdout:....$3 = [ 22] 'F_ThisisAlongstring_F1'
340    stdout:....$4 = [  2] 'S:'
341    stdout:....$5 = [ 16] '/tmp/env-regress'
342 [run]
343 [test]
344    sb_args:-S/bin/sh [%-script.pathname-%] ${A} ${NB} "${NB}" ${NB} ${C} "${ND}" ${NE} ${F} S:
345    setenv:A=A_ThisisAlongstring_A1
346    setenv:NB=
347    setenv:C=C_ThisisAlongstring_C1
348    setenv:ND=
349    setenv:NE=
350    setenv:F=F_ThisisAlongstring_F1
351    script:printf "list_args.sh with \$# = $#\n"
352    script:# Process all parameters.
353    script:N=0
354    script:while test $# != 0 ; do
355    script:    N=$(($N+1))
356    script:    printf "....\$$N = [%3d] '$1'\n" ${#1}
357    script:    shift
358    script:done
359    stdout:list_args.sh with $# = 7
360    stdout:....$1 = [ 22] 'A_ThisisAlongstring_A1'
361    stdout:....$2 = [  0] ''
362    stdout:....$3 = [ 22] 'C_ThisisAlongstring_C1'
363    stdout:....$4 = [  0] ''
364    stdout:....$5 = [ 22] 'F_ThisisAlongstring_F1'
365    stdout:....$6 = [  2] 'S:'
366    stdout:....$7 = [ 16] '/tmp/env-regress'
367 [run]
368
369 [test]
370    sb_args:-S/bin/echo ${A} ${B} ${C} ${D} ScriptName:
371    setenv:A=A_ThisisAlongstring_A1
372    setenv:B=B_ThisisAlongstring_B1
373    setenv:C=C_ThisisAlongstring_C1
374    setenv:D=D_ThisisAlongstring_D1
375    stdout:A_ThisisAlongstring_A1 B_ThisisAlongstring_B1 C_ThisisAlongstring_C1 D_ThisisAlongstring_D1 ScriptName: [%-script.pathname-%]
376 [run]
377 [test]
378    sb_args:-S/bin/echo ${A} "${B}" ${C} "${D}" ScriptName:
379    setenv:A=A_ThisisAlongstring_A1
380    setenv:B=B_ThisisAlongstring_B1
381    setenv:C=C_ThisisAlongstring_C1
382    setenv:D=D_ThisisAlongstring_D1
383    stdout:A_ThisisAlongstring_A1 B_ThisisAlongstring_B1 C_ThisisAlongstring_C1 D_ThisisAlongstring_D1 ScriptName: [%-script.pathname-%]
384 [run]