aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuergen Kahrs <Juergen.Kahrs@googlemail.com>2013-05-09 18:48:29 +0200
committerJuergen Kahrs <Juergen.Kahrs@googlemail.com>2013-05-09 18:48:29 +0200
commitf002cb87a7ec02f311c75ad5c0d9e31cf7519aa1 (patch)
tree6894696a07274ff139c99309b5dc22c566e84636
parent56e0891a41a9b151c9dfe7665401ba5950ac2f91 (diff)
downloadegawk-f002cb87a7ec02f311c75ad5c0d9e31cf7519aa1.tar.gz
egawk-f002cb87a7ec02f311c75ad5c0d9e31cf7519aa1.tar.bz2
egawk-f002cb87a7ec02f311c75ad5c0d9e31cf7519aa1.zip
New function simple_test_case simplifies test case execution.
-rwxr-xr-xcmake/basictest124
-rw-r--r--test/CMakeLists.txt16
2 files changed, 53 insertions, 87 deletions
diff --git a/cmake/basictest b/cmake/basictest
index 990c7785..d2829d31 100755
--- a/cmake/basictest
+++ b/cmake/basictest
@@ -9,7 +9,6 @@ set -x
export PATH=$PATH:/c/MinGW/msys/1.0/bin
export GAWKEXE=$1
export TESTCASE=$2
-export OPTION=$3
TOPSRCDIR=$(dirname ${0})/..
SRCDIR=${TOPSRCDIR}/test
export AWKPATH=${SRCDIR}
@@ -26,9 +25,43 @@ else
PATH_SEPARATOR="/"
fi
+# This is the central function for executing a standard test case.
+# Many of the more specialized test cases rely on this function.
+function simple_test_case() {
+ local options=$1 # options passed to the gawk executable
+ local parameters=$2 # parameters passed to the test case script
+ cd ${SRCDIR}
+ if test -r ${TESTCASE}.in
+ # Any existing .in file will be redirected to standard input.
+ # The output redirection must be bound to the test script, otherwise
+ # the "set -x" logging would mix with the test case output.
+ then
+ ${pregawk} $GAWKEXE ${options} -f ${TESTCASE}.awk ${parameters} < ${TESTCASE}.in ${postgawk} > _${TESTCASE} 2>&1
+ else
+ ${pregawk} $GAWKEXE ${options} -f ${TESTCASE}.awk ${parameters} ${postgawk} > _${TESTCASE} 2>&1
+ fi || echo EXIT CODE: $? >> _${TESTCASE}
+ # Compare the expected (correct) output with the actual output.
+ ${COMPARE} ${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
+ # If the comparison succeeds then remove the actual output.
+ # Else leave the actual output file untouched for later analysis.
+}
+
# Each test case that cannot be handle in the "standard way" shall
# be implemented as a function here.
+function lintold() { simple_test_case "--lint-old" "" ; }
+function defref() { simple_test_case "--lint" "" ; }
+function fmtspcl() { simple_test_case "--lint" "" ; }
+function lintwarn() { simple_test_case "--lint" "" ; }
+function noeffect() { simple_test_case "--lint" "" ; }
+function nofmtch() { simple_test_case "--lint" "" ; }
+function shadow() { simple_test_case "--lint" "" ; }
+function uninit2() { simple_test_case "--lint" "" ; }
+function uninit3() { simple_test_case "--lint" "" ; }
+function uninit4() { simple_test_case "--lint" "" ; }
+function uninit5() { simple_test_case "--lint" "" ; }
+function uninitialized() { simple_test_case "--lint" "" ; }
+
function regtest() {
echo 'Some of the output from regtest is very system specific, do not'
echo 'be distressed if your output differs from that distributed.'
@@ -36,10 +69,7 @@ function regtest() {
AWK=$GAWKEXE ${SRCDIR}/regtest.sh
}
-function compare() {
- $GAWKEXE -f ${SRCDIR}/compare.awk 0 1 ${SRCDIR}/compare.in >_${TESTCASE}
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
-}
+function compare() { simple_test_case "" "0 1" ; }
function inftest() {
echo This test is very machine specific...
@@ -47,30 +77,21 @@ function inftest() {
${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
}
-function getline2() {
- $GAWKEXE -f ${SRCDIR}/getline2.awk ${SRCDIR}/getline2.awk ${SRCDIR}/getline2.awk >_${TESTCASE}
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
-}
+function getline2() { simple_test_case "" "getline2.awk getline2.awk" ; }
function awkpath() {
AWKPATH="${SRCDIR}$(PATH_SEPARATOR)/lib" $GAWKEXE -f awkpath.awk >_${TESTCASE}
${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
}
-function argtest() {
- $GAWKEXE -f ${SRCDIR}/argtest.awk -x -y abc >_${TESTCASE}
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
-}
+function argtest() { simple_test_case "" "-x -y abc" ; }
function badargs() {
$GAWKEXE -f 2>&1 | grep -v patchlevel >_${TESTCASE}
${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
}
-function nonl() {
- AWKPATH=${SRCDIR} $GAWKEXE --lint -f nonl.awk /dev/null >_${TESTCASE} 2>&1
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
-}
+function nonl() { simple_test_case "--lint" "/dev/null" ; }
function poundbang() {
# The original poundbang test case looks a bit non-deterministic.
@@ -286,8 +307,7 @@ function fts() {
echo This test may fail on IRIX systems when run on an NFS filesystem.; \
echo If it does, try rerunning on an xfs filesystem. ; \
fi
- ( cd ${SRCDIR} ; $GAWKEXE -f ${TESTCASE}.awk )
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok ${SRCDIR}/_${TESTCASE} && rm -f ${SRCDIR}/_${TESTCASE} ${SRCDIR}/${TESTCASE}.ok
+ simple_test_case "" ""
}
function charasbytes() {
@@ -337,8 +357,8 @@ function mmap8k() {
}
function pid() {
- AWKPATH=${SRCDIR} AWK=$GAWKEXE ${SHELL} ${SRCDIR}/pid.sh $$ > _`basename ${TESTCASE}` ; :
- ${COMPARE} ${SRCDIR}/pid.ok _`basename ${TESTCASE}` && rm -f _`basename ${TESTCASE}`
+ AWKPATH=${SRCDIR} AWK=$GAWKEXE ${SHELL} ${SRCDIR}/pid.sh $$ > _${TESTCASE} ; :
+ ${COMPARE} ${SRCDIR}/pid.ok _`basename ${TESTCASE}` && rm -f _${TESTCASE}
}
function strftlng() {
@@ -364,10 +384,7 @@ function fmtspcl() {
fi
}
-function pipeio2() {
- $GAWKEXE -v SRCDIR=${SRCDIR} -f ${SRCDIR}/pipeio2.awk >_${TESTCASE}
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
-}
+function pipeio2() { simple_test_case "-v SRCDIR=${SRCDIR}" "" ; }
function arynocls() {
AWKPATH=${SRCDIR} $GAWKEXE -v INPUT=${SRCDIR}/arynocls.in -f arynocls.awk >_${TESTCASE}
@@ -396,15 +413,9 @@ function inetdayt() {
"/inet/tcp/0/127.0.0.1/13" |& getline; print $0}'
}
-function redfilnm() {
- $GAWKEXE -f ${SRCDIR}/redfilnm.awk srcdir=${SRCDIR} ${SRCDIR}/redfilnm.in >_${TESTCASE}
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
-}
+function redfilnm() { simple_test_case "" "srcdir=${SRCDIR}" ; }
-function leaddig() {
- $GAWKEXE -v x=2E -f ${SRCDIR}/leaddig.awk >_${TESTCASE}
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
-}
+function leaddig() { simple_test_case "-v x=2E" "" ; }
function gsubtst3() {
$GAWKEXE --re-interval -f ${SRCDIR}/${TESTCASE}.awk ${SRCDIR}/${TESTCASE}.in >_${TESTCASE}
@@ -432,10 +443,7 @@ function rsnulbig2() {
${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
}
-function printf0() {
- $GAWKEXE --posix -f ${SRCDIR}/${TESTCASE}.awk >_${TESTCASE} 2>&1 || echo EXIT CODE: $? >>_${TESTCASE}
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
-}
+function printf0() { simple_test_case "--posix" "" ; }
function profile1() {
$GAWKEXE --pretty-print=ap-${TESTCASE}.out -f ${SRCDIR}/xref.awk ${SRCDIR}/dtdgport.awk > _${TESTCASE}.out1
@@ -471,25 +479,10 @@ function exit() {
${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
}
-function mpfrexprange() {
- $GAWKEXE -M -vPREC=53 -f ${SRCDIR}/${TESTCASE}.awk > _${TESTCASE} 2>&1
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
-}
-
-function mpfrrnd() {
- $GAWKEXE -M -vPREC=53 -f ${SRCDIR}/${TESTCASE}.awk > _${TESTCASE} 2>&1
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
-}
-
-function mpfrnr() {
- $GAWKEXE -M -vPREC=113 -f ${SRCDIR}/${TESTCASE}.awk ${SRCDIR}/${TESTCASE}.in > _${TESTCASE}
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
-}
-
-function mpfrbigint() {
- $GAWKEXE -M -f ${SRCDIR}/${TESTCASE}.awk > _${TESTCASE} 2>&1
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
-}
+function mpfrexprange() { simple_test_case "-M -vPREC=53 " "" ; }
+function mpfrrnd() { simple_test_case "-M -vPREC=53 " "" ; }
+function mpfrnr() { simple_test_case "-M -vPREC=113" "" ; }
+function mpfrbigint() { simple_test_case "-M " "" ; }
function jarebug() {
${SRCDIR}/${TESTCASE}.sh "$GAWKEXE" "${SRCDIR}/${TESTCASE}.awk" "${SRCDIR}/${TESTCASE}.in" "_${TESTCASE}"
@@ -512,10 +505,7 @@ function rtlenmb() {
${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
}
-function nondec2() {
- $GAWKEXE --non-decimal-data -v a=0x1 -f ${SRCDIR}/${TESTCASE}.awk >_${TESTCASE}
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
-}
+function nondec2() { simple_test_case "--non-decimal-data -v a=0x1" "" ; }
function nofile() {
$GAWKEXE '{}' no/such/file >_${TESTCASE} 2>&1 || echo EXIT CODE: $? >>_${TESTCASE}
@@ -538,22 +528,12 @@ function devfd2() {
${COMPARE} ${SRCDIR}/${TESTCASE}.ok _${TESTCASE} && rm -f _${TESTCASE}
}
-
# Is this test case implemented as a function ?
if [ "$( type -t $TESTCASE )" = "function" ]
then
$TESTCASE
-# If no function exists, then treat the test case in standard way.
-elif test -r ${SRCDIR}/${TESTCASE}.in
-# Any existing .in file will be redirected to standard input.
-then
- $GAWKEXE ${OPTION} -f ${TESTCASE}.awk < ${SRCDIR}/${TESTCASE}.in > ${SRCDIR}/_${TESTCASE} 2>&1 || echo EXIT CODE: $? >> ${SRCDIR}/_${TESTCASE}
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok ${SRCDIR}/_${TESTCASE} && rm -f ${SRCDIR}/_${TESTCASE}
else
- $GAWKEXE ${OPTION} -f ${TESTCASE}.awk > ${SRCDIR}/_${TESTCASE} 2>&1 || echo EXIT CODE: $? >> ${SRCDIR}/_${TESTCASE}
- # Compare the expected (correct) output with the actual output.
- ${COMPARE} ${SRCDIR}/${TESTCASE}.ok ${SRCDIR}/_${TESTCASE} && rm -f ${SRCDIR}/_${TESTCASE}
- # If the comparison succeeds then remove the actual output.
- # Else leave the actual output file untouched for later analysis.
+ # If no function exists, then treat the test case in standard way.
+ simple_test_case "" ""
fi
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 564eb776..3aceece9 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -40,21 +40,7 @@ foreach(testgroup ${ALL_GROUPS} )
string(REGEX REPLACE "[\\\n\t]" "" ONE_GROUP "${ONE_GROUP}")
string(REGEX REPLACE " " ";" ONE_GROUP "${ONE_GROUP}")
# Use each name of a test case to start a script that executes the test case.
- # Some test cases are special, treat them accordingly.
foreach(testcase ${ONE_GROUP} )
- set(options "")
- if(${testcase} STREQUAL lintold)
- set(options "--lint-old")
- elseif(
- ${testcase} STREQUAL defref OR ${testcase} STREQUAL fmtspcl OR
- ${testcase} STREQUAL lintwarn OR ${testcase} STREQUAL noeffect OR
- ${testcase} STREQUAL nofmtch OR ${testcase} STREQUAL shadow OR
- ${testcase} STREQUAL uninit2 OR ${testcase} STREQUAL uninit3 OR
- ${testcase} STREQUAL uninit4 OR ${testcase} STREQUAL uninit5 OR
- ${testcase} STREQUAL uninitialized)
- set(options "--lint")
- endif()
- add_test("${testgroup}.${testcase}" ${SHELL_PREFIX} ${CMAKE_SOURCE_DIR}/cmake/basictest ${CMAKE_BINARY_DIR}/gawk ${testcase}${file_suffix} ${options} )
+ add_test("${testgroup}.${testcase}" ${SHELL_PREFIX} ${CMAKE_SOURCE_DIR}/cmake/basictest ${CMAKE_BINARY_DIR}/gawk ${testcase}${file_suffix} )
endforeach(testcase)
-
endforeach(testgroup)