Contain variable names in shell2unit

Also correct unbound assertions variable error on line 176
This commit is contained in:
Christoph Blecker 2018-01-26 14:08:25 -08:00
parent 92b1e6d227
commit 670505e5ff
No known key found for this signature in database
GPG Key ID: B34A59A9D39F838B

View File

@ -46,13 +46,13 @@ errfile=/tmp/evErr.$$.log
function eVal() { function eVal() {
(eval "$1") (eval "$1")
# stdout and stderr may currently be inverted (see below) so echo may write to stderr # stdout and stderr may currently be inverted (see below) so echo may write to stderr
echo $? 2>&1 | tr -d "\n" > $errfile echo $? 2>&1 | tr -d "\n" > ${errfile}
} }
# Method to clean old tests # Method to clean old tests
function juLogClean() { function juLogClean() {
echo "+++ Removing old junit reports from: $juDIR " echo "+++ Removing old junit reports from: ${juDIR} "
rm -f "$juDIR"/junit-* rm -f "${juDIR}"/junit-*
} }
# Execute a command and record its results # Execute a command and record its results
@ -76,108 +76,108 @@ function juLog() {
done done
# create output directory # create output directory
mkdir -p "$juDIR" || exit mkdir -p "${juDIR}" || exit
# use first arg as name if it was not given # use first arg as name if it was not given
if [ -z "$name" ]; then if [ -z "${name}" ]; then
name="$asserts-$1" name="${asserts}-$1"
shift shift
fi fi
if [[ "$class" = "" ]]; then if [[ "${class}" = "" ]]; then
class="default" class="default"
fi fi
suite=$class suite=${class}
# calculate command to eval # calculate command to eval
[ -z "$1" ] && return [ -z "$1" ] && return
cmd="$1"; shift cmd="$1"; shift
while [ -n "${1:-}" ] while [ -n "${1:-}" ]
do do
cmd="$cmd \"$1\"" cmd="${cmd} \"$1\""
shift shift
done done
# eval the command sending output to a file # eval the command sending output to a file
outf=/var/tmp/ju$$.txt outf=/var/tmp/ju$$.txt
errf=/var/tmp/ju$$-err.txt errf=/var/tmp/ju$$-err.txt
>$outf >${outf}
echo "" | tee -a $outf echo "" | tee -a ${outf}
echo "+++ Running case: $class.$name " | tee -a $outf echo "+++ Running case: ${class}.${name} " | tee -a ${outf}
echo "+++ working dir: "`pwd` | tee -a $outf echo "+++ working dir: "`pwd` | tee -a ${outf}
echo "+++ command: $cmd" | tee -a $outf echo "+++ command: ${cmd}" | tee -a ${outf}
ini=`$date +%s.%N` ini=`${date} +%s.%N`
# execute the command, temporarily swapping stderr and stdout so they can be tee'd to separate files, # execute the command, temporarily swapping stderr and stdout so they can be tee'd to separate files,
# then swapping them back again so that the streams are written correctly for the invoking process # then swapping them back again so that the streams are written correctly for the invoking process
( (eVal "$cmd" | tee -a $outf) 3>&1 1>&2 2>&3 | tee $errf) 3>&1 1>&2 2>&3 ( (eVal "${cmd}" | tee -a ${outf}) 3>&1 1>&2 2>&3 | tee ${errf}) 3>&1 1>&2 2>&3
evErr=`cat $errfile` evErr=`cat ${errfile}`
rm -f $errfile rm -f ${errfile}
end=`$date +%s.%N` end=`${date} +%s.%N`
echo "+++ exit code: $evErr" | tee -a $outf echo "+++ exit code: ${evErr}" | tee -a ${outf}
# set the appropriate error, based in the exit code and the regex # set the appropriate error, based in the exit code and the regex
[ $evErr != 0 ] && err=1 || err=0 [ ${evErr} != 0 ] && err=1 || err=0
out=`cat $outf | ${SED} -e 's/^\([^+]\)/| \1/g'` out=`cat $outf | ${SED} -e 's/^\([^+]\)/| \1/g'`
if [ $err = 0 -a -n "${ereg:-}" ]; then if [ ${err} = 0 -a -n "${ereg:-}" ]; then
H=`echo "$out" | egrep $icase "$ereg"` H=`echo "${out}" | egrep ${icase} "${ereg}"`
[ -n "$H" ] && err=1 [ -n "${H}" ] && err=1
fi fi
[ $err != 0 ] && echo "+++ error: $err" | tee -a $outf [ ${err} != 0 ] && echo "+++ error: ${err}" | tee -a ${outf}
rm -f $outf rm -f ${outf}
errMsg=`cat $errf` errMsg=`cat ${errf}`
rm -f $errf rm -f ${errf}
# calculate vars # calculate vars
asserts=$(($asserts+1)) asserts=$(($asserts+1))
errors=$(($errors+$err)) errors=$(($errors+$err))
time=`echo "$end - $ini" | bc -l` time=`echo "${end} - ${ini}" | bc -l`
total=`echo "$total + $time" | bc -l` total=`echo "${total} + ${time}" | bc -l`
# write the junit xml report # write the junit xml report
## failure tag ## failure tag
[ $err = 0 ] && failure="" || failure=" [ ${err} = 0 ] && failure="" || failure="
<failure type=\"ScriptError\" message=\"Script Error\"> <failure type=\"ScriptError\" message=\"Script Error\">
<![CDATA[ <![CDATA[
$errMsg ${errMsg}
]]> ]]>
</failure> </failure>
" "
## testcase tag ## testcase tag
content="$content content="${content}
<testcase assertions=\"1\" name=\"$name\" time=\"$time\" classname=\"$class\"> <testcase assertions=\"1\" name=\"${name}\" time=\"${time}\" classname=\"${class}\">
$failure ${failure}
<system-err> <system-err>
<![CDATA[ <![CDATA[
$errMsg ${errMsg}
]]> ]]>
</system-err> </system-err>
</testcase> </testcase>
" "
## testsuite block ## testsuite block
if [[ -e "$juDIR/junit_$suite.xml" ]]; then if [[ -e "${juDIR}/junit_${suite}.xml" ]]; then
# file exists. first update the failures count # file exists. first update the failures count
failCount=`${SED} -n "s/.*testsuite.*failures=\"\([0-9]*\)\".*/\1/p" "$juDIR/junit_$suite.xml"` failCount=`${SED} -n "s/.*testsuite.*failures=\"\([0-9]*\)\".*/\1/p" "${juDIR}/junit_${suite}.xml"`
errors=$(($failCount+$errors)) errors=$(($failCount+$errors))
${SED} -i "0,/failures=\"$failCount\"/ s/failures=\"$failCount\"/failures=\"$errors\"/" "$juDIR/junit_$suite.xml" ${SED} -i "0,/failures=\"${failCount}\"/ s/failures=\"${failCount}\"/failures=\"${errors}\"/" "${juDIR}/junit_${suite}.xml"
${SED} -i "0,/errors=\"$failCount\"/ s/errors=\"$failCount\"/errors=\"$errors\"/" "$juDIR/junit_$suite.xml" ${SED} -i "0,/errors=\"${failCount}\"/ s/errors=\"${failCount}\"/errors=\"${errors}\"/" "${juDIR}/junit_${suite}.xml"
# file exists. Need to append to it. If we remove the testsuite end tag, we can just add it in after. # file exists. Need to append to it. If we remove the testsuite end tag, we can just add it in after.
${SED} -i "s^</testsuite>^^g" $juDIR/junit_$suite.xml ## remove testSuite so we can add it later ${SED} -i "s^</testsuite>^^g" ${juDIR}/junit_${suite}.xml ## remove testSuite so we can add it later
${SED} -i "s^</testsuites>^^g" $juDIR/junit_$suite.xml ${SED} -i "s^</testsuites>^^g" ${juDIR}/junit_${suite}.xml
cat <<EOF >> "$juDIR/junit_$suite.xml" cat <<EOF >> "$juDIR/junit_$suite.xml"
$content ${content:-}
</testsuite> </testsuite>
</testsuites> </testsuites>
EOF EOF
else else
# no file exists. Adding a new file # no file exists. Adding a new file
cat <<EOF > "$juDIR/junit_$suite.xml" cat <<EOF > "${juDIR}/junit_${suite}.xml"
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<testsuites> <testsuites>
<testsuite failures="$errors" assertions="$assertions" name="$suite" tests="1" errors="$errors" time="$total"> <testsuite failures="${errors}" assertions="${assertions:-}" name="${suite}" tests="1" errors="${errors}" time="${total}">
$content ${content:-}
</testsuite> </testsuite>
</testsuites> </testsuites>
EOF EOF