mirror of
https://github.com/Unidata/netcdf-c.git
synced 2024-12-21 08:39:46 +08:00
7be9506aac
to get TOPSRCDIR that avoids use of TEST_ENVIRONMENT and makes automake and cmake more consistent. Basic assumption is that abs_top_srcdir (and cmake equivalent) is known at 'make check' time, so we can use -D flag to compile a program that has the value of abs_top_srcdir embedded into it as a constant. We define two new files in ncdap_test: 1. t_srcdir.h -- provide a gettopsrcdir() function to return the topsrcdir value to the test program. 2. topsrcdir.c -- a program that calls gettopsrcdir() and prints its output (minus any newline) on stdout. This is used in .sh files to get topsrcdir.
175 lines
3.6 KiB
Bash
Executable File
175 lines
3.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
# if this is part of a distcheck action, then this script
|
|
# will be executed in a different directory
|
|
# than the one containing it; so capture the path to this script
|
|
# as the location of the source directory.
|
|
|
|
if test "x$topsrcdir" != x ; then
|
|
srcdir="$topsrcdir/ncdap_test"
|
|
else
|
|
srcdir=`dirname $0`
|
|
fi
|
|
|
|
cd $srcdir
|
|
srcdir=`pwd`
|
|
|
|
# compute the build directory
|
|
builddir=`pwd`/..
|
|
# Hack for CYGWIN
|
|
if [ `uname | cut -d "_" -f 1` = "MINGW32" ]; then
|
|
srcdir=`pwd | sed 's/\/c\//c:\//g'`
|
|
builddir="$srcdir"/..
|
|
fi
|
|
|
|
cd ${builddir}/ncdap_test
|
|
|
|
#set -x
|
|
quiet=0
|
|
cache=1
|
|
leakcheck=0
|
|
|
|
if test "x$cache" = "x1" ; then
|
|
CACHEPARAM="[cache]"
|
|
else
|
|
CACHEPARAM=""
|
|
fi
|
|
|
|
PARAMS="[netcdf3][log]${CACHEPARAM}"
|
|
|
|
#OCLOGFILE=/dev/null
|
|
OCLOGFILE="" ; export OCLOGFILE
|
|
|
|
# Locate the testdata and expected directory
|
|
EXPECTED="${srcdir}/expecttds3"
|
|
|
|
# get the list of test files
|
|
##################################################
|
|
# Special test info
|
|
##################################################
|
|
# TDS files under 10 megabytes
|
|
# TDS Catalog: http://thredds.ucar.edu/thredds/catalog/public/dataset/catalog.html
|
|
|
|
TDSURL1="http://thredds.ucar.edu/thredds/dodsC/public/dataset"
|
|
TDSTESTS1="\
|
|
tst-striped.nc \
|
|
tst-PROFILER_RASS.nc \
|
|
tst-upc-nmm-point.nc \
|
|
testData2.nc \
|
|
testData.nc \
|
|
tst-ocean.nc \
|
|
tst-sst.nc \
|
|
tst-RUC.nc \
|
|
tst-NCEP-NAM-CONUS.nc \
|
|
tst-NCEP-SREF-CONUS.nc \
|
|
tst-NWS-NDFD-CONUS.nc \
|
|
tst-NCEP-RUC-CONUS.nc \
|
|
tst-NCEP-GFS-ALASKA.nc \
|
|
tst-PROFILER.nc"
|
|
|
|
# TDS files over 10 megabytes
|
|
TDSURL2="${TDSURL1}"
|
|
TDSTESTS2="\
|
|
tst-NCEP-DGEX-CONUS.nc \
|
|
tst-upc-nmm-grid.nc \
|
|
tst-eta.nc \
|
|
tst-NCEP-GEFS-GLOBAL.nc \
|
|
tst-GFS_Global.nc \
|
|
tst-Surface-METAR.nc"
|
|
|
|
TESTURL="${TDSURL1}"
|
|
TESTSET="${TDSTESTS1}"
|
|
|
|
# Temporarily suppress
|
|
XFAILTESTS="tst-Surface-METAR.nc"
|
|
|
|
RESULTSDIR="./results"
|
|
expected3="${srcdir}/expecttds3"
|
|
|
|
# Locate some tools
|
|
NCDUMP="${builddir}/ncdump/ncdump"
|
|
NCCOPY="${builddir}/ncdump/nccopy"
|
|
|
|
if test "x$leakcheck" = x1 ; then
|
|
VALGRIND="valgrind -q --error-exitcode=2 --leak-check=full"
|
|
else
|
|
VALGRIND=
|
|
fi
|
|
|
|
rm -fr ${RESULTSDIR}
|
|
mkdir "${RESULTSDIR}"
|
|
|
|
passcount=0
|
|
xfailcount=0
|
|
failcount=0
|
|
|
|
if test "x$quiet" = "x0" ; then
|
|
echo "*** Testing TDS server"
|
|
echo "*** URL: ${TESTURL}"
|
|
echo "*** PARAMS: ${PARAMS}"
|
|
fi
|
|
|
|
cd ${RESULTSDIR}
|
|
for t in ${TESTSET} ; do
|
|
name="$t"
|
|
url="${PARAMS}${TESTURL}/$name"
|
|
if test "x$quiet" = "x0" ; then echo "*** Testing: ${name}"; fi
|
|
|
|
# Ignore missing cases
|
|
# if test -f ${EXPECTED}/${name}.dmp
|
|
# then ignore=1; else echo "Missing: ${EXPECTED}/${name}.dmp"; continue; fi
|
|
|
|
# determine if this is an xfailtest
|
|
isxfail=0
|
|
for x in ${XFAILTESTS} ; do
|
|
if test "x${name}" = "x${x}" ; then isxfail=1; fi
|
|
done
|
|
|
|
status=0
|
|
|
|
if ${VALGRIND} ${NCCOPY} ${url} ${name}.nc
|
|
then status=$status; else status=1; fi
|
|
|
|
if ${NCDUMP} ${name}.nc > ${name}.dmp
|
|
then status=$status; else status=1; fi
|
|
|
|
if diff -w ${EXPECTED}/${name}.dmp ${name}.dmp
|
|
then status=$status; else status=1; fi
|
|
|
|
if test "x$status" = "x1" ; then
|
|
if test "x$isxfail" = "x1" ; then status=2; fi # xfail
|
|
fi
|
|
|
|
case "$status" in
|
|
0)
|
|
passcount=`expr $passcount + 1`
|
|
if test "x$quiet" = "x" ; then echo "*** SUCCEED: ${name}"; fi
|
|
;;
|
|
1)
|
|
failcount=`expr $failcount + 1`
|
|
echo "*** FAIL: ${name}"
|
|
;;
|
|
2)
|
|
xfailcount=`expr $xfailcount + 1`
|
|
echo "*** XFAIL : ${name}"
|
|
;;
|
|
esac
|
|
|
|
done
|
|
cd ..
|
|
|
|
totalcount=`expr $passcount + $failcount + $xfailcount`
|
|
okcount=`expr $passcount + $xfailcount`
|
|
|
|
echo "*** PASSED: ${okcount}/${totalcount} ; ${xfailcount} expected failures ; ${failcount} unexpected failures"
|
|
|
|
# Ignore failures for now
|
|
#failcount=0
|
|
if test "$failcount" -gt 0 ; then
|
|
exit 1
|
|
else
|
|
exit 0
|
|
fi
|