diff options
Diffstat (limited to 'tools/misc/testh5mkgrp.sh.in')
-rw-r--r-- | tools/misc/testh5mkgrp.sh.in | 325 |
1 files changed, 0 insertions, 325 deletions
diff --git a/tools/misc/testh5mkgrp.sh.in b/tools/misc/testh5mkgrp.sh.in deleted file mode 100644 index a0413e1..0000000 --- a/tools/misc/testh5mkgrp.sh.in +++ /dev/null @@ -1,325 +0,0 @@ -#! /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 h5mkgrp tool -# -# Quincey Koziol (koziol@hdfgroup.org) -# Tuesday, February 13, 2007 -# - -srcdir=@srcdir@ - -TESTNAME=h5mkgrp -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -H5MKGRP=h5mkgrp # The tool name -H5MKGRP_BIN=`pwd`/$H5MKGRP # The path of the tool binary -H5LS=h5ls # The h5ls tool name -H5LS_ARGS=-vr # Arguments to the h5ls tool -H5LS_BIN=`pwd`/../h5ls/$H5LS # The path of the h5ls tool binary - -RM='rm -rf' -CMP='cmp' -DIFF='diff -c' -CP='cp' -DIRNAME='dirname' -LS='ls' -AWK='awk' - -nerrors=0 -verbose=yes - -# source dirs -SRC_TOOLS="$srcdir/../" - -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" -# testfiles source dirs for tools -SRC_H5MKGRP_TESTFILES="$SRC_TOOLS/misc/testfiles" - -TESTDIR=./testgrp -test -d $TESTDIR || mkdir -p $TESTDIR - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- - -CMP='cmp -s' -DIFF='diff -c' - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES=" -$SRC_H5MKGRP_TESTFILES/h5mkgrp_help.txt -$SRC_TOOLS_TESTFILES/h5mkgrp_single.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_single_v.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_single_p.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_single_l.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_several.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_several_v.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_several_p.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_several_l.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_nested_p.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_nested_lp.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_nested_mult_p.ls -$SRC_TOOLS_TESTFILES/h5mkgrp_nested_mult_lp.ls -" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5MKGRP_TESTFILES - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - -# 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' -} - -# Source in the output filter function definitions. -. $srcdir/../../bin/output_filter.sh - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Verifying". -# -VERIFY_H5LS() -{ - SPACES=" " - echo "Verifying h5ls file structure $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Run a test and print PASS or *FAIL*. If h5mkgrp can complete -# with exit status 0, consider it pass. If a test fails then increment -# the `nerrors' global variable. -# Assumed arguments: -# $* arguments for h5mkgrp. - -TOOLTEST() -{ - TESTING $H5MKGRP $@ - ( - cd $TESTDIR - $RUNSERIAL $H5MKGRP_BIN $@ - ) > output.out - RET=$? - if [ $RET != 0 ]; then - echo "*FAILED*" - echo "failed result is:" - cat output.out - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f output.out - fi - fi -} - -# Call the h5ls tool to verify the correct output data in the destination file -# -H5LSTEST() -{ - expect="$TESTDIR/`basename $1 .h5`.ls" - actual="$TESTDIR/`basename $1 .h5`.out" - actual_sav=${actual}-sav - - # Stderr is included in stdout so that the diff can detect - # any unexpected output from that stream too. - VERIFY_H5LS $@ - ( - cd $TESTDIR - $RUNSERIAL $H5LS_BIN $H5LS_ARGS $@ - ) 2>&1 |sed 's/Modified:.*/Modified: XXXX-XX-XX XX:XX:XX XXX/' >$actual - - # save actual in case it is needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - STDERR_FILTER $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 (*.ls) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_sav - fi -} - -# Single run of tool -# -# Assumed arguments: -# $1 is test file name -# $2 is h5mkgrp options -# $* are groups to create -RUNTEST() -{ - FILEOUT=$1 - shift - H5MKGRP_ARGS=$1 - shift - - # Remove any output file left over from previous test run - rm -f $FILEOUT - - # Run test - TOOLTEST $H5MKGRP_ARGS $FILEOUT $@ - - # Verify that the file created above is correct - H5LSTEST $FILEOUT - - # Remove output file created, if the "no cleanup" environment variable is - # not defined - if test -z "$HDF5_NOCLEANUP"; then - rm -f $TESTDIR/$FILEOUT - fi -} - -# Single run of tool -# -# Assumed arguments: -# $1 is test expected output file -# $2 is h5mkgrp options -# $* are groups to create -CMPTEST() -{ - FILEOUT=$1 - expect="$TESTDIR/`basename $1 .h5`.txt" - actual="$TESTDIR/`basename $1 .h5`.out" - actual_err="$TESTDIR/`basename $1 .h5`.err" - shift - - # Stderr is included in stdout so that the diff can detect - # any unexpected output from that stream too. - TESTING $H5MKGRP $@ - ( - cd $TESTDIR - $RUNSERIAL $H5MKGRP_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 (*.txt) differs from actual result (*.out)" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err - fi -} - -############################################################################## -### T H E T E S T S ### -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -# Check that help & version is displayed properly -CMPTEST h5mkgrp_help.h5 "-h" -#CMPTEST h5mkgrp_version.h5 "-V" - -# Create single group at root level -RUNTEST h5mkgrp_single.h5 " " single -RUNTEST h5mkgrp_single_v.h5 "-v" single -RUNTEST h5mkgrp_single_p.h5 "-p" single -RUNTEST h5mkgrp_single_l.h5 "-l" latest - -# Create several groups at root level -RUNTEST h5mkgrp_several.h5 " " one two -RUNTEST h5mkgrp_several_v.h5 "-v" one two -RUNTEST h5mkgrp_several_p.h5 "-p" one two -RUNTEST h5mkgrp_several_l.h5 "-l" one two - -# Create various nested groups -RUNTEST h5mkgrp_nested_p.h5 "-p" /one/two -RUNTEST h5mkgrp_nested_lp.h5 "-lp" /one/two -RUNTEST h5mkgrp_nested_mult_p.h5 "-p" /one/two /three/four -RUNTEST h5mkgrp_nested_mult_lp.h5 "-lp" /one/two /three/four - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi |