envtest.t revision 178430
1171195Sscf#!/bin/sh 2171195Sscf# 3181150Sscf# 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 84181150Sscfrun_test -c -g FOO 85178430Sscfcheck_result "${NULL}" 86171195Sscf 87171195Sscfrun_test -g FOOBAR 88178430Sscfcheck_result "${NULL}" 89171195Sscf 90181150Sscfrun_test -c -g FOOBAR 91178430Sscfcheck_result "${NULL}" 92171195Sscf 93171195Sscfrun_test -G 94178430Sscfcheck_result "${NULL}" 95171195Sscf 96171195Sscf 97181150Sscf# Sets. 98181150Sscfrun_test -s FOO ${NEWBAR} 0 -g FOO 99181150Sscfcheck_result "0 0 ${BAR}" 100181150Sscf 101181150Sscfrun_test -s FOO ${NEWBAR} 1 -g FOO 102181150Sscfcheck_result "0 0 ${NEWBAR}" 103181150Sscf 104181150Sscfrun_test -c -s FOO ${NEWBAR} 0 -g FOO 105181150Sscfcheck_result "0 0 ${NEWBAR}" 106181150Sscf 107181150Sscfrun_test -c -s FOO ${NEWBAR} 1 -g FOO 108181150Sscfcheck_result "0 0 ${NEWBAR}" 109181150Sscf 110181150Sscfrun_test -s "FOO=" ${NEWBAR} 1 -g FOO 111181150Sscfcheck_result "-1 22 ${BAR}" 112181150Sscf 113181150Sscfrun_test -s "=FOO" ${NEWBAR} 1 114181150Sscfcheck_result "-1 22" 115181150Sscf 116181150Sscfrun_test -s "=" ${NEWBAR} 1 117181150Sscfcheck_result "-1 22" 118181150Sscf 119181150Sscfrun_test -s "" ${NEWBAR} 1 120181150Sscfcheck_result "-1 22" 121181150Sscf 122181150Sscfrun_test -S ${NEWBAR} 1 123181150Sscfcheck_result "-1 22" 124181150Sscf 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 132181150Sscfcheck_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\ 135181150Sscf -g FOO 136171195Sscfcheck_result "0 0 0 0 0 0 0 0 ${BAR}" 137171195Sscf 138171195Sscfrun_test -c -s FOO ${BAR} 1 -g FOO -c -s FOO ${NEWBAR} 1 -g FOO 139171195Sscfcheck_result "0 0 ${BAR} 0 0 ${NEWBAR}" 140171195Sscf 141171195Sscf 142171195Sscf# Unsets. 143171195Sscfrun_test -u FOO -g FOO 144171195Sscfcheck_result "0 0 ${NULL}" 145171195Sscf 146171195Sscfrun_test -c -u FOO -g FOO 147171195Sscfcheck_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}" 156181150Sscfcheck_result "-1 22" 157171195Sscf 158171195Sscfrun_test -c -s FOO ${NEWBAR} 1 -g FOO -u FOO -g FOO 159171195Sscfcheck_result "0 0 ${NEWBAR} 0 0 ${NULL}" 160171195Sscf 161171195Sscfrun_test -c -u FOO -s FOO ${BAR} 1 -g FOO -u FOO -g FOO -c -u FOO\ 162171195Sscf -s FOO ${NEWBAR} 1 -g FOO 163171195Sscfcheck_result "0 0 0 0 ${BAR} 0 0 ${NULL} 0 0 0 0 ${NEWBAR}" 164171195Sscf 165171195Sscf 166181150Sscf# Puts. 167171525Sscfrun_test -p FOO=${NEWBAR} -g FOO 168171195Sscfcheck_result "0 0 ${NEWBAR}" 169171525Sscf 170171195Sscfrun_test -c -p FOO=${NEWBAR} -g FOO 171171195Sscfcheck_result "0 0 ${NEWBAR}" 172178430Sscf 173171195Sscfrun_test -p FOO -g FOO 174181150Sscfcheck_result "-1 22 ${BAR}" 175178430Sscf 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 186181150Sscfcheck_result "0 0 0 0" 187178430Sscf 188171195Sscfrun_test -p FOO=${BAR} -s FOO ${NEWBAR} 1 -u FOO 189181150Sscfcheck_result "0 0 0 0 0 0" 190171525Sscf 191178430Sscfrun_test -s FOO ${NEWBAR} 1 -p FOO=${BAR} -u FOO 192171195Sscfcheck_result "0 0 0 0 0 0" 193171525Sscf 194171195Sscfrun_test -s FOO ${NEWBAR} 1 -p FOO=${BAR} -c -g FOO -p FOO=${NEWBAR} -g FOO 195171195Sscfcheck_result "0 0 0 0 ${NULL} 0 0 ${NEWBAR}" 196171195Sscf 197171195Sscfrun_test -c -p FOO=${BAR} -g FOO -c -p FOO=${NEWBAR} -g FOO 198181150Sscfcheck_result "0 0 ${BAR} 0 0 ${NEWBAR}" 199171195Sscf 200171195Sscf 201171195Sscf# environ replacements. 202171195Sscfrun_test -r -g FOO -s FOO ${BAR} 1 -g FOO -u FOO -g FOO 203171195Sscfcheck_result "${BAR} 0 0 ${BAR} 0 0 ${NULL}" 204171195Sscf 205171195Sscfrun_test -r -g FOO -u FOO -g FOO -s FOO ${BAR} 1 -g FOO 206171195Sscfcheck_result "${BAR} 0 0 ${NULL} 0 0 ${BAR}" 207171195Sscf