envtest.t revision 178430
1171195Sscf#!/bin/sh
2171195Sscf#
3171195Sscf# Copyright (c) 2007 Sean C. Farley <scf@FreeBSD.org>
4171195Sscf# All rights reserved.
5171195Sscf# 
6171195Sscf# Redistribution and use in source and binary forms, with or without
7171195Sscf# modification, are permitted provided that the following conditions
8171195Sscf# are met:
9171195Sscf# 1. Redistributions of source code must retain the above copyright
10171195Sscf#    notice, this list of conditions and the following disclaimer,
11171195Sscf#    without modification, immediately at the beginning of the file.
12171195Sscf# 2. Redistributions in binary form must reproduce the above copyright
13171195Sscf#    notice, this list of conditions and the following disclaimer in the
14171195Sscf#    documentation and/or other materials provided with the distribution.
15171195Sscf# 
16171195Sscf# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17171195Sscf# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18171195Sscf# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19171195Sscf# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20171195Sscf# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21171195Sscf# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22171195Sscf# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23171195Sscf# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24171195Sscf# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25171195Sscf# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26171195Sscf#
27171195Sscf# $FreeBSD: head/tools/regression/environ/envtest.t 178430 2008-04-23 00:45:48Z scf $
28171195Sscf
29171195Sscf
30171195Sscf# Initialization.
31171195Sscftestndx=0
32171195Sscf
33171195Sscf
34171195Sscf# Testing function.
35171195Sscfrun_test()
36171195Sscf{
37171195Sscf	lasttest="${@}"
38171195Sscf	result=`./envctl -t "${@}"`
39171195Sscf
40171195Sscf	if [ ${?} -ne 0 ]
41171195Sscf	then
42171195Sscf		echo "Test program failed" >&2
43171195Sscf		exit 1
44171195Sscf	fi
45171195Sscf
46171195Sscf	return
47171195Sscf}
48171195Sscf
49171195Sscf
50171195Sscf# Perform test on results.
51171195Sscfcheck_result()
52171195Sscf{
53171195Sscf	testndx=$((testndx + 1))
54171195Sscf
55171195Sscf	echo "${result}" | sed 's/[ \t]*$//' | grep -q "^${@}$"
56171195Sscf	if [ ${?} -eq 0 ]
57171195Sscf	then
58171195Sscf		echo "ok ${testndx}"
59171195Sscf	else
60171195Sscf		echo "not ok ${testndx} - '${lasttest}'"
61171195Sscf	fi
62171195Sscf
63171195Sscf	return
64171195Sscf}
65171195Sscf
66171195Sscf
67171195Sscf#
68171195Sscf# Regression tests
69171195Sscf#
70171195Sscf
71178430Sscf# How NULL will be returned by program.
72178430Sscfreadonly NULL="\*NULL\*"
73178430Sscf
74171195Sscf# Setup environment for tests.
75171195Sscfreadonly BAR="bar"
76171195Sscfreadonly NEWBAR="newbar"
77171195Sscfexport FOO=${BAR}
78171195Sscf
79171195Sscf
80171195Sscf# Gets from environ.
81171195Sscfrun_test -g FOO
82171195Sscfcheck_result "${FOO}"
83171195Sscf
84171195Sscfrun_test -c -g FOO
85178430Sscfcheck_result "${NULL}"
86171195Sscf
87171195Sscfrun_test -g FOOBAR
88178430Sscfcheck_result "${NULL}"
89171195Sscf
90171195Sscfrun_test -c -g FOOBAR
91178430Sscfcheck_result "${NULL}"
92171195Sscf
93171195Sscfrun_test -G
94178430Sscfcheck_result "${NULL}"
95171195Sscf
96171195Sscf
97171195Sscf# Sets.
98171195Sscfrun_test -s FOO ${NEWBAR} 0 -g FOO
99171195Sscfcheck_result "0 0 ${BAR}"
100171195Sscf
101171195Sscfrun_test -s FOO ${NEWBAR} 1 -g FOO
102171195Sscfcheck_result "0 0 ${NEWBAR}"
103171195Sscf
104171195Sscfrun_test -c -s FOO ${NEWBAR} 0 -g FOO
105171195Sscfcheck_result "0 0 ${NEWBAR}"
106171195Sscf
107171195Sscfrun_test -c -s FOO ${NEWBAR} 1 -g FOO
108171195Sscfcheck_result "0 0 ${NEWBAR}"
109171195Sscf
110171195Sscfrun_test -s "FOO=" ${NEWBAR} 1 -g FOO
111171195Sscfcheck_result "-1 22 ${BAR}"
112171195Sscf
113171195Sscfrun_test -s "=FOO" ${NEWBAR} 1
114171195Sscfcheck_result "-1 22"
115171195Sscf
116171195Sscfrun_test -s "=" ${NEWBAR} 1
117171195Sscfcheck_result "-1 22"
118171195Sscf
119171195Sscfrun_test -s "" ${NEWBAR} 1
120171195Sscfcheck_result "-1 22"
121171195Sscf
122171195Sscfrun_test -S ${NEWBAR} 1
123171195Sscfcheck_result "-1 22"
124171195Sscf
125171195Sscfrun_test -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1 -g FOO
126171195Sscfcheck_result "0 0 0 0 ${BAR}"
127171195Sscf
128171195Sscfrun_test -c -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1 -g FOO
129171195Sscfcheck_result "0 0 0 0 ${BAR}"
130171195Sscf
131171195Sscfrun_test -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1 -s FOO ${NEWBAR} 1 -g FOO
132171195Sscfcheck_result "0 0 0 0 0 0 ${NEWBAR}"
133171195Sscf
134171195Sscfrun_test -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1 -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1\
135171195Sscf	-g FOO
136171195Sscfcheck_result "0 0 0 0 0 0 0 0 ${BAR}"
137171195Sscf
138171525Sscfrun_test -c -s FOO ${BAR} 1 -g FOO -c -s FOO ${NEWBAR} 1 -g FOO
139171525Sscfcheck_result "0 0 ${BAR} 0 0 ${NEWBAR}"
140171195Sscf
141171525Sscf
142171195Sscf# Unsets.
143171195Sscfrun_test -u FOO -g FOO
144178430Sscfcheck_result "0 0 ${NULL}"
145171195Sscf
146171195Sscfrun_test -c -u FOO -g FOO
147178430Sscfcheck_result "0 0 ${NULL}"
148171195Sscf
149171195Sscfrun_test -U
150171195Sscfcheck_result "-1 22"
151171195Sscf
152171195Sscfrun_test -u ""
153171195Sscfcheck_result "-1 22"
154171195Sscf
155171195Sscfrun_test -u "=${BAR}"
156171195Sscfcheck_result "-1 22"
157171195Sscf
158171195Sscfrun_test -c -s FOO ${NEWBAR} 1 -g FOO -u FOO -g FOO
159178430Sscfcheck_result "0 0 ${NEWBAR} 0 0 ${NULL}"
160171195Sscf
161171525Sscfrun_test -c -u FOO -s FOO ${BAR} 1 -g FOO -u FOO -g FOO -c -u FOO\
162171525Sscf	-s FOO ${NEWBAR} 1 -g FOO
163178430Sscfcheck_result "0 0 0 0 ${BAR} 0 0 ${NULL} 0 0 0 0 ${NEWBAR}"
164171195Sscf
165171525Sscf
166171195Sscf# Puts.
167171195Sscfrun_test -p FOO=${NEWBAR} -g FOO
168171195Sscfcheck_result "0 0 ${NEWBAR}"
169171195Sscf
170171195Sscfrun_test -c -p FOO=${NEWBAR} -g FOO
171171195Sscfcheck_result "0 0 ${NEWBAR}"
172171195Sscf
173171195Sscfrun_test -p FOO -g FOO
174171195Sscfcheck_result "-1 22 ${BAR}"
175171195Sscf
176171195Sscfrun_test -p FOO=${BAR} -p FOO=${NEWBAR} -g FOO
177171195Sscfcheck_result "0 0 0 0 ${NEWBAR}"
178171195Sscf
179171195Sscfrun_test -p FOO=${BAR} -s FOO ${NEWBAR} 1 -g FOO
180171195Sscfcheck_result "0 0 0 0 ${NEWBAR}"
181171195Sscf
182171195Sscfrun_test -s FOO ${NEWBAR} 1 -p FOO=${BAR} -g FOO
183171195Sscfcheck_result "0 0 0 0 ${BAR}"
184171195Sscf
185171195Sscfrun_test -p FOO=${BAR} -u FOO
186171195Sscfcheck_result "0 0 0 0"
187171195Sscf
188171195Sscfrun_test -p FOO=${BAR} -s FOO ${NEWBAR} 1 -u FOO
189171195Sscfcheck_result "0 0 0 0 0 0"
190171195Sscf
191171195Sscfrun_test -s FOO ${NEWBAR} 1 -p FOO=${BAR} -u FOO
192171195Sscfcheck_result "0 0 0 0 0 0"
193171525Sscf
194171525Sscfrun_test -s FOO ${NEWBAR} 1 -p FOO=${BAR} -c -g FOO -p FOO=${NEWBAR} -g FOO
195178430Sscfcheck_result "0 0 0 0 ${NULL} 0 0 ${NEWBAR}"
196171525Sscf
197171525Sscfrun_test -c -p FOO=${BAR} -g FOO -c -p FOO=${NEWBAR} -g FOO
198171525Sscfcheck_result "0 0 ${BAR} 0 0 ${NEWBAR}"
199171525Sscf
200171525Sscf
201171525Sscf# environ replacements.
202171525Sscfrun_test -r -g FOO -s FOO ${BAR} 1 -g FOO -u FOO -g FOO
203178430Sscfcheck_result "${BAR} 0 0 ${BAR} 0 0 ${NULL}"
204171525Sscf
205171525Sscfrun_test -r -g FOO -u FOO -g FOO -s FOO ${BAR} 1 -g FOO
206178430Sscfcheck_result "${BAR} 0 0 ${NULL} 0 0 ${BAR}"
207