mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-02-24 23:14:14 +00:00
This gets rid of repetitive code in test scripts to create their own temporary directories. Instead, shtests exports a $tmp to each test script that is a subdirectory of its own temporary directory. This has the advantage of having all test script temporary directories in one hierarchy. Along with a new option to keep temporary files, this makes it easy to inspect them if wanted. This does make the test scripts less self-contained as they now depend on a temporary directory being exported as $tmp. But they already depended on $SHELL being the shell to test, so they already were not quite self-contained. src/cmd/ksh93/tests/shtests: - Add -k/--keep option to keep temporary directory. Make the EXIT trap report its location instead of deleting it. - For each test, create a subdirectory of $tmp (named after the test script plus the tested locale or 'shcomp') and export that subdirectory to the test script as its own $tmp. - If -k is not given, delete each script's temporary files immediately after running it to minimise disk usage. src/cmd/ksh93/tests/*.sh: - Don't make own temp directory. - Refuse to run if $tmp is not set. - Miscellaneous tweaks.
96 lines
3.1 KiB
Bash
Executable file
96 lines
3.1 KiB
Bash
Executable file
########################################################################
|
|
# #
|
|
# This software is part of the ast package #
|
|
# Copyright (c) 1982-2012 AT&T Intellectual Property #
|
|
# and is licensed under the #
|
|
# Eclipse Public License, Version 1.0 #
|
|
# by AT&T Intellectual Property #
|
|
# #
|
|
# A copy of the License is available at #
|
|
# http://www.eclipse.org/org/documents/epl-v10.html #
|
|
# (with md5 checksum b35adb5213ca9657e911e9befb180842) #
|
|
# #
|
|
# Information and Software Systems Research #
|
|
# AT&T Research #
|
|
# Florham Park NJ #
|
|
# #
|
|
# David Korn <dgk@research.att.com> #
|
|
# #
|
|
########################################################################
|
|
|
|
function err_exit
|
|
{
|
|
print -u2 -n "\t"
|
|
print -u2 -r ${Command}[$1]: "${@:2}"
|
|
let Errors+=1
|
|
}
|
|
alias err_exit='err_exit $LINENO'
|
|
|
|
Command=${0##*/}
|
|
integer Errors=0
|
|
|
|
[[ -d $tmp && -w $tmp ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; }
|
|
|
|
# Get the current amount of memory usage
|
|
function getmem
|
|
{
|
|
UNIX95=1 ps -p "$$" -o vsz=
|
|
}
|
|
n=$(getmem)
|
|
if ! let "$n == $n" 2>/dev/null # not a number?
|
|
then err\_exit "$LINENO" "'ps' not POSIX-compliant; skipping tests"
|
|
exit 0
|
|
fi
|
|
|
|
# test for variable reset leak #
|
|
|
|
function test_reset
|
|
{
|
|
integer i N=$1
|
|
|
|
for ((i = 0; i < N; i++))
|
|
do u=$i
|
|
done
|
|
}
|
|
|
|
N=1000
|
|
|
|
# one round to get to steady state -- sensitive to -x
|
|
|
|
test_reset $N
|
|
test_reset $N
|
|
before=$(getmem)
|
|
test_reset $N
|
|
after=$(getmem)
|
|
|
|
if (( after > before ))
|
|
then err_exit "variable value reset memory leak -- $((after - before)) KiB after $N iterations"
|
|
fi
|
|
|
|
# buffer boundary tests
|
|
|
|
for exp in 65535 65536
|
|
do got=$($SHELL -c 'x=$(printf "%.*c" '$exp' x); print ${#x}' 2>&1)
|
|
[[ $got == $exp ]] || err_exit "large command substitution failed -- expected $exp, got $got"
|
|
done
|
|
|
|
data="(v=;sid=;di=;hi=;ti='1328244300';lv='o';id='172.3.161.178';var=(k='conn_num._total';u=;fr=;l='Number of Connections';n='22';t='number';))"
|
|
read -C stat <<< "$data"
|
|
before=$(getmem)
|
|
for ((i=0; i < 500; i++))
|
|
do print -r -- "$data"
|
|
done | while read -u$n -C stat
|
|
do :
|
|
done {n}<&0-
|
|
after=$(getmem)
|
|
(( after > before )) && err_exit "memory leak with read -C when deleting compound variable (leaked $((after - before)) KiB)"
|
|
|
|
read -C stat <<< "$data"
|
|
before=$(getmem)
|
|
for ((i=0; i < 500; i++))
|
|
do read -C stat <<< "$data"
|
|
done
|
|
after=$(getmem)
|
|
(( after > before )) && err_exit "memory leak with read -C when using <<< (leaked $((after - before)) KiB)"
|
|
|
|
exit $((Errors<125?Errors:125))
|