#! /bin/sh # # Copyright by The HDF Group. # Copyright by the Board of Trustees of the University of Illinois. # All rights reserved. # # This file is part of HDF5. The full HDF5 copyright notice, including # terms governing use, modification, and redistribution, is contained in # the COPYING file, which can be found at the root of the source code # distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # # Tests for test_error and err_compat srcdir=@srcdir@ # Determine backward compatibility options eneabled DEPRECATED_SYMBOLS="@DEPRECATED_SYMBOLS@" CMP='cmp -s' DIFF='diff -c' # Skip plugin module to test missing filter ENVCMD="env HDF5_PLUGIN_PRELOAD=::" nerrors=0 verbose=yes test -d ./testfiles || mkdir ./testfiles # Print a line-line message left justified in a field of 70 characters # beginning with the word "Testing". # TESTING() { SPACES=" " echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' } # Run a test and print PASS or *FAIL*. If a test fails then increment # the `nerrors' global variable and (if $verbose is set) display the # difference between the actual output and the expected output. The # expected output is given as the first argument to this function and # the actual output file is calculated by replacing the `.ddl' with # `.out'. The actual output is not removed if $HDF5_NOCLEANUP has a # non-zero value. # TEST() { TEST_ERR=$1 # The test name TEST_ERR_BIN=`pwd`/$TEST_ERR # The path of the test binary expect1="$srcdir/testfiles/$1_1" expect2="$srcdir/testfiles/$1_2" actual="./`basename $1`.out" actual_err="./`basename $1`.err" actual_ext="./`basename $1`.ext" shift # Run test. TESTING $TEST_ERR ( # Skip the plugin for testing missing filter. $ENVCMD $RUNSERIAL $TEST_ERR_BIN ) >$actual 2>$actual_err # Extract file name, line number, version and thread IDs because they may be different sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \ -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \ $actual_err > $actual_ext cat $actual_ext >> $actual if $CMP $expect1 $actual; then echo " PASSED" elif $CMP $expect2 $actual; then echo " PASSED" else echo "*FAILED*" echo " Expected result differs from actual result" nerrors="`expr $nerrors + 1`" test yes = "$verbose" && $DIFF $expect1 $actual |sed 's/^/ /' fi # Clean up output file if test -z "$HDF5_NOCLEANUP"; then rm -f $actual $actual_err $actual_ext fi } # Print a "SKIP" message SKIP() { TESTING $@ echo " -SKIP-" } ############################################################################## ############################################################################## ### T H E T E S T S ### ############################################################################## ############################################################################## # test for err_compat if test $DEPRECATED_SYMBOLS != "yes"; then SKIP err_compat else TEST err_compat fi # test for error_test. Skip the plugin for testing missing filter. TEST error_test if test $nerrors -eq 0 ; then echo "All Error API tests passed." fi exit $nerrors