1#! /bin/sh 2# 3# Copyright by The HDF Group. 4# Copyright by the Board of Trustees of the University of Illinois. 5# All rights reserved. 6# 7# This file is part of HDF5. The full HDF5 copyright notice, including 8# terms governing use, modification, and redistribution, is contained in 9# the COPYING file, which can be found at the root of the source code 10# distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. 11# If you do not have access to either file, you may request a copy from 12# help@hdfgroup.org. 13# 14# Tests for the h5diff tool 15# 16# Modification: 17# Albert Cheng, 2005/08/17 18# Added the SKIP feature. 19# Albert Cheng, 2005/2/3 20# Added -p option for parallel h5diff tests. 21# Pedro Vicente Nunes: 22# 10/25/2005: Added test #9 23# 11/27/2006: Added test #10, #11 24# Jonathan Kim: 25# Improved to use single line 26# Improved to check exit code (only serial mode, not necessary for parallel) 27# Added test 400 - 425 (links with --follow-symlinks option) 28# Added test 450 - 459 (dangling links) 29 30srcdir=@srcdir@ 31 32TESTNAME=h5diff 33EXIT_SUCCESS=0 34EXIT_FAILURE=1 35 36H5DIFF=../../src/h5diff/h5diff # The tool name 37H5DIFF_BIN=`pwd`/$H5DIFF # The path of the tool binary 38 39RM='rm -rf' 40CMP='cmp -s' 41DIFF='diff -c' 42CP='cp' 43DIRNAME='dirname' 44LS='ls' 45AWK='awk' 46 47nerrors=0 48verbose=yes 49h5haveexitcode=yes # default is yes 50pmode= # default to run h5diff tests 51mydomainname=`domainname 2>/dev/null` 52 53# source dirs 54SRC_TOOLS="$srcdir/../.." 55SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" 56# testfiles source dirs for tools 57SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" 58SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" 59SRC_H5DIFF_TESTFILES="$SRC_TOOLS/test/h5diff/testfiles" 60SRC_H5COPY_TESTFILES="$SRC_TOOLS/test/h5copy/testfiles" 61SRC_H5REPACK_TESTFILES="$SRC_TOOLS/test/h5repack/testfiles" 62SRC_H5JAM_TESTFILES="$SRC_TOOLS/test/h5jam/testfiles" 63SRC_H5STAT_TESTFILES="$SRC_TOOLS/test/h5stat/testfiles" 64SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/test/h5import/testfiles" 65 66TESTDIR=./testfiles 67test -d $TESTDIR || mkdir $TESTDIR 68 69###################################################################### 70# test files 71# -------------------------------------------------------------------- 72# All the test files copy from source directory to test directory 73# NOTE: Keep this framework to add/remove test files. 74# Any test files from other tools can be used in this framework. 75# This list are also used for checking exist. 76# Comment '#' without space can be used. 77# -------------------------------------------------------------------- 78LIST_HDF5_TEST_FILES=" 79$SRC_H5DIFF_TESTFILES/h5diff_basic1.h5 80$SRC_H5DIFF_TESTFILES/h5diff_basic2.h5 81$SRC_H5DIFF_TESTFILES/h5diff_types.h5 82$SRC_H5DIFF_TESTFILES/h5diff_dtypes.h5 83$SRC_H5DIFF_TESTFILES/h5diff_attr1.h5 84$SRC_H5DIFF_TESTFILES/h5diff_attr2.h5 85$SRC_H5DIFF_TESTFILES/h5diff_attr3.h5 86$SRC_H5DIFF_TESTFILES/h5diff_dset1.h5 87$SRC_H5DIFF_TESTFILES/h5diff_dset2.h5 88$SRC_H5DIFF_TESTFILES/h5diff_hyper1.h5 89$SRC_H5DIFF_TESTFILES/h5diff_hyper2.h5 90$SRC_H5DIFF_TESTFILES/h5diff_empty.h5 91$SRC_H5DIFF_TESTFILES/h5diff_links.h5 92$SRC_H5DIFF_TESTFILES/h5diff_softlinks.h5 93$SRC_H5DIFF_TESTFILES/h5diff_linked_softlink.h5 94$SRC_H5DIFF_TESTFILES/h5diff_extlink_src.h5 95$SRC_H5DIFF_TESTFILES/h5diff_extlink_trg.h5 96$SRC_H5DIFF_TESTFILES/h5diff_ext2softlink_src.h5 97$SRC_H5DIFF_TESTFILES/h5diff_ext2softlink_trg.h5 98$SRC_H5DIFF_TESTFILES/h5diff_dset_zero_dim_size1.h5 99$SRC_H5DIFF_TESTFILES/h5diff_dset_zero_dim_size2.h5 100$SRC_H5DIFF_TESTFILES/h5diff_danglelinks1.h5 101$SRC_H5DIFF_TESTFILES/h5diff_danglelinks2.h5 102$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse1.h5 103$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse2.h5 104$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext1.h5 105$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext2-1.h5 106$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext2-2.h5 107$SRC_H5DIFF_TESTFILES/h5diff_grp_recurse_ext2-3.h5 108$SRC_H5DIFF_TESTFILES/h5diff_exclude1-1.h5 109$SRC_H5DIFF_TESTFILES/h5diff_exclude1-2.h5 110$SRC_H5DIFF_TESTFILES/h5diff_exclude2-1.h5 111$SRC_H5DIFF_TESTFILES/h5diff_exclude2-2.h5 112$SRC_H5DIFF_TESTFILES/h5diff_exclude3-1.h5 113$SRC_H5DIFF_TESTFILES/h5diff_exclude3-2.h5 114$SRC_H5DIFF_TESTFILES/h5diff_comp_vl_strs.h5 115$SRC_H5DIFF_TESTFILES/compounds_array_vlen1.h5 116$SRC_H5DIFF_TESTFILES/compounds_array_vlen2.h5 117$SRC_H5DIFF_TESTFILES/h5diff_attr_v_level1.h5 118$SRC_H5DIFF_TESTFILES/h5diff_attr_v_level2.h5 119$SRC_H5DIFF_TESTFILES/h5diff_enum_invalid_values.h5 120$SRC_H5DIFF_TESTFILES/non_comparables1.h5 121$SRC_H5DIFF_TESTFILES/non_comparables2.h5 122$SRC_H5DIFF_TESTFILES/diff_strings1.h5 123$SRC_H5DIFF_TESTFILES/diff_strings2.h5 124$SRC_TOOLS_TESTFILES/tvlstr.h5 125" 126 127LIST_HDF5_VDS_TEST_FILES=" 128$SRC_TOOLS_TESTFILES/vds/1_a.h5 129$SRC_TOOLS_TESTFILES/vds/1_b.h5 130$SRC_TOOLS_TESTFILES/vds/1_c.h5 131$SRC_TOOLS_TESTFILES/vds/1_d.h5 132$SRC_TOOLS_TESTFILES/vds/1_e.h5 133$SRC_TOOLS_TESTFILES/vds/1_f.h5 134$SRC_TOOLS_TESTFILES/vds/1_vds.h5 135$SRC_TOOLS_TESTFILES/vds/2_a.h5 136$SRC_TOOLS_TESTFILES/vds/2_b.h5 137$SRC_TOOLS_TESTFILES/vds/2_c.h5 138$SRC_TOOLS_TESTFILES/vds/2_d.h5 139$SRC_TOOLS_TESTFILES/vds/2_e.h5 140$SRC_TOOLS_TESTFILES/vds/2_vds.h5 141$SRC_TOOLS_TESTFILES/vds/3_1_vds.h5 142$SRC_TOOLS_TESTFILES/vds/3_2_vds.h5 143$SRC_TOOLS_TESTFILES/vds/4_0.h5 144$SRC_TOOLS_TESTFILES/vds/4_1.h5 145$SRC_TOOLS_TESTFILES/vds/4_2.h5 146$SRC_TOOLS_TESTFILES/vds/4_vds.h5 147$SRC_TOOLS_TESTFILES/vds/5_a.h5 148$SRC_TOOLS_TESTFILES/vds/5_b.h5 149$SRC_TOOLS_TESTFILES/vds/5_c.h5 150$SRC_TOOLS_TESTFILES/vds/5_vds.h5 151" 152 153LIST_OTHER_TEST_FILES=" 154$SRC_H5DIFF_TESTFILES/h5diff_10.txt 155$SRC_H5DIFF_TESTFILES/h5diff_100.txt 156$SRC_H5DIFF_TESTFILES/h5diff_101.txt 157$SRC_H5DIFF_TESTFILES/h5diff_102.txt 158$SRC_H5DIFF_TESTFILES/h5diff_103.txt 159$SRC_H5DIFF_TESTFILES/h5diff_104.txt 160$SRC_H5DIFF_TESTFILES/h5diff_11.txt 161$SRC_H5DIFF_TESTFILES/h5diff_12.txt 162$SRC_H5DIFF_TESTFILES/h5diff_13.txt 163$SRC_H5DIFF_TESTFILES/h5diff_14.txt 164$SRC_H5DIFF_TESTFILES/h5diff_15.txt 165$SRC_H5DIFF_TESTFILES/h5diff_16_1.txt 166$SRC_H5DIFF_TESTFILES/h5diff_16_2.txt 167$SRC_H5DIFF_TESTFILES/h5diff_16_3.txt 168$SRC_H5DIFF_TESTFILES/h5diff_17.txt 169$SRC_H5DIFF_TESTFILES/h5diff_171.txt 170$SRC_H5DIFF_TESTFILES/h5diff_172.txt 171$SRC_H5DIFF_TESTFILES/h5diff_18_1.txt 172$SRC_H5DIFF_TESTFILES/h5diff_18.txt 173$SRC_H5DIFF_TESTFILES/h5diff_20.txt 174$SRC_H5DIFF_TESTFILES/h5diff_200.txt 175$SRC_H5DIFF_TESTFILES/h5diff_201.txt 176$SRC_H5DIFF_TESTFILES/h5diff_202.txt 177$SRC_H5DIFF_TESTFILES/h5diff_203.txt 178$SRC_H5DIFF_TESTFILES/h5diff_204.txt 179$SRC_H5DIFF_TESTFILES/h5diff_205.txt 180$SRC_H5DIFF_TESTFILES/h5diff_206.txt 181$SRC_H5DIFF_TESTFILES/h5diff_207.txt 182$SRC_H5DIFF_TESTFILES/h5diff_208.txt 183$SRC_H5DIFF_TESTFILES/h5diff_220.txt 184$SRC_H5DIFF_TESTFILES/h5diff_221.txt 185$SRC_H5DIFF_TESTFILES/h5diff_222.txt 186$SRC_H5DIFF_TESTFILES/h5diff_223.txt 187$SRC_H5DIFF_TESTFILES/h5diff_224.txt 188$SRC_H5DIFF_TESTFILES/h5diff_21.txt 189$SRC_H5DIFF_TESTFILES/h5diff_22.txt 190$SRC_H5DIFF_TESTFILES/h5diff_23.txt 191$SRC_H5DIFF_TESTFILES/h5diff_24.txt 192$SRC_H5DIFF_TESTFILES/h5diff_25.txt 193$SRC_H5DIFF_TESTFILES/h5diff_26.txt 194$SRC_H5DIFF_TESTFILES/h5diff_27.txt 195$SRC_H5DIFF_TESTFILES/h5diff_28.txt 196$SRC_H5DIFF_TESTFILES/h5diff_30.txt 197$SRC_H5DIFF_TESTFILES/h5diff_300.txt 198$SRC_H5DIFF_TESTFILES/h5diff_400.txt 199$SRC_H5DIFF_TESTFILES/h5diff_401.txt 200$SRC_H5DIFF_TESTFILES/h5diff_402.txt 201$SRC_H5DIFF_TESTFILES/h5diff_403.txt 202$SRC_H5DIFF_TESTFILES/h5diff_404.txt 203$SRC_H5DIFF_TESTFILES/h5diff_405.txt 204$SRC_H5DIFF_TESTFILES/h5diff_406.txt 205$SRC_H5DIFF_TESTFILES/h5diff_407.txt 206$SRC_H5DIFF_TESTFILES/h5diff_408.txt 207$SRC_H5DIFF_TESTFILES/h5diff_409.txt 208$SRC_H5DIFF_TESTFILES/h5diff_410.txt 209$SRC_H5DIFF_TESTFILES/h5diff_411.txt 210$SRC_H5DIFF_TESTFILES/h5diff_412.txt 211$SRC_H5DIFF_TESTFILES/h5diff_413.txt 212$SRC_H5DIFF_TESTFILES/h5diff_414.txt 213$SRC_H5DIFF_TESTFILES/h5diff_415.txt 214$SRC_H5DIFF_TESTFILES/h5diff_416.txt 215$SRC_H5DIFF_TESTFILES/h5diff_417.txt 216$SRC_H5DIFF_TESTFILES/h5diff_418.txt 217$SRC_H5DIFF_TESTFILES/h5diff_419.txt 218$SRC_H5DIFF_TESTFILES/h5diff_420.txt 219$SRC_H5DIFF_TESTFILES/h5diff_421.txt 220$SRC_H5DIFF_TESTFILES/h5diff_422.txt 221$SRC_H5DIFF_TESTFILES/h5diff_423.txt 222$SRC_H5DIFF_TESTFILES/h5diff_424.txt 223$SRC_H5DIFF_TESTFILES/h5diff_425.txt 224$SRC_H5DIFF_TESTFILES/h5diff_450.txt 225$SRC_H5DIFF_TESTFILES/h5diff_451.txt 226$SRC_H5DIFF_TESTFILES/h5diff_452.txt 227$SRC_H5DIFF_TESTFILES/h5diff_453.txt 228$SRC_H5DIFF_TESTFILES/h5diff_454.txt 229$SRC_H5DIFF_TESTFILES/dangling_link.err 230$SRC_H5DIFF_TESTFILES/h5diff_455.txt 231$SRC_H5DIFF_TESTFILES/h5diff_456.txt 232$SRC_H5DIFF_TESTFILES/h5diff_457.txt 233$SRC_H5DIFF_TESTFILES/h5diff_458.txt 234$SRC_H5DIFF_TESTFILES/h5diff_459.txt 235$SRC_H5DIFF_TESTFILES/h5diff_465.txt 236$SRC_H5DIFF_TESTFILES/h5diff_466.txt 237$SRC_H5DIFF_TESTFILES/h5diff_467.txt 238$SRC_H5DIFF_TESTFILES/h5diff_468.txt 239$SRC_H5DIFF_TESTFILES/h5diff_469.txt 240$SRC_H5DIFF_TESTFILES/h5diff_471.txt 241$SRC_H5DIFF_TESTFILES/h5diff_472.txt 242$SRC_H5DIFF_TESTFILES/h5diff_473.txt 243$SRC_H5DIFF_TESTFILES/h5diff_474.txt 244$SRC_H5DIFF_TESTFILES/h5diff_475.txt 245$SRC_H5DIFF_TESTFILES/h5diff_480.txt 246$SRC_H5DIFF_TESTFILES/h5diff_481.txt 247$SRC_H5DIFF_TESTFILES/h5diff_482.txt 248$SRC_H5DIFF_TESTFILES/h5diff_483.txt 249$SRC_H5DIFF_TESTFILES/h5diff_484.txt 250$SRC_H5DIFF_TESTFILES/h5diff_485.txt 251$SRC_H5DIFF_TESTFILES/h5diff_486.txt 252$SRC_H5DIFF_TESTFILES/h5diff_487.txt 253$SRC_H5DIFF_TESTFILES/h5diff_50.txt 254$SRC_H5DIFF_TESTFILES/h5diff_51.txt 255$SRC_H5DIFF_TESTFILES/h5diff_52.txt 256$SRC_H5DIFF_TESTFILES/h5diff_53.txt 257$SRC_H5DIFF_TESTFILES/h5diff_54.txt 258$SRC_H5DIFF_TESTFILES/h5diff_55.txt 259$SRC_H5DIFF_TESTFILES/h5diff_56.txt 260$SRC_H5DIFF_TESTFILES/h5diff_57.txt 261$SRC_H5DIFF_TESTFILES/h5diff_58.txt 262$SRC_H5DIFF_TESTFILES/h5diff_59.txt 263$SRC_H5DIFF_TESTFILES/h5diff_500.txt 264$SRC_H5DIFF_TESTFILES/h5diff_501.txt 265$SRC_H5DIFF_TESTFILES/h5diff_502.txt 266$SRC_H5DIFF_TESTFILES/h5diff_503.txt 267$SRC_H5DIFF_TESTFILES/h5diff_504.txt 268$SRC_H5DIFF_TESTFILES/h5diff_505.txt 269$SRC_H5DIFF_TESTFILES/h5diff_506.txt 270$SRC_H5DIFF_TESTFILES/h5diff_507.txt 271$SRC_H5DIFF_TESTFILES/h5diff_508.txt 272$SRC_H5DIFF_TESTFILES/h5diff_509.txt 273$SRC_H5DIFF_TESTFILES/h5diff_510.txt 274$SRC_H5DIFF_TESTFILES/h5diff_511.txt 275$SRC_H5DIFF_TESTFILES/h5diff_512.txt 276$SRC_H5DIFF_TESTFILES/h5diff_513.txt 277$SRC_H5DIFF_TESTFILES/h5diff_514.txt 278$SRC_H5DIFF_TESTFILES/h5diff_515.txt 279$SRC_H5DIFF_TESTFILES/h5diff_516.txt 280$SRC_H5DIFF_TESTFILES/h5diff_517.txt 281$SRC_H5DIFF_TESTFILES/h5diff_518.txt 282$SRC_H5DIFF_TESTFILES/h5diff_530.txt 283$SRC_H5DIFF_TESTFILES/h5diff_540.txt 284$SRC_H5DIFF_TESTFILES/h5diff_60.txt 285$SRC_H5DIFF_TESTFILES/h5diff_61.txt 286$SRC_H5DIFF_TESTFILES/h5diff_62.txt 287$SRC_H5DIFF_TESTFILES/h5diff_63.txt 288$SRC_H5DIFF_TESTFILES/h5diff_600.txt 289$SRC_H5DIFF_TESTFILES/h5diff_601.txt 290$SRC_H5DIFF_TESTFILES/h5diff_601_ERR.err 291$SRC_H5DIFF_TESTFILES/h5diff_603.txt 292$SRC_H5DIFF_TESTFILES/h5diff_604.txt 293$SRC_H5DIFF_TESTFILES/h5diff_605.txt 294$SRC_H5DIFF_TESTFILES/h5diff_606.txt 295$SRC_H5DIFF_TESTFILES/h5diff_607.txt 296$SRC_H5DIFF_TESTFILES/h5diff_608.txt 297$SRC_H5DIFF_TESTFILES/h5diff_609.txt 298$SRC_H5DIFF_TESTFILES/h5diff_610.txt 299$SRC_H5DIFF_TESTFILES/h5diff_612.txt 300$SRC_H5DIFF_TESTFILES/h5diff_613.txt 301$SRC_H5DIFF_TESTFILES/h5diff_614.txt 302$SRC_H5DIFF_TESTFILES/h5diff_615.txt 303$SRC_H5DIFF_TESTFILES/h5diff_616.txt 304$SRC_H5DIFF_TESTFILES/h5diff_617.txt 305$SRC_H5DIFF_TESTFILES/h5diff_618.txt 306$SRC_H5DIFF_TESTFILES/h5diff_619.txt 307$SRC_H5DIFF_TESTFILES/h5diff_621.txt 308$SRC_H5DIFF_TESTFILES/h5diff_622.txt 309$SRC_H5DIFF_TESTFILES/h5diff_623.txt 310$SRC_H5DIFF_TESTFILES/h5diff_624.txt 311$SRC_H5DIFF_TESTFILES/h5diff_625.txt 312$SRC_H5DIFF_TESTFILES/h5diff_626.txt 313$SRC_H5DIFF_TESTFILES/h5diff_627.txt 314$SRC_H5DIFF_TESTFILES/h5diff_628.txt 315$SRC_H5DIFF_TESTFILES/h5diff_629.txt 316$SRC_H5DIFF_TESTFILES/h5diff_630.txt 317$SRC_H5DIFF_TESTFILES/h5diff_631.txt 318$SRC_H5DIFF_TESTFILES/h5diff_640.txt 319$SRC_H5DIFF_TESTFILES/h5diff_641.txt 320$SRC_H5DIFF_TESTFILES/h5diff_642.txt 321$SRC_H5DIFF_TESTFILES/h5diff_643.txt 322$SRC_H5DIFF_TESTFILES/h5diff_644.txt 323$SRC_H5DIFF_TESTFILES/h5diff_645.txt 324$SRC_H5DIFF_TESTFILES/h5diff_646.txt 325$SRC_H5DIFF_TESTFILES/h5diff_70.txt 326$SRC_H5DIFF_TESTFILES/h5diff_700.txt 327$SRC_H5DIFF_TESTFILES/h5diff_701.txt 328$SRC_H5DIFF_TESTFILES/h5diff_702.txt 329$SRC_H5DIFF_TESTFILES/h5diff_703.txt 330$SRC_H5DIFF_TESTFILES/h5diff_704.txt 331$SRC_H5DIFF_TESTFILES/h5diff_705.txt 332$SRC_H5DIFF_TESTFILES/h5diff_706.txt 333$SRC_H5DIFF_TESTFILES/h5diff_707.txt 334$SRC_H5DIFF_TESTFILES/h5diff_708.txt 335$SRC_H5DIFF_TESTFILES/h5diff_709.txt 336$SRC_H5DIFF_TESTFILES/h5diff_710.txt 337$SRC_H5DIFF_TESTFILES/h5diff_80.txt 338$SRC_H5DIFF_TESTFILES/h5diff_90.txt 339$SRC_H5DIFF_TESTFILES/h5diff_8625.txt 340$SRC_H5DIFF_TESTFILES/h5diff_8639.txt 341$SRC_H5DIFF_TESTFILES/h5diff_v1.txt 342$SRC_H5DIFF_TESTFILES/h5diff_v2.txt 343$SRC_H5DIFF_TESTFILES/h5diff_v3.txt 344$SRC_H5DIFF_TESTFILES/h5diff_vlstr.txt 345" 346 347# 348# copy test files and expected output files from source dirs to test dir 349# 350COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_HDF5_VDS_TEST_FILES $LIST_OTHER_TEST_FILES $LIST_HDF5_TEST_FILES_XML $LIST_OTHER_TEST_FILES_XML" 351 352COPY_TESTFILES_TO_TESTDIR() 353{ 354 # copy test files. Used -f to make sure get a new copy 355 for tstfile in $COPY_TESTFILES 356 do 357 # ignore '#' comment 358 echo $tstfile | tr -d ' ' | grep '^#' > /dev/null 359 RET=$? 360 if [ $RET -eq 1 ]; then 361 # skip cp if srcdir is same as destdir 362 # this occurs when build/test performed in source dir and 363 # make cp fail 364 SDIR=`$DIRNAME $tstfile` 365 INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` 366 INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` 367 if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then 368 $CP -f $tstfile $TESTDIR 369 if [ $? -ne 0 ]; then 370 echo "Error: FAILED to copy $tstfile ." 371 372 # Comment out this to CREATE expected file 373 exit $EXIT_FAILURE 374 fi 375 fi 376 fi 377 done 378} 379 380CLEAN_TESTFILES_AND_TESTDIR() 381{ 382 # skip rm if srcdir is same as destdir 383 # this occurs when build/test performed in source dir and 384 # make cp fail 385 SDIR=$SRC_H5DIFF_TESTFILES 386 INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` 387 INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` 388 if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then 389 $RM $TESTDIR 390 else 391 # files in $LIST_HDF5_VDS_TEST_FILES are copied in from a different 392 # directory, so when srcdir is the same as destdir and $TESTDIR is 393 # not deleted, the copy n $TESTDIR of each file from 394 # $LIST_HDF5_VDS_TEST_FILES will need to be deleted. 395 for tstfile in $LIST_HDF5_VDS_TEST_FILES 396 do 397 # ignore '#' comment 398 echo $tstfile | tr -d ' ' | grep '^#' > /dev/null 399 RET=$? 400 if [ $RET -eq 1 ]; then 401 fname=`basename $tstfile` 402 rm $TESTDIR/$fname 403 fi 404 done 405 fi 406} 407 408# Parse option 409# -p run ph5diff tests 410# -h print help page 411while [ $# -gt 0 ]; do 412 case "$1" in 413 -p) # reset the tool name and bin to run ph5diff tests 414 TESTNAME=ph5diff 415 H5DIFF=../../src/h5diff/ph5diff # The tool name 416 H5DIFF_BIN=`pwd`/$H5DIFF # The path of the tool binary 417 pmode=yes 418 shift 419 ;; 420 -h) # print help page 421 echo "$0 [-p] [-h]" 422 echo " -p run ph5diff tests" 423 echo " -h print help page" 424 shift 425 exit 0 426 ;; 427 *) # unknown option 428 echo "$0: Unknown option ($1)" 429 exit 1 430 ;; 431 esac 432done 433 434# RUNSERIAL is used. Check if it can return exit code from executalbe correctly. 435if [ -n "$RUNSERIAL_NOEXITCODE" ]; then 436 echo "***Warning*** Serial Exit Code is not passed back to shell corretly." 437 echo "***Warning*** Exit code checking is skipped." 438 h5haveexitcode=no 439fi 440 441# Print a line-line message left justified in a field of 70 characters 442# beginning with the word "Testing". 443# 444TESTING() { 445 SPACES=" " 446 echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' 447} 448 449# Source in the output filter function definitions. 450. $srcdir/../../../bin/output_filter.sh 451 452# Run a test and print PASS or *FAIL*. If a test fails then increment 453# the `nerrors' global variable and (if $verbose is set) display the 454# difference between the actual output and the expected output. The 455# expected output is given as the first argument to this function and 456# the actual output file is calculated by replacing the `.ddl' with 457# `.out'. The actual output is not removed if $HDF5_NOCLEANUP has a 458# non-zero value. 459# 460# Need eval before the RUNCMD command because some machines like 461# AIX, has RUNPARALLEL in the style as 462# MP_PROCS=3 MP_TASKS_PER_NODE=3 poe ./a.out 463# that throws the shell script off. 464# 465TOOLTEST() { 466 expect="$TESTDIR/$1" 467 expect_err="$TESTDIR/`basename $1 .txt`.err" 468 actual="$TESTDIR/`basename $1 .txt`.out" 469 actual_err="$TESTDIR/`basename $1 .txt`.out.err" 470 actual_sav=${actual}-sav 471 actual_err_sav=${actual_err}-sav 472 shift 473 if test -n "$pmode"; then 474 RUNCMD=$RUNPARALLEL 475 else 476 RUNCMD=$RUNSERIAL 477 fi 478 479 # Run test. 480 TESTING $H5DIFF $@ 481 ( 482 #echo "#############################" 483 #echo "Expected output for '$H5DIFF $@'" 484 #echo "#############################" 485 cd $TESTDIR 486 eval $RUNCMD $H5DIFF_BIN "$@" 487 ) >$actual 2>$actual_err 488 EXIT_CODE=$? 489 # save actual and actual_err in case they are needed later. 490 cp $actual $actual_sav 491 STDOUT_FILTER $actual 492 cp $actual_err $actual_err_sav 493 STDERR_FILTER $actual_err 494 # don't add exit code check in pmode, as it causes failure. (exit code 495 # is from mpirun not tool) 496 # if any problem occurs relate to an exit code, it will be caught in 497 # serial mode, so the test is fullfilled. 498 if test $h5haveexitcode = 'yes' -a -z "$pmode"; then 499 echo "EXIT CODE: $EXIT_CODE" >> $actual 500 fi 501 502 if [ ! -f $expect ]; then 503 # Create the expect file if it doesn't yet exist. 504 echo " CREATED" 505 cp $actual $expect 506 echo " Expected result (*.ddl) missing" 507 nerrors="`expr $nerrors + 1`" 508 elif $CMP $expect $actual; then 509 echo " PASSED" 510 elif test $h5haveexitcode = 'yes' -a -z "$pmode"; then 511 echo "*FAILED*" 512 echo " Expected result ($expect) differs from actual result ($actual)" 513 nerrors="`expr $nerrors + 1`" 514 test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' 515 else 516 # parallel mode output are often of different ordering from serial 517 # output. If the sorted expected and actual files compare the same, 518 # it is safe to assume the actual output match the expected file. 519 expect_sorted=expect_sorted 520 actual_sorted=actual_sorted 521 sort $expect -o $expect_sorted 522 sort $actual -o $actual_sorted 523 # remove "EXIT CODE:" line from expect file. test for exit code 524 # is done by serial mode. 525 grep -v "EXIT CODE:" $expect_sorted > $expect_sorted.noexit 526 mv $expect_sorted.noexit $expect_sorted 527 if $CMP $expect_sorted $actual_sorted; then 528 echo " PASSED" 529 else 530 echo "*FAILED*" 531 nerrors="`expr $nerrors + 1`" 532 if test yes = "$verbose"; then 533 echo "====Expected result ($expect_sorted) differs from actual result ($actual_sorted)" 534 $DIFF $expect_sorted $actual_sorted |sed 's/^/ /' 535 echo "====The actual output ($actual_sav)" 536 sed 's/^/ /' < $actual_sav 537 echo "====The actual stderr ($actual_err_sav)" 538 sed 's/^/ /' < $actual_err_sav 539 echo "====End of actual stderr ($actual_err_sav)" 540 echo "" 541 fi 542 fi 543 fi 544 545 # Clean up output file 546 if test -z "$HDF5_NOCLEANUP"; then 547 rm -f $actual $actual_err $actual_sav $actual_err_sav 548 rm -f $actual_sorted $expect_sorted 549 fi 550} 551 552 553# Print a "SKIP" message 554SKIP() { 555 TESTING $H5DIFF $@ 556 echo " -SKIP-" 557} 558 559 560 561############################################################################## 562# The tests 563# To avoid the printing of the complete full path of the test file, that hides 564# all the other parameters for long paths, the printing of the command line 565# is done first in 566# TESTING with the name only of the test file $TOOL, not its full path $TESTFILE 567############################################################################## 568# prepare for test 569COPY_TESTFILES_TO_TESTDIR 570# second copy of tvlstr.h5 571$CP -f $SRC_TOOLS_TESTFILES/tvlstr.h5 $TESTDIR/tvlstr2.h5 572 573# ############################################################################ 574# # Common usage 575# ############################################################################ 576 577# 1.0 578TOOLTEST h5diff_10.txt -h 579 580# 1.1 normal mode 581TOOLTEST h5diff_11.txt h5diff_basic1.h5 h5diff_basic2.h5 582 583# 1.2 normal mode with objects 584TOOLTEST h5diff_12.txt h5diff_basic1.h5 h5diff_basic2.h5 g1/dset1 g1/dset2 585 586# 1.3 report mode 587TOOLTEST h5diff_13.txt -r h5diff_basic1.h5 h5diff_basic2.h5 588 589# 1.4 report mode with objects 590TOOLTEST h5diff_14.txt -r h5diff_basic1.h5 h5diff_basic2.h5 g1/dset1 g1/dset2 591 592# 1.5 with -d 593TOOLTEST h5diff_15.txt --report --delta=5 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 594 595# 1.6.1 with -p (int) 596TOOLTEST h5diff_16_1.txt -v -p 0.02 h5diff_basic1.h5 h5diff_basic1.h5 g1/dset5 g1/dset6 597 598# 1.6.2 with -p (unsigned long_long) 599TOOLTEST h5diff_16_2.txt --verbose --relative=0.02 h5diff_basic1.h5 h5diff_basic1.h5 g1/dset7 g1/dset8 600 601# 1.6.3 with -p (double) 602TOOLTEST h5diff_16_3.txt -v -p 0.02 h5diff_basic1.h5 h5diff_basic1.h5 g1/dset9 g1/dset10 603 604# 1.7 verbose mode 605TOOLTEST h5diff_17.txt -v h5diff_basic1.h5 h5diff_basic2.h5 606 607# 1.7 test 32-bit INFINITY 608TOOLTEST h5diff_171.txt -v h5diff_basic1.h5 h5diff_basic1.h5 /g1/fp19 /g1/fp19_COPY 609 610# 1.7 test 64-bit INFINITY 611TOOLTEST h5diff_172.txt -v h5diff_basic1.h5 h5diff_basic1.h5 /g1/fp20 /g1/fp20_COPY 612 613# 1.8 quiet mode 614TOOLTEST h5diff_18.txt -q h5diff_basic1.h5 h5diff_basic2.h5 615 616# 1.8 -v and -q 617TOOLTEST h5diff_18_1.txt -v -q h5diff_basic1.h5 h5diff_basic2.h5 618 619 620# ############################################################################## 621# # not comparable types 622# ############################################################################## 623 624# 2.0 625TOOLTEST h5diff_20.txt -v h5diff_types.h5 h5diff_types.h5 dset g1 626 627# 2.1 628TOOLTEST h5diff_21.txt -v h5diff_types.h5 h5diff_types.h5 dset l1 629 630# 2.2 631TOOLTEST h5diff_22.txt -v h5diff_types.h5 h5diff_types.h5 dset t1 632 633# ############################################################################## 634# # compare groups, types, links (no differences and differences) 635# ############################################################################## 636 637# 2.3 638TOOLTEST h5diff_23.txt -v h5diff_types.h5 h5diff_types.h5 g1 g1 639 640# 2.4 641TOOLTEST h5diff_24.txt -v h5diff_types.h5 h5diff_types.h5 t1 t1 642 643# 2.5 644TOOLTEST h5diff_25.txt -v h5diff_types.h5 h5diff_types.h5 l1 l1 645 646# 2.6 647TOOLTEST h5diff_26.txt -v h5diff_types.h5 h5diff_types.h5 g1 g2 648 649# 2.7 650TOOLTEST h5diff_27.txt -v h5diff_types.h5 h5diff_types.h5 t1 t2 651 652# 2.8 653TOOLTEST h5diff_28.txt -v h5diff_types.h5 h5diff_types.h5 l1 l2 654 655 656# ############################################################################## 657# # Enum value tests (may become more comprehensive in the future) 658# ############################################################################## 659 660# 3.0 661# test enum types which may have invalid values 662TOOLTEST h5diff_30.txt -v h5diff_enum_invalid_values.h5 h5diff_enum_invalid_values.h5 dset1 dset2 663 664 665# ############################################################################## 666# # Dataset datatypes 667# ############################################################################## 668 669# 5.0 670TOOLTEST h5diff_50.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset0a dset0b 671 672# 5.1 673TOOLTEST h5diff_51.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset1a dset1b 674 675# 5.2 676TOOLTEST h5diff_52.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset2a dset2b 677 678# 5.3 679TOOLTEST h5diff_53.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset3a dset4b 680 681# 5.4 682TOOLTEST h5diff_54.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset4a dset4b 683 684# 5.5 685TOOLTEST h5diff_55.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset5a dset5b 686 687# 5.6 688TOOLTEST h5diff_56.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset6a dset6b 689 690# 5.7 691TOOLTEST h5diff_57.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset7a dset7b 692 693# 5.8 (region reference) 694TOOLTEST h5diff_58.txt -v h5diff_dset1.h5 h5diff_dset2.h5 refreg 695 696# test for both dset and attr with same type but with different size 697# ( HDDFV-7942 ) 698TOOLTEST h5diff_59.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset11a dset11b 699 700# Strings 701# ( HDFFV-10128 ) 702TOOLTEST h5diff_60.txt -v diff_strings1.h5 diff_strings2.h5 string1 string1 703TOOLTEST h5diff_61.txt -v diff_strings1.h5 diff_strings2.h5 string2 string2 704TOOLTEST h5diff_62.txt -v diff_strings1.h5 diff_strings2.h5 string3 string3 705TOOLTEST h5diff_63.txt -v diff_strings1.h5 diff_strings2.h5 string4 string4 706 707# ############################################################################## 708# # Error messages 709# ############################################################################## 710 711 712# 6.0: Check if the command line number of arguments is less than 3 713TOOLTEST h5diff_600.txt h5diff_basic1.h5 714 715# 6.1: Check if non-exist object name is specified 716TOOLTEST h5diff_601.txt h5diff_basic1.h5 h5diff_basic1.h5 nono_obj 717 718 719# ############################################################################## 720# # -d 721# ############################################################################## 722 723 724# 6.3: negative value 725TOOLTEST h5diff_603.txt -d -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 726 727# 6.4: zero 728TOOLTEST h5diff_604.txt -d 0 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 729 730# 6.5: non number 731TOOLTEST h5diff_605.txt -d u h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 732 733# 6.6: hexadecimal 734TOOLTEST h5diff_606.txt -d 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 735 736# 6.7: string 737TOOLTEST h5diff_607.txt -d "1" h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 738 739# 6.8: use system epsilon 740TOOLTEST h5diff_608.txt --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 741 742# 6.9: number larger than biggest difference 743TOOLTEST h5diff_609.txt -d 200 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 744 745# 6.10: number smaller than smallest difference 746TOOLTEST h5diff_610.txt -d 1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 747 748 749# ############################################################################## 750# # -p 751# ############################################################################## 752 753 754# 6.12: negative value 755TOOLTEST h5diff_612.txt -p -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 756 757# 6.13: zero 758TOOLTEST h5diff_613.txt -p 0 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 759 760# 6.14: non number 761TOOLTEST h5diff_614.txt -p u h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 762 763# 6.15: hexadecimal 764TOOLTEST h5diff_615.txt -p 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 765 766# 6.16: string 767TOOLTEST h5diff_616.txt -p "0.21" h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 768 769# 6.17: repeated option 770TOOLTEST h5diff_617.txt -p 0.21 -p 0.22 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 771 772# 6.18: number larger than biggest difference 773TOOLTEST h5diff_618.txt -p 2 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 774 775# 6.19: number smaller than smallest difference 776TOOLTEST h5diff_619.txt -p 0.005 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 777 778# ############################################################################## 779# # -n 780# ############################################################################## 781 782# 6.21: negative value 783TOOLTEST h5diff_621.txt -n -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 784 785# 6.22: zero 786TOOLTEST h5diff_622.txt -n 0 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 787 788# 6.23: non number 789TOOLTEST h5diff_623.txt -n u h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 790 791# 6.24: hexadecimal 792TOOLTEST h5diff_624.txt -n 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 793 794# 6.25: string 795TOOLTEST h5diff_625.txt -n "2" h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 796 797# 6.26: repeated option 798TOOLTEST h5diff_626.txt -n 2 -n 3 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 799 800# 6.27: number larger than biggest difference 801TOOLTEST h5diff_627.txt --count=200 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 802 803# 6.28: number smaller than smallest difference 804TOOLTEST h5diff_628.txt -n 1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 805 806# Disabling this test as it hangs - LRK 20090618 807# 6.29 non valid files 808#TOOLTEST h5diff_629.txt file1.h6 file2.h6 809 810# ############################################################################## 811# # NaN 812# ############################################################################## 813# 6.30: test (NaN == NaN) must be true based on our documentation -- XCAO 814TOOLTEST h5diff_630.txt -v -d "0.0001" h5diff_basic1.h5 h5diff_basic1.h5 g1/fp18 g1/fp18_COPY 815TOOLTEST h5diff_631.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/fp18 g1/fp18_COPY 816 817 818# ############################################################################## 819# 7. attributes 820# ############################################################################## 821TOOLTEST h5diff_70.txt -v h5diff_attr1.h5 h5diff_attr2.h5 822 823# ################################################## 824# attrs with verbose option level 825# ################################################## 826TOOLTEST h5diff_700.txt -v1 h5diff_attr1.h5 h5diff_attr2.h5 827TOOLTEST h5diff_701.txt -v2 h5diff_attr1.h5 h5diff_attr2.h5 828TOOLTEST h5diff_702.txt --verbose=1 h5diff_attr1.h5 h5diff_attr2.h5 829TOOLTEST h5diff_703.txt --verbose=2 h5diff_attr1.h5 h5diff_attr2.h5 830 831# same attr number , all same attr name 832TOOLTEST h5diff_704.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g 833 834# same attr number , some same attr name 835TOOLTEST h5diff_705.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /dset 836 837# same attr number , all different attr name 838TOOLTEST h5diff_706.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /ntype 839 840# different attr number , same attr name (intersected) 841TOOLTEST h5diff_707.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g2 842 843# different attr number , all different attr name 844TOOLTEST h5diff_708.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g3 845 846# when no attributes exist in both objects 847TOOLTEST h5diff_709.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g4 848 849# file vs file 850TOOLTEST h5diff_710.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 851 852# ############################################################################## 853# 8. all dataset datatypes 854# ############################################################################## 855TOOLTEST h5diff_80.txt -v h5diff_dset1.h5 h5diff_dset2.h5 856 857# 9. compare a file with itself 858TOOLTEST h5diff_90.txt -v h5diff_basic2.h5 h5diff_basic2.h5 859 860# 10. read by hyperslab, print indexes 861TOOLTEST h5diff_100.txt -v h5diff_hyper1.h5 h5diff_hyper2.h5 862 863# 11. floating point comparison 864# double value 865TOOLTEST h5diff_101.txt -v h5diff_basic1.h5 h5diff_basic1.h5 g1/d1 g1/d2 866 867# float value 868TOOLTEST h5diff_102.txt -v h5diff_basic1.h5 h5diff_basic1.h5 g1/fp1 g1/fp2 869 870# with --use-system-epsilon for double value 871TOOLTEST h5diff_103.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/d1 g1/d2 872 873# with --use-system-epsilon for float value 874TOOLTEST h5diff_104.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/fp1 g1/fp2 875 876# not comparable -c flag 877TOOLTEST h5diff_200.txt h5diff_basic2.h5 h5diff_basic2.h5 g2/dset1 g2/dset2 878 879TOOLTEST h5diff_201.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset1 g2/dset2 880 881TOOLTEST h5diff_202.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset2 g2/dset3 882 883TOOLTEST h5diff_203.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset3 g2/dset4 884 885TOOLTEST h5diff_204.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset4 g2/dset5 886 887TOOLTEST h5diff_205.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset5 g2/dset6 888 889# not comparable in compound 890TOOLTEST h5diff_206.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset7 g2/dset8 891 892TOOLTEST h5diff_207.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset8 g2/dset9 893 894# not comparable in dataspace of zero dimension size 895TOOLTEST h5diff_208.txt -c h5diff_dset_zero_dim_size1.h5 h5diff_dset_zero_dim_size2.h5 896 897# non-comparable dataset with comparable attribute, and other comparable datasets. 898# Also test non-compatible attributes with different type, dimention, rank. 899# All the comparables should display differences. 900TOOLTEST h5diff_220.txt -c non_comparables1.h5 non_comparables2.h5 /g1 901 902# comparable dataset with non-comparable attribute and other comparable attributes. 903# All the comparables should display differences. 904TOOLTEST h5diff_221.txt -c non_comparables1.h5 non_comparables2.h5 /g2 905 906# entire file 907# All the comparables should display differences. 908TOOLTEST h5diff_222.txt -c non_comparables1.h5 non_comparables2.h5 909 910# non-comparable test for common objects (same name) with different object types 911# (HDFFV-7644) 912TOOLTEST h5diff_223.txt -c non_comparables1.h5 non_comparables2.h5 /diffobjtypes 913# swap files 914TOOLTEST h5diff_224.txt -c non_comparables2.h5 non_comparables1.h5 /diffobjtypes 915 916# ############################################################################## 917# # Links compare without --follow-symlinks nor --no-dangling-links 918# ############################################################################## 919# test for bug1749 920TOOLTEST h5diff_300.txt -v h5diff_links.h5 h5diff_links.h5 /link_g1 /link_g2 921 922# ############################################################################## 923# # Links compare with --follow-symlinks Only 924# ############################################################################## 925# soft links file to file 926TOOLTEST h5diff_400.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 927 928# softlink vs dset" 929TOOLTEST h5diff_401.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset1_1 /target_dset2 930 931# dset vs softlink" 932TOOLTEST h5diff_402.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /target_dset2 /softlink_dset1_1 933 934# softlink vs softlink" 935TOOLTEST h5diff_403.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset1_1 /softlink_dset2 936 937# extlink vs extlink (FILE)" 938TOOLTEST h5diff_404.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 939 940# extlink vs dset" 941TOOLTEST h5diff_405.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_trg.h5 /ext_link_dset1 /target_group2/x_dset 942 943# dset vs extlink" 944TOOLTEST h5diff_406.txt --follow-symlinks -v h5diff_extlink_trg.h5 h5diff_extlink_src.h5 /target_group2/x_dset /ext_link_dset1 945 946# extlink vs extlink" 947TOOLTEST h5diff_407.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_dset2 948 949# softlink vs extlink" 950TOOLTEST h5diff_408.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_extlink_src.h5 /softlink_dset1_1 /ext_link_dset2 951 952# extlink vs softlink " 953TOOLTEST h5diff_409.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_softlinks.h5 /ext_link_dset2 /softlink_dset1_1 954 955# linked_softlink vs linked_softlink (FILE)" 956TOOLTEST h5diff_410.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 957 958# dset2 vs linked_softlink_dset1" 959TOOLTEST h5diff_411.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /target_dset2 /softlink1_to_slink2 960 961# linked_softlink_dset1 vs dset2" 962TOOLTEST h5diff_412.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink1_to_slink2 /target_dset2 963 964# linked_softlink_to_dset1 vs linked_softlink_to_dset2" 965TOOLTEST h5diff_413.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink1_to_slink2 /softlink2_to_slink2 966 967# group vs linked_softlink_group1" 968TOOLTEST h5diff_414.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /target_group /softlink3_to_slink2 969 970# linked_softlink_group1 vs group" 971TOOLTEST h5diff_415.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink3_to_slink2 /target_group 972 973# linked_softlink_to_group1 vs linked_softlink_to_group2" 974TOOLTEST h5diff_416.txt --follow-symlinks -v h5diff_linked_softlink.h5 h5diff_linked_softlink.h5 /softlink3_to_slink2 /softlink4_to_slink2 975 976# non-exist-softlink vs softlink" 977TOOLTEST h5diff_417.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_noexist /softlink_dset2 978 979# softlink vs non-exist-softlink" 980TOOLTEST h5diff_418.txt --follow-symlinks -v h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset2 /softlink_noexist 981 982# non-exist-extlink_file vs extlink" 983TOOLTEST h5diff_419.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_noexist2 /ext_link_dset2 984 985# exlink vs non-exist-extlink_file" 986TOOLTEST h5diff_420.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset2 /ext_link_noexist2 987 988# extlink vs non-exist-extlink_obj" 989TOOLTEST h5diff_421.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset2 /ext_link_noexist1 990 991# non-exist-extlink_obj vs extlink" 992TOOLTEST h5diff_422.txt --follow-symlinks -v h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_noexist1 /ext_link_dset2 993 994# extlink_to_softlink_to_dset1 vs dset2" 995TOOLTEST h5diff_423.txt --follow-symlinks -v h5diff_ext2softlink_src.h5 h5diff_ext2softlink_trg.h5 /ext_link_to_slink1 /dset2 996 997# dset2 vs extlink_to_softlink_to_dset1" 998TOOLTEST h5diff_424.txt --follow-symlinks -v h5diff_ext2softlink_trg.h5 h5diff_ext2softlink_src.h5 /dset2 /ext_link_to_slink1 999 1000# extlink_to_softlink_to_dset1 vs extlink_to_softlink_to_dset2" 1001TOOLTEST h5diff_425.txt --follow-symlinks -v h5diff_ext2softlink_src.h5 h5diff_ext2softlink_src.h5 /ext_link_to_slink1 /ext_link_to_slink2 1002 1003# ############################################################################## 1004# # Dangling links compare (--follow-symlinks and --no-dangling-links) 1005# ############################################################################## 1006# dangling links --follow-symlinks (FILE to FILE) 1007TOOLTEST h5diff_450.txt --follow-symlinks -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 1008 1009# dangling links --follow-symlinks and --no-dangling-links (FILE to FILE) 1010TOOLTEST h5diff_451.txt --follow-symlinks -v --no-dangling-links h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 1011 1012# try --no-dangling-links without --follow-symlinks options 1013TOOLTEST h5diff_452.txt --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 1014 1015# dangling link found for soft links (FILE to FILE) 1016TOOLTEST h5diff_453.txt --follow-symlinks -v --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 1017 1018# dangling link found for soft links (obj to obj) 1019TOOLTEST h5diff_454.txt --follow-symlinks -v --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset2 /softlink_noexist 1020 1021# dangling link found for soft links (obj to obj) Both dangle links 1022TOOLTEST h5diff_455.txt --follow-symlinks -v --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_noexist /softlink_noexist 1023 1024# dangling link found for ext links (FILE to FILE) 1025TOOLTEST h5diff_456.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 1026 1027# dangling link found for ext links (obj to obj). target file exist 1028TOOLTEST h5diff_457.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_noexist1 1029 1030# dangling link found for ext links (obj to obj). target file NOT exist 1031TOOLTEST h5diff_458.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_noexist2 1032 1033# dangling link found for ext links (obj to obj). Both dangle links 1034TOOLTEST h5diff_459.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_noexist1 /ext_link_noexist2 1035 1036# dangling link --follow-symlinks (obj vs obj) 1037# (HDFFV-7836) 1038TOOLTEST h5diff_465.txt --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1 1039# (HDFFV-7835) 1040# soft dangling vs. soft dangling 1041TOOLTEST h5diff_466.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1 1042# soft link vs. soft dangling 1043TOOLTEST h5diff_467.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link2 1044# ext dangling vs. ext dangling 1045TOOLTEST h5diff_468.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link4 1046# ext link vs. ext dangling 1047TOOLTEST h5diff_469.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link2 1048 1049#---------------------------------------- 1050# dangling links without follow symlink 1051# (HDFFV-7998) 1052# test - soft dangle links (same and different paths), 1053# - external dangle links (same and different paths) 1054TOOLTEST h5diff_471.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 1055TOOLTEST h5diff_472.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1 1056TOOLTEST h5diff_473.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link4 1057TOOLTEST h5diff_474.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link4 1058TOOLTEST h5diff_475.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link1 1059 1060# ############################################################################## 1061# # test for group diff recursivly 1062# ############################################################################## 1063# root 1064TOOLTEST h5diff_500.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 / / 1065TOOLTEST h5diff_501.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 / / 1066 1067# root vs group 1068TOOLTEST h5diff_502.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 / /grp1/grp2/grp3 1069 1070# group vs group (same name and structure) 1071TOOLTEST h5diff_503.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /grp1 1072 1073# group vs group (different name and structure) 1074TOOLTEST h5diff_504.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1/grp2 /grp1/grp2/grp3 1075 1076# groups vs soft-link 1077TOOLTEST h5diff_505.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /slink_grp1 1078TOOLTEST h5diff_506.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1/grp2 /slink_grp2 1079 1080# groups vs ext-link 1081TOOLTEST h5diff_507.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /elink_grp1 1082TOOLTEST h5diff_508.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp1 /elink_grp1 1083 1084# soft-link vs ext-link 1085TOOLTEST h5diff_509.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp1 /elink_grp1 1086TOOLTEST h5diff_510.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp1 /elink_grp1 1087 1088# circled ext links 1089TOOLTEST h5diff_511.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp10 /grp11 1090TOOLTEST h5diff_512.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /grp10 /grp11 1091 1092# circled soft2ext-link vs soft2ext-link 1093TOOLTEST h5diff_513.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp10 /slink_grp11 1094TOOLTEST h5diff_514.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp10 /slink_grp11 1095 1096############################################################################### 1097# Test for group recursive diff via multi-linked external links 1098# With follow-symlinks, file h5diff_grp_recurse_ext1.h5 and h5diff_grp_recurse_ext2-1.h5 should 1099# be same with the external links. 1100############################################################################### 1101# file vs file 1102TOOLTEST h5diff_515.txt -v h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5 1103TOOLTEST h5diff_516.txt -v --follow-symlinks h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5 1104# group vs group 1105TOOLTEST h5diff_517.txt -v h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5 /g1 1106TOOLTEST h5diff_518.txt -v --follow-symlinks h5diff_grp_recurse_ext1.h5 h5diff_grp_recurse_ext2-1.h5 /g1 1107 1108# ############################################################################## 1109# # Exclude objects (--exclude-path) 1110# ############################################################################## 1111# 1112# Same structure, same names and different value. 1113# 1114# Exclude the object with different value. Expect return - same 1115TOOLTEST h5diff_480.txt -v --exclude-path /group1/dset3 h5diff_exclude1-1.h5 h5diff_exclude1-2.h5 1116# Verify different by not excluding. Expect return - diff 1117TOOLTEST h5diff_481.txt -v h5diff_exclude1-1.h5 h5diff_exclude1-2.h5 1118 1119# 1120# Different structure, different names. 1121# 1122# Exclude all the different objects. Expect return - same 1123TOOLTEST h5diff_482.txt -v --exclude-path "/group1" --exclude-path "/dset1" h5diff_exclude2-1.h5 h5diff_exclude2-2.h5 1124# Exclude only some different objects. Expect return - diff 1125TOOLTEST h5diff_483.txt -v --exclude-path "/group1" h5diff_exclude2-1.h5 h5diff_exclude2-2.h5 1126 1127# Exclude from group compare 1128TOOLTEST h5diff_484.txt -v --exclude-path "/dset3" h5diff_exclude1-1.h5 h5diff_exclude1-2.h5 /group1 1129 1130# 1131# Only one file contains unique objs. Common objs are same. 1132# (HDFFV-7837) 1133# 1134TOOLTEST h5diff_485.txt -v --exclude-path "/group1" h5diff_exclude3-1.h5 h5diff_exclude3-2.h5 1135TOOLTEST h5diff_486.txt -v --exclude-path "/group1" h5diff_exclude3-2.h5 h5diff_exclude3-1.h5 1136TOOLTEST h5diff_487.txt -v --exclude-path "/group1/dset" h5diff_exclude3-1.h5 h5diff_exclude3-2.h5 1137 1138 1139# ############################################################################## 1140# # diff various multiple vlen and fixed strings in a compound type dataset 1141# ############################################################################## 1142TOOLTEST h5diff_530.txt -v h5diff_comp_vl_strs.h5 h5diff_comp_vl_strs.h5 /group /group_copy 1143# test to verify HDFFV-8625 1144TOOLTEST h5diff_8625.txt -v --enable-error-stack h5diff_comp_vl_strs.h5 h5diff_comp_vl_strs.h5 /group/Compound_dset1 /group_copy/Compound_dset3 1145# test to verify HDFFV-8639 1146TOOLTEST h5diff_8639.txt -v h5diff_attr3.h5 h5diff_attr2.h5 /g1 1147TOOLTEST h5diff_vlstr.txt -v tvlstr.h5 tvlstr2.h5 1148 1149# ############################################################################## 1150# # Test container types (array,vlen) with multiple nested compound types 1151# # Complex compound types in dataset and attribute 1152# ############################################################################## 1153TOOLTEST h5diff_540.txt -v compounds_array_vlen1.h5 compounds_array_vlen2.h5 1154 1155# ############################################################################## 1156# # Test mutually exclusive options 1157# ############################################################################## 1158# 1159# Test with -d , -p and --use-system-epsilon. 1160TOOLTEST h5diff_640.txt -v -d 5 -p 0.05 --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 1161TOOLTEST h5diff_641.txt -v -d 5 -p 0.05 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 1162TOOLTEST h5diff_642.txt -v -p 0.05 -d 5 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 1163TOOLTEST h5diff_643.txt -v -d 5 --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 1164TOOLTEST h5diff_644.txt -v --use-system-epsilon -d 5 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 1165TOOLTEST h5diff_645.txt -v -p 0.05 --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 1166TOOLTEST h5diff_646.txt -v --use-system-epsilon -p 0.05 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 1167 1168# ############################################################################## 1169# VDS tests 1170# ############################################################################## 1171TOOLTEST h5diff_v1.txt -v 1_vds.h5 2_vds.h5 1172TOOLTEST h5diff_v2.txt -r 1_vds.h5 2_vds.h5 1173TOOLTEST h5diff_v3.txt -c 1_vds.h5 2_vds.h5 1174 1175 1176# ############################################################################## 1177# # END 1178# ############################################################################## 1179 1180# Clean up temporary files/directories 1181CLEAN_TESTFILES_AND_TESTDIR 1182 1183if test $nerrors -eq 0 ; then 1184 echo "All $TESTNAME tests passed." 1185 exit $EXIT_SUCCESS 1186else 1187 echo "$TESTNAME tests failed with $nerrors errors." 1188 exit $EXIT_FAILURE 1189fi 1190