summaryrefslogtreecommitdiffstats
path: root/test/testcheck_version.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'test/testcheck_version.sh.in')
-rw-r--r--test/testcheck_version.sh.in188
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