envtest.t revision 181150
1171195Sscf#!/bin/sh 2171195Sscf# 3181150Sscf# Copyright (c) 2007-2008 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 181150 2008-08-02 02:34:35Z 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 84181150Sscfrun_test -c 3 -g FOO 85178430Sscfcheck_result "${NULL}" 86171195Sscf 87171195Sscfrun_test -g FOOBAR 88178430Sscfcheck_result "${NULL}" 89171195Sscf 90181150Sscfrun_test -c 3 -g FOOBAR 91178430Sscfcheck_result "${NULL}" 92171195Sscf 93171195Sscfrun_test -G 94178430Sscfcheck_result "${NULL}" 95171195Sscf 96171195Sscf 97181150Sscf# Clear environ. 98181150Sscfrun_test -c 1 -g FOO 99181150Sscfcheck_result "${NULL}" 100181150Sscf 101181150Sscfrun_test -c 2 -g FOO 102181150Sscfcheck_result "${NULL}" 103181150Sscf 104181150Sscfrun_test -c 3 -g FOO 105181150Sscfcheck_result "${NULL}" 106181150Sscf 107181150Sscfrun_test -c 4 -g FOO 108181150Sscfcheck_result "${NULL}" 109181150Sscf 110181150Sscf 111181150Sscf# Clear environ and verify values do not return after a set. 112181150Sscfrun_test -c 1 -g FOO -s FOO2 ${NEWBAR} 1 -g FOO -g FOO2 113181150Sscfcheck_result "${NULL} 0 0 ${NULL} ${NEWBAR}" 114181150Sscf 115181150Sscfrun_test -c 2 -g FOO -s FOO2 ${NEWBAR} 1 -g FOO -g FOO2 116181150Sscfcheck_result "${NULL} 0 0 ${NULL} ${NEWBAR}" 117181150Sscf 118181150Sscfrun_test -c 3 -g FOO -s FOO2 ${NEWBAR} 1 -g FOO -g FOO2 119181150Sscfcheck_result "${NULL} 0 0 ${NULL} ${NEWBAR}" 120181150Sscf 121181150Sscfrun_test -c 4 -g FOO -s FOO2 ${NEWBAR} 1 -g FOO -g FOO2 122181150Sscfcheck_result "${NULL} 0 0 ${NULL} ${NEWBAR}" 123181150Sscf 124181150Sscf 125171195Sscf# Sets. 126171195Sscfrun_test -s FOO ${NEWBAR} 0 -g FOO 127171195Sscfcheck_result "0 0 ${BAR}" 128171195Sscf 129171195Sscfrun_test -s FOO ${NEWBAR} 1 -g FOO 130171195Sscfcheck_result "0 0 ${NEWBAR}" 131171195Sscf 132181150Sscfrun_test -c 3 -s FOO ${NEWBAR} 0 -g FOO 133171195Sscfcheck_result "0 0 ${NEWBAR}" 134171195Sscf 135181150Sscfrun_test -c 3 -s FOO ${NEWBAR} 1 -g FOO 136171195Sscfcheck_result "0 0 ${NEWBAR}" 137171195Sscf 138171195Sscfrun_test -s "FOO=" ${NEWBAR} 1 -g FOO 139171195Sscfcheck_result "-1 22 ${BAR}" 140171195Sscf 141171195Sscfrun_test -s "=FOO" ${NEWBAR} 1 142171195Sscfcheck_result "-1 22" 143171195Sscf 144171195Sscfrun_test -s "=" ${NEWBAR} 1 145171195Sscfcheck_result "-1 22" 146171195Sscf 147171195Sscfrun_test -s "" ${NEWBAR} 1 148171195Sscfcheck_result "-1 22" 149171195Sscf 150171195Sscfrun_test -S ${NEWBAR} 1 151171195Sscfcheck_result "-1 22" 152171195Sscf 153171195Sscfrun_test -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1 -g FOO 154171195Sscfcheck_result "0 0 0 0 ${BAR}" 155171195Sscf 156181150Sscfrun_test -c 3 -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1 -g FOO 157171195Sscfcheck_result "0 0 0 0 ${BAR}" 158171195Sscf 159171195Sscfrun_test -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1 -s FOO ${NEWBAR} 1 -g FOO 160171195Sscfcheck_result "0 0 0 0 0 0 ${NEWBAR}" 161171195Sscf 162171195Sscfrun_test -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1 -s FOO ${NEWBAR} 1 -s FOO ${BAR} 1\ 163171195Sscf -g FOO 164171195Sscfcheck_result "0 0 0 0 0 0 0 0 ${BAR}" 165171195Sscf 166181150Sscfrun_test -c 3 -s FOO ${BAR} 1 -g FOO -c 3 -s FOO ${NEWBAR} 1 -g FOO 167171525Sscfcheck_result "0 0 ${BAR} 0 0 ${NEWBAR}" 168171195Sscf 169171525Sscf 170171195Sscf# Unsets. 171171195Sscfrun_test -u FOO -g FOO 172178430Sscfcheck_result "0 0 ${NULL}" 173171195Sscf 174181150Sscfrun_test -c 3 -u FOO -g FOO 175178430Sscfcheck_result "0 0 ${NULL}" 176171195Sscf 177171195Sscfrun_test -U 178171195Sscfcheck_result "-1 22" 179171195Sscf 180171195Sscfrun_test -u "" 181171195Sscfcheck_result "-1 22" 182171195Sscf 183171195Sscfrun_test -u "=${BAR}" 184171195Sscfcheck_result "-1 22" 185171195Sscf 186181150Sscfrun_test -c 3 -s FOO ${NEWBAR} 1 -g FOO -u FOO -g FOO 187178430Sscfcheck_result "0 0 ${NEWBAR} 0 0 ${NULL}" 188171195Sscf 189181150Sscfrun_test -c 3 -u FOO -s FOO ${BAR} 1 -g FOO -u FOO -g FOO -c 3 -u FOO\ 190171525Sscf -s FOO ${NEWBAR} 1 -g FOO 191178430Sscfcheck_result "0 0 0 0 ${BAR} 0 0 ${NULL} 0 0 0 0 ${NEWBAR}" 192171195Sscf 193171525Sscf 194171195Sscf# Puts. 195171195Sscfrun_test -p FOO=${NEWBAR} -g FOO 196171195Sscfcheck_result "0 0 ${NEWBAR}" 197171195Sscf 198181150Sscfrun_test -c 3 -p FOO=${NEWBAR} -g FOO 199171195Sscfcheck_result "0 0 ${NEWBAR}" 200171195Sscf 201171195Sscfrun_test -p FOO -g FOO 202171195Sscfcheck_result "-1 22 ${BAR}" 203171195Sscf 204171195Sscfrun_test -p FOO=${BAR} -p FOO=${NEWBAR} -g FOO 205171195Sscfcheck_result "0 0 0 0 ${NEWBAR}" 206171195Sscf 207171195Sscfrun_test -p FOO=${BAR} -s FOO ${NEWBAR} 1 -g FOO 208171195Sscfcheck_result "0 0 0 0 ${NEWBAR}" 209171195Sscf 210171195Sscfrun_test -s FOO ${NEWBAR} 1 -p FOO=${BAR} -g FOO 211171195Sscfcheck_result "0 0 0 0 ${BAR}" 212171195Sscf 213171195Sscfrun_test -p FOO=${BAR} -u FOO 214171195Sscfcheck_result "0 0 0 0" 215171195Sscf 216171195Sscfrun_test -p FOO=${BAR} -s FOO ${NEWBAR} 1 -u FOO 217171195Sscfcheck_result "0 0 0 0 0 0" 218171195Sscf 219171195Sscfrun_test -s FOO ${NEWBAR} 1 -p FOO=${BAR} -u FOO 220171195Sscfcheck_result "0 0 0 0 0 0" 221171525Sscf 222181150Sscfrun_test -s FOO ${NEWBAR} 1 -p FOO=${BAR} -c 3 -g FOO -p FOO=${NEWBAR} -g FOO 223178430Sscfcheck_result "0 0 0 0 ${NULL} 0 0 ${NEWBAR}" 224171525Sscf 225181150Sscfrun_test -c 3 -p FOO=${BAR} -g FOO -c 3 -p FOO=${NEWBAR} -g FOO 226171525Sscfcheck_result "0 0 ${BAR} 0 0 ${NEWBAR}" 227171525Sscf 228171525Sscf 229171525Sscf# environ replacements. 230171525Sscfrun_test -r -g FOO -s FOO ${BAR} 1 -g FOO -u FOO -g FOO 231178430Sscfcheck_result "${BAR} 0 0 ${BAR} 0 0 ${NULL}" 232171525Sscf 233171525Sscfrun_test -r -g FOO -u FOO -g FOO -s FOO ${BAR} 1 -g FOO 234178430Sscfcheck_result "${BAR} 0 0 ${NULL} 0 0 ${BAR}" 235