diff options
Diffstat (limited to 'tools/h5ls/testh5ls.sh.in')
-rw-r--r-- | tools/h5ls/testh5ls.sh.in | 436 |
1 files changed, 0 insertions, 436 deletions
diff --git a/tools/h5ls/testh5ls.sh.in b/tools/h5ls/testh5ls.sh.in deleted file mode 100644 index e72c875..0000000 --- a/tools/h5ls/testh5ls.sh.in +++ /dev/null @@ -1,436 +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 h5ls tool - -srcdir=@srcdir@ - -TESTNAME=h5ls -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -H5LS=h5ls # The tool name -H5LS_BIN=`pwd`/$H5LS # The path of the tool binary - -RM='rm -rf' -CMP='cmp -s' -DIFF='diff -c' -CP='cp' -NLINES=20 # Max. lines of output to display if test fails -DIRNAME='dirname' -LS='ls' -AWK='awk' - -WORDS_BIGENDIAN="@WORDS_BIGENDIAN@" - -nerrors=0 -verbose=yes -h5haveexitcode=yes # default is yes - -# source dirs -SRC_TOOLS="$srcdir/.." -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" - -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" - -TESTDIR=./testfiles -test -d $TESTDIR || mkdir $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. -# -------------------------------------------------------------------- -LIST_HDF5_TEST_FILES=" -$SRC_H5LS_TESTFILES/tall.h5 -$SRC_H5LS_TESTFILES/tarray1.h5 -$SRC_H5LS_TESTFILES/tattr2.h5 -$SRC_H5LS_TESTFILES/tattrreg.h5 -$SRC_H5LS_TESTFILES/tcompound.h5 -$SRC_H5LS_TESTFILES/tdatareg.h5 -$SRC_H5LS_TESTFILES/tdset.h5 -$SRC_H5LS_TESTFILES/tempty.h5 -$SRC_H5LS_TESTFILES/textlink.h5 -$SRC_H5LS_TESTFILES/textlinksrc.h5 -$SRC_H5LS_TESTFILES/textlinktar.h5 -$SRC_H5LS_TESTFILES/tgroup.h5 -$SRC_H5LS_TESTFILES/tgrp_comments.h5 -$SRC_H5LS_TESTFILES/thlink.h5 -$SRC_H5LS_TESTFILES/tloop.h5 -$SRC_H5LS_TESTFILES/tnestedcomp.h5 -$SRC_H5LS_TESTFILES/tsaf.h5 -$SRC_H5LS_TESTFILES/tslink.h5 -$SRC_H5LS_TESTFILES/tsoftlinks.h5 -$SRC_H5LS_TESTFILES/tstr.h5 -$SRC_H5LS_TESTFILES/tudlink.h5 -$SRC_H5LS_TESTFILES/tvldtypes1.h5 -$SRC_H5LS_TESTFILES/tdset_idx.h5 -" - -LIST_OTHER_TEST_FILES=" -$SRC_H5LS_TESTFILES/help-1.ls -$SRC_H5LS_TESTFILES/help-2.ls -$SRC_H5LS_TESTFILES/help-3.ls -$SRC_H5LS_TESTFILES/nosuchfile.ls -$SRC_H5LS_TESTFILES/tall-1.ls -$SRC_H5LS_TESTFILES/tall-2.ls -$SRC_H5LS_TESTFILES/tarray1.ls -$SRC_H5LS_TESTFILES/tattr2.ls -$SRC_H5LS_TESTFILES/tattrreg_le.ls -$SRC_H5LS_TESTFILES/tattrreg_be.ls -$SRC_H5LS_TESTFILES/tcomp-1.ls -$SRC_H5LS_TESTFILES/tdataregbe.ls -$SRC_H5LS_TESTFILES/tdataregle.ls -$SRC_H5LS_TESTFILES/tdset-1.ls -$SRC_H5LS_TESTFILES/tempty.ls -$SRC_H5LS_TESTFILES/textlink-1.ls -$SRC_H5LS_TESTFILES/textlinksrc-1.ls -$SRC_H5LS_TESTFILES/textlinksrc-2.ls -$SRC_H5LS_TESTFILES/textlinksrc-3.ls -$SRC_H5LS_TESTFILES/textlinksrc-4.ls -$SRC_H5LS_TESTFILES/textlinksrc-5.ls -$SRC_H5LS_TESTFILES/textlinksrc-6.ls -$SRC_H5LS_TESTFILES/textlinksrc-7.ls -$SRC_H5LS_TESTFILES/textlinksrc-1-old.ls -$SRC_H5LS_TESTFILES/textlinksrc-2-old.ls -$SRC_H5LS_TESTFILES/textlinksrc-3-old.ls -$SRC_H5LS_TESTFILES/textlinksrc-6-old.ls -$SRC_H5LS_TESTFILES/textlinksrc-7-old.ls -$SRC_H5LS_TESTFILES/tsoftlinks-1.ls -$SRC_H5LS_TESTFILES/tsoftlinks-2.ls -$SRC_H5LS_TESTFILES/tsoftlinks-3.ls -$SRC_H5LS_TESTFILES/tsoftlinks-4.ls -$SRC_H5LS_TESTFILES/tsoftlinks-5.ls -$SRC_H5LS_TESTFILES/textlinksrc-nodangle-1.ls -$SRC_H5LS_TESTFILES/textlinksrc-nodangle-2.ls -$SRC_H5LS_TESTFILES/tgrp_comments.ls -$SRC_H5LS_TESTFILES/tsoftlinks-nodangle-1.ls -$SRC_H5LS_TESTFILES/thlinks-nodangle-1.ls -$SRC_H5LS_TESTFILES/tgroup.ls -$SRC_H5LS_TESTFILES/tgroup-1.ls -$SRC_H5LS_TESTFILES/tgroup-2.ls -$SRC_H5LS_TESTFILES/tgroup-3.ls -$SRC_H5LS_TESTFILES/thlink-1.ls -$SRC_H5LS_TESTFILES/tloop-1.ls -$SRC_H5LS_TESTFILES/tmultifile.ls -$SRC_H5LS_TESTFILES/tnestcomp-1.ls -$SRC_H5LS_TESTFILES/tnestcomp-2.ls -$SRC_H5LS_TESTFILES/tnestcomp-3.ls -$SRC_H5LS_TESTFILES/tnestcomp-4.ls -$SRC_H5LS_TESTFILES/tsaf.ls -$SRC_H5LS_TESTFILES/tslink-1.ls -$SRC_H5LS_TESTFILES/tstr-1.ls -$SRC_H5LS_TESTFILES/tudlink-1.ls -$SRC_H5LS_TESTFILES/tvldtypes1.ls -$SRC_H5LS_TESTFILES/tvldtypes2le.ls -$SRC_H5LS_TESTFILES/tvldtypes2be.ls -$SRC_H5LS_TESTFILES/tdset_idx.ls -" - - -# RUNSERIAL is used. Check if it can return exit code from executalbe correctly. -if [ -n "$RUNSERIAL_NOEXITCODE" ]; then - echo "***Warning*** Serial Exit Code is not passed back to shell corretly." - echo "***Warning*** Exit code checking is skipped." - h5haveexitcode=no -fi - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES" - -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_H5LS_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 - -# Run a test and print PASS or *FAIL*. For now, if h5ls can complete -# with exit status 0, consider it pass. If a test fails then increment -# the `nerrors' global variable and (if $verbose is set) display up to $NLINS -# lines of the actual output from the tool test. The actual output is not -# removed if $HDF5_NOCLEANUP has a non-zero value. -# Arguemnts: -# $1 -- actual output filename to use -# $2 and on -- argument for the h5ls tool -TOOLTEST() { - expect="$TESTDIR/$1" - actual="$TESTDIR/`basename $1 .ls`.out" - actual_err="$TESTDIR/`basename $1 .ls`.err" - actual_sav=${actual}-sav - actual_err_sav=${actual_err}-sav - shift - retvalexpect=$1 - shift - - # Run test. - # Stderr is included in stdout so that the diff can detect - # any unexpected output from that stream too. - TESTING $H5LS $@ - ( - cd $TESTDIR - $RUNSERIAL $H5LS_BIN "$@" - ) >$actual 2>$actual_err - - exitcode=$? - # save actual and actual_err in case they are needed later. - cp $actual $actual_sav - STDOUT_FILTER $actual - cp $actual_err $actual_err_sav - STDERR_FILTER $actual_err - cat $actual_err >> $actual - if [ $h5haveexitcode = 'yes' -a $exitcode -ne $retvalexpect ]; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - if [ yes = "$verbose" ]; then - echo "test returned with exit code $exitcode" - echo "test output: (up to $NLINES lines)" - head -$NLINES $actual - echo "***end of test output***" - echo "" - fi - elif [ ! -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 differs from actual result" - 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 $actual_sav $actual_err_sav - fi -} - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -# Toss in a bunch of tests. Not sure if they are the right kinds. -# test the help syntax -TOOLTEST help-1.ls 0 -w80 -h -TOOLTEST help-2.ls 0 -w80 -help -TOOLTEST help-3.ls 0 -w80 -? - -# test simple command -TOOLTEST tall-1.ls 0 -w80 tall.h5 -TOOLTEST tall-2.ls 0 -w80 -r -d tall.h5 -TOOLTEST tgroup.ls 0 -w80 tgroup.h5 -TOOLTEST tgroup-3.ls 0 -w80 tgroup.h5/g1 - -# test for displaying groups -# The following combination of arguments is expected to return an error message -# and return value 1 -TOOLTEST tgroup-1.ls 1 -w80 -r -g tgroup.h5 -TOOLTEST tgroup-2.ls 0 -w80 -g tgroup.h5/g1 - -# test for files with groups that have long comments -TOOLTEST tgrp_comments.ls 0 -w80 -v -g tgrp_comments.h5/glongcomment - -# test for displaying simple space datasets -TOOLTEST tdset-1.ls 0 -w80 -r -d tdset.h5 - -# test for displaying soft links -TOOLTEST tslink-1.ls 0 -w80 -r tslink.h5 - -# test for displaying more soft links with --follow-symlinks -TOOLTEST tsoftlinks-1.ls 0 --follow-symlinks tsoftlinks.h5 -TOOLTEST tsoftlinks-2.ls 0 --follow-symlinks -r tsoftlinks.h5 -TOOLTEST tsoftlinks-3.ls 0 --follow-symlinks tsoftlinks.h5/group1 -TOOLTEST tsoftlinks-4.ls 0 --follow-symlinks -r tsoftlinks.h5/group1 -TOOLTEST tsoftlinks-5.ls 0 --follow-symlinks tsoftlinks.h5/soft_dset1 - -# test for displaying external and user-defined links with --follow-symlinks -TOOLTEST textlink-1.ls 0 -w80 -r textlink.h5 -TOOLTEST textlinksrc-1.ls 0 -w80 --follow-symlinks -r textlinksrc.h5 -TOOLTEST textlinksrc-2.ls 0 -w80 --follow-symlinks -rv textlinksrc.h5/ext_link5 -TOOLTEST textlinksrc-3.ls 0 -w80 --follow-symlinks -r textlinksrc.h5/ext_link1 -TOOLTEST textlinksrc-4.ls 0 -w80 -r textlinksrc.h5 -TOOLTEST textlinksrc-5.ls 0 -w80 -r textlinksrc.h5/ext_link1 -TOOLTEST textlinksrc-6.ls 0 -w80 --follow-symlinks textlinksrc.h5 -TOOLTEST textlinksrc-7.ls 0 -w80 --follow-symlinks textlinksrc.h5/ext_link1 -TOOLTEST tudlink-1.ls 0 -w80 -r tudlink.h5 - -# test for displaying external links with -E -# the option -E will be depriciated but keep it for backward compatibility -TOOLTEST textlinksrc-1-old.ls 0 -w80 -Er textlinksrc.h5 -TOOLTEST textlinksrc-2-old.ls 0 -w80 -Erv textlinksrc.h5/ext_link5 -TOOLTEST textlinksrc-3-old.ls 0 -w80 -Er textlinksrc.h5/ext_link1 -TOOLTEST textlinksrc-6-old.ls 0 -w80 -E textlinksrc.h5 -TOOLTEST textlinksrc-7-old.ls 0 -w80 -E textlinksrc.h5/ext_link1 - -# tests for no-dangling-links -# if this option is given on dangling link, h5ls should return exit code 1 -# when used alone , expect to print out help and return exit code 1 -TOOLTEST textlinksrc-nodangle-1.ls 1 -w80 --no-dangling-links textlinksrc.h5 -# external dangling link - expected exit code 1 -TOOLTEST textlinksrc-nodangle-2.ls 1 -w80 --follow-symlinks --no-dangling-links textlinksrc.h5 -# soft dangling link - expected exit code 1 -TOOLTEST tsoftlinks-nodangle-1.ls 1 -w80 --follow-symlinks --no-dangling-links tsoftlinks.h5 -# when used file with no dangling links - expected exit code 0 -TOOLTEST thlinks-nodangle-1.ls 0 -w80 --follow-symlinks --no-dangling-links thlink.h5 - -# test for wildcards in filename (does not work with cmake) -# this h5ls test script does not pass the filename properly like the h5dump test script??? -#TOOLTEST tstarfile.ls 0 -w80 t*link.h5 -#TOOLTEST tqmarkfile.ls 0 -w80 t?link.h5 -TOOLTEST tmultifile.ls 0 -w80 thlink.h5 tslink.h5 - -# tests for hard links -TOOLTEST thlink-1.ls 0 -w80 thlink.h5 - -# tests for compound data types -TOOLTEST tcomp-1.ls 0 -w80 -r -d tcompound.h5 - -#test for the nested compound type -TOOLTEST tnestcomp-1.ls 0 -w80 -r -d tnestedcomp.h5 - -TOOLTEST tnestcomp-2.ls 0 -w80 -r -d -S tnestedcomp.h5 - -TOOLTEST tnestcomp-3.ls 0 -w80 -r -d -l tnestedcomp.h5 - -TOOLTEST tnestcomp-4.ls 0 -w80 -r -d -l -S tnestedcomp.h5 - -# test for loop detection -TOOLTEST tloop-1.ls 0 -w80 -r -d tloop.h5 - -# test for string -TOOLTEST tstr-1.ls 0 -w80 -r -d tstr.h5 - -# test test file created from lib SAF team -TOOLTEST tsaf.ls 0 -w80 -r -d tsaf.h5 - -# test for variable length data types -TOOLTEST tvldtypes1.ls 0 -w80 -r -d tvldtypes1.h5 - -# test for array data types -TOOLTEST tarray1.ls 0 -w80 -r -d tarray1.h5 - -# test for empty data -TOOLTEST tempty.ls 0 -w80 -d tempty.h5 - -# test for all dataset types written to attributes -# enable -S for avoiding printing NATIVE types -TOOLTEST tattr2.ls 0 -w80 -v -S tattr2.h5 - -# test for attribute with region references without verbose mode -# ( HDFFV-7838, ) -if test $WORDS_BIGENDIAN != "yes"; then -TOOLTEST tattrreg_le.ls 0 -w80 -v -d tattrreg.h5 -else -TOOLTEST tattrreg_be.ls 0 -w80 -v -d tattrreg.h5 -fi - -# tests for error handling. -# test for non-existing file -TOOLTEST nosuchfile.ls 1 nosuchfile.h5 - -# test for variable length data types in verbose mode -if test $WORDS_BIGENDIAN != "yes"; then - TOOLTEST tvldtypes2le.ls 0 -v tvldtypes1.h5 -else - TOOLTEST tvldtypes2be.ls 0 -v tvldtypes1.h5 -fi - - -# test for dataset region references data types in verbose mode -if test $WORDS_BIGENDIAN != "yes"; then - TOOLTEST tdataregle.ls 0 -v tdatareg.h5 -else - TOOLTEST tdataregbe.ls 0 -v tdatareg.h5 -fi - -# test for file with datasets that use Fixed Array chunk indices -#echo "***skip testing tdset_idx.h5" -TOOLTEST tdset_idx.ls 0 -w80 -d tdset_idx.h5 - -# 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 |