From 77c9ba9ee1185db7ef42c409972f09d98e71e106 Mon Sep 17 00:00:00 2001 From: Albert Cheng Date: Sun, 24 Jun 2007 21:17:09 -0500 Subject: [PATCH] [svn-r13905] Purpose: Bug fix. Description: The "h5dump -o ..." test generates temporay files in the testfiles of the source code and later on remove them. This could cuase a racing condition if more than one --srcdir build is using the same copy of the source code. Since they use the same file name in the testfiles, they may conflict with each other. Solution: Changed to generate the temporary files in the build-dir's own testfiles directory. Since the build-dir can have different names, the CMP of expected output now skip the first three lines which are label lines that contains the location of the temporary. Also removed the CREATE code since actual files created now cannot be blindly copied to the expect files. Also, expected files should be create by explicit action and careful inspection of files generated. Tested platform: Done in kagiso, both by --src-dir and in-place build. --- tools/h5dump/testh5dump.sh.in | 80 ++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/tools/h5dump/testh5dump.sh.in b/tools/h5dump/testh5dump.sh.in index c6a4dfff4c..bc8f3e6817 100644 --- a/tools/h5dump/testh5dump.sh.in +++ b/tools/h5dump/testh5dump.sh.in @@ -25,6 +25,7 @@ USE_FILTER_SCALEOFFSET="@USE_FILTER_SCALEOFFSET@" DUMPER=h5dump # The tool name DUMPER_BIN=`pwd`/$DUMPER # The path of the tool binary +TESTDIR=`pwd`/../testfiles H5DIFF=../h5diff/h5diff # The h5diff tool name H5DIFF_BIN=`pwd`/$H5DIFF # The path of the h5diff tool binary @@ -44,7 +45,7 @@ if test -z "$srcdir"; then srcdir=. fi -test -d ../testfiles || mkdir ../testfiles +test -d $TESTDIR || mkdir $TESTDIR # Print a line-line message left justified in a field of 70 characters # beginning with the word "Testing". @@ -63,40 +64,41 @@ TESTING() { # non-zero value. # TOOLTEST() { - expect="$srcdir/../testfiles/$1" - actual="../testfiles/`basename $1 .ddl`.out" - actual_err="../testfiles/`basename $1 .ddl`.err" - shift - # Run test. - TESTING $DUMPER $@ - ( - echo "#############################" - echo "Expected output for '$DUMPER $@'" - echo "#############################" - cd $srcdir/../testfiles - $RUNSERIAL $DUMPER_BIN $@ - ) >$actual 2>$actual_err - cat $actual_err >> $actual + expect="$srcdir/../testfiles/$1" + actual="../testfiles/`basename $1 .ddl`.out" + actual_err="../testfiles/`basename $1 .ddl`.err" + shift + # Run test. + TESTING $DUMPER $@ + ( + cd $srcdir/../testfiles + $RUNSERIAL $DUMPER_BIN $@ + ) >$actual 2>$actual_err + cat $actual_err >> $actual - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected result (*.ddl) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi + if [ ! -f $expect ]; then + echo "*FAILED*" + echo " $expect missing" + nerrors="`expr $nerrors + 1`" + else + # Skip the first three lines, which are label lines, before cmp. + if tail +4l $expect | $CMP - $actual; then + echo " PASSED" + else + echo "*FAILED*" + echo " Expected result (*.ddl) differs from actual result (*.out)" + nerrors="`expr $nerrors + 1`" + test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' + fi + fi + + # Clean up output file + if test -z "$HDF5_NOCLEANUP"; then + rm -f $actual $actual_err + fi - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err - fi } @@ -414,20 +416,20 @@ TOOLTEST tnullspace.ddl tnullspace.h5 TOOLTEST tvms.ddl tvms.h5 # test for binary output -TOOLTEST tbin1.ddl -d array -o out1.bin -b LE tbinary.h5 -TOOLTEST tbin2.ddl -d float -o out2.bin -b BE tbinary.h5 +TOOLTEST tbin1.ddl -d array -o $TESTDIR/out1.bin -b LE tbinary.h5 +TOOLTEST tbin2.ddl -d float -o $TESTDIR/out2.bin -b BE tbinary.h5 # the MEMORY test can be validated with h5import/h5diff -TOOLTEST tbin3.ddl -d integer -o out3.bin -b MEMORY tbinary.h5 -IMPORTTEST out3.bin -c out3.h5import -o out3.h5 -DIFFTEST tbinary.h5 out3.h5 /integer /integer +TOOLTEST tbin3.ddl -d integer -o $TESTDIR/out3.bin -b MEMORY tbinary.h5 +IMPORTTEST $TESTDIR/out3.bin -c out3.h5import -o $TESTDIR/out3.h5 +DIFFTEST tbinary.h5 $TESTDIR/out3.h5 /integer /integer -TOOLTEST tbin4.ddl -d double -o out4.bin -b FILE tbinary.h5 +TOOLTEST tbin4.ddl -d double -o $TESTDIR/out4.bin -b FILE tbinary.h5 # Clean up binary output files if test -z "$HDF5_NOCLEANUP"; then - rm -f $srcdir/../testfiles/out[1-4].bin - rm -f $srcdir/../testfiles/out3.h5 + rm -f $TESTDIR/out[1-4].bin + rm -f $TESTDIR/out3.h5 fi