diff options
author | Albert Cheng <acheng@hdfgroup.org> | 2009-09-28 15:44:35 (GMT) |
---|---|---|
committer | Albert Cheng <acheng@hdfgroup.org> | 2009-09-28 15:44:35 (GMT) |
commit | 06a71c86a3079e5acaa175898728a47c6e21e53c (patch) | |
tree | 4e28001017f05a1485dd1f1a22a2060c1bd94eee /test/testcheck_version.sh.in | |
parent | 541f147c9110ca8a3692ff1253770e5fa54a1bff (diff) | |
download | hdf5-06a71c86a3079e5acaa175898728a47c6e21e53c.zip hdf5-06a71c86a3079e5acaa175898728a47c6e21e53c.tar.gz hdf5-06a71c86a3079e5acaa175898728a47c6e21e53c.tar.bz2 |
[svn-r17542] New test:
Add new tests (tcheck_version, testcheck_version.sh) to verify H5check_version()
does issue warnings and abort accordingly.
Tests:
H5committed tested plus jam serial tested.
Diffstat (limited to 'test/testcheck_version.sh.in')
-rw-r--r-- | test/testcheck_version.sh.in | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/test/testcheck_version.sh.in b/test/testcheck_version.sh.in new file mode 100644 index 0000000..15949e9 --- /dev/null +++ b/test/testcheck_version.sh.in @@ -0,0 +1,188 @@ +#! /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 files COPYING and Copyright.html. COPYING can be found at the root +# of the source code distribution tree; Copyright.html can be found at the +# root level of an installed copy of the electronic HDF5 document set and +# is linked from the top-level documents page. It can also be found at +# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have +# access to either file, you may request a copy from help@hdfgroup.org. + +# +# Tests for the H5check_version function. +# +# Programmer: Albert Cheng +# Sep 28, 2009 + +# Variables filled in by the configure process. +# Determine the configure options of the hdf5 library and executables. +Shared_Lib=@enable_shared@ +Static_Lib=@enable_static@ +Static_exec=@STATIC_EXEC@ + + +# Function definitions +# Print a line-line message left justified in a field of 70 characters. +# +LINEMSG() { + SPACES=" " + echo "$* $SPACES" | cut -c1-70 | tr -d '\012' +} + + +# Print a "SKIP" message +SKIP() { + LINEMSG $* + echo " -SKIP-" +} + + +# 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 generated according to the parameter values and compared +# against actual output. +# The expected and actual output files are removed unless $HDF5_NOCLEANUP +# has a non-zero value. +# $1: the set value of $HDF5_DISABLE_VERSION_CHECK. (unset means not to set +# it at all. +# $2: Change the version number(s) to cause a mismatch. (none means no +# mismatch). +# +# Expected results: +# Value of $HDF5_DISABLE_VERSION_CHECK +# unset "" -1 0 1 2 3 +# Matched OK OK OK OK OK OK OK +# Mismatched W/A W/A W/A W/A W2/OK OK W2/OK +# Result codes: +# OK: No warning, exit 0. +# W/A: Warning, abort and exit non-0. +# W2/OK: Different Warning, exit 0. +# +# Implemented only exit code matching. Still need to match output. +TESTING() { + DEBUGPRINT command is $0 $* + TEST_NAME=tcheck_version # The test name + TEST_BIN=`pwd`/$TEST_NAME # The path of the test binary + + expect=expected_out + actual=actual_out + actual_err=actual_err_out + arguments= + + h5DisableVersion="$1" + wrongversionnumbers="$2" + + if [ "$h5DisableVersion" = unset ]; then + envcmd="" # noop + else + envcmd="env HDF5_DISABLE_VERSION_CHECK=$h5DisableVersion" + fi + + if [ "$wrongversionnumbers" = none ]; then + # OK: No warning, exit 0 + cp /dev/null $expect + expected_code=0 + else + arguments=-t"$wrongversionnumbers" + case "$h5DisableVersion" in + 2) # OK: No warning, exit 0 + cp /dev/null $expect + expected_code=0 + ;; + [13-9]|[1-9][0-9]*) + # W2/OK: Different Warning, exit 0. + cp /dev/null $expect #NEED FIX + expected_code=0 + ;; + *) # W/A: Warning, abort and exit non-0. + cp /dev/null $expect #NEED FIX + expected_code=1 # non-zero since abort exit code maybe + ;; # machine dependent. + esac + fi + + # Run test. + LINEMSG $envcmd $TEST_NAME $arguments + ( + echo "#############################" + echo "Expected output for $TEST_ERR" + echo "#############################" + $envcmd $RUNSERIAL $TEST_BIN $arguments + ) >$actual 2>$actual_err + ret_code=$? + + if [ \( $expected_code -eq 0 -a $expected_code -eq $ret_code \) -o \ + \( $expected_code -ne 0 -a $ret_code -ne 0 \) ]; then + echo " PASSED" + else + echo "*FAILED*" + echo " Expected exit code ($expected_code) differs from actual code ($ret_code)" + nerrors="`expr $nerrors + 1`" + fi + + # Clean up output file + if test -z "$HDF5_NOCLEANUP"; then + rm -f $expected_out $actual_out $actual_err + fi +} + + +# Echo parameters for debugging if verbose mode is on. +DEBUGPRINT() { + if [ -n "$verbose" ]; then + echo $* + fi +} + + +# MAIN Body +nerrors=0 +H5_HAVE_EMBEDDED_LIBINFO=`grep '#define H5_HAVE_EMBEDDED_LIBINFO ' ../src/H5pubconf.h` + +# The build (current) directory might be different than the source directory. +if test -z "$srcdir"; then + srcdir=. +fi + +# Skip the rest if embedded-libinfo is not enabled. +if [ -z "$H5_HAVE_EMBEDDED_LIBINFO" ]; then + echo "embedded-libinfo is not enabled. Test skipped." + exit 0 +fi +h5libsettings=../src/libhdf5.settings + +# Figure out library version numbers from the header file. +h5versmajor=`grep '#define H5_VERS_MAJOR' $srcdir/../src/H5public.h | cut -f2` +h5versminor=`grep '#define H5_VERS_MINOR' $srcdir/../src/H5public.h | cut -f2` +h5versrelease=`grep '#define H5_VERS_RELEASE' $srcdir/../src/H5public.h | cut -f2` +DEBUGPRINT $h5versmajor.$h5versminor.$h5versrelease + + +# Three Categories of tests: +# Normal: where the version numbers all matched (wrong_version == none). +# Mismatched version numbers (could be Major or minor version +# or release numbers or a combination of all three.) +# Test all the above with different values of the environment variable, +# HDF5_DISABLE_VERSION_CHECK, as unset, "", -1, 0, 1, 2, 3 + +for val_disable_version_check in unset "" -1 0 1 2 3; do + for wrong_version in none M m r Mm Mr mr; do + TESTING "$val_disable_version_check" "$wrong_version" + done +done + + +# Check and report results. +if [ $nerrors -gt 0 ]; then + echo "***$nerrors errors encountered***" + exit 1 +else + echo "No error encountered" + exit 0 +fi |