1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
|
# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014,
# 2015, 2016, 2017, 2018
# University Corporation for Atmospheric Research/Unidata.
# See netcdf-c/COPYRIGHT file for more info.
# Load only once
if test "x$TEST_COMMON_SH" = x ; then
export TEST_COMMON_SH=1
# Define various global constants
# Define various build and install paths
abs_top_srcdir=@abs_top_srcdir@
abs_top_builddir=@abs_top_builddir@
TOPSRCDIR="${abs_top_srcdir}"
TOPBUILDDIR="${abs_top_builddir}"
FP_ISCMAKE=@ISCMAKE@
FP_ISMSVC=@ISMSVC@
FP_WINVERMAJOR=@WINVERMAJOR@
FP_WINVERBUILD=@WINVERBUILD@
FP_ISCYGWIN=@ISCYGWIN@
FP_ISMINGW=@ISMINGW@
FP_ISMSYS=@ISMSYS@
FP_ISOSX=@ISOSX@
FP_ISREGEDIT=@ISREGEDIT@
FP_USEPLUGINS=@USEPLUGINS@
# Feature flags
FEATURE_HDF5=@HAS_HDF5@
FEATURE_PARALLEL=@HAS_PARALLEL@
# Define selected features of the build
FEATURE_HDF5=@HAS_HDF5@
FEATURE_FILTERTESTS=@DO_FILTER_TESTS@
FEATURE_BYTERANGE=@HAS_BYTERANGE@
FEATURE_ROS3=@HAS_HDF5_ROS3@
FEATURE_S3_AWS=@HAS_S3_AWS@
FEATURE_S3_INTERNAL=@HAS_S3_INTERNAL@
FEATURE_S3=@HAS_S3@
FEATURE_NCZARR=@HAS_NCZARR@
FEATURE_S3TESTS=@NETCDF_ENABLE_S3_TESTING@
FEATURE_NCZARR_ZIP=@HAS_NCZARR_ZIP@
FEATURE_LARGE_TESTS=@DO_LARGE_TESTS@
FEATURE_PLUGIN_INSTALL_DIR="@NETCDF_PLUGIN_INSTALL_DIR@"
FEATURE_PLUGIN_SEARCH_PATH="@NETCDF_PLUGIN_SEARCH_PATH@"
# Thredds-test server is currently disabled
#FEATURE_THREDDSTEST=1
# This is the Unidata S3 test bucket
# All S3 tests should use this to store intermediate results.
S3TESTBUCKET=@S3TESTBUCKET@
# This is the s3 path within the Unidata bucket;
# All S3 tests should use this to store intermediate results.
S3TESTSUBTREE=@S3TESTSUBTREE@
TESTUID=@TESTUID@
set -e
# Figure out various locations in the src/build tree.
# This is relatively fragile code and is essentially
# specific to netcdf-c. It does, however, have the virtue
# of isolating all this nonsense into one place.
# This will get somewhat simplified (I hope) when
# we move to a separate test_utilities directory
# This code is intended to provide constants
# for accessing various objects in the src/build
# tree(s) across multiple ways of building netcdf-c.
# Currently, the following build situations are supported.
# 1. Autoconf with make check: the src and build trees are the same
# 2. Autoconf with make distcheck: the src and build trees are distinct
# 3. Cmake on a *nix platform using e.g. gcc:
# the src and build trees are distinct.
# 4. Cmake on windows using cygwin or msys.
# The src and build trees are distinct.
#
# For now, an explicit build using the Visual C(++) compiler
# is not supported. The big issue is the handling of executables
# and the notion of a VS configuration/build type like Debug or Release.
# When using VS, executables are placed in a subdirectory of the
# build directory. That subdirectory is named by the configuration type.
# Thus one finds ncdump.exe in $top_builddir/ncdump/Debug instead of
# $top_builddir/ncdump. An additional issue is the extension of an
# executable: .exe vs nothing. This code attempts to figure out which is used.
#
# For possible future fixes, a placeholder is left in place in the
# following code named VS. If it were set to the build type, then,
# in theory, this code would work with Visual C. It is disabled for now.
#
# The goal, then, of this common code is to set up some useful
#constants for use in test shell scripts.
# 1. srcdir - absolute path to the source dir (e.g. ${top_srcdir}/ncgen)
# 2. top_srcdir - absolute path to the root of the source
# 3. top_builddir - absolute path to the root of the build directory;
# may be same as top_srcdir (e.g. #1).
# 4. builddir - absolute path of th the directory into which generated
# stuff (.nc, .cdl, etc) is stored.
# 5. execdir - absolute path of the directory into which executables are
# placed. For all but the VS case, execdir == builddir.
#
# The following are defined to support inter-directory references.
# 6. NCDUMP - absolute path to the ncdump.exe executable
# 7. NCCOPY - absolute path to the nccopy.exe executable
# 8. NCGEN - absolute path to ncgen.exe
# 9. NCGEN3 - absolute path to ncgen3.exe
#10. NCPATHCVT - absolute path to ncpathcvt.exe
# Allow global set -x mechanism for debugging.
if test "x$SETX" = x1 ; then set -x ; fi
# On MINGW, bash and other POSIX utilities use a mounted root directory,
# but executables compiled for Windows do not recognise the mount point.
# Here we ensure that Windows paths are used in tests of Windows executables.
system=`uname`
if test "x${system##MINGW*}" = x; then
alias pwd='pwd -W'
fi
# We assume that TOPSRCDIR and TOPBUILDDIR are defined
# At the top of this shell script
top_srcdir="$TOPSRCDIR"
top_builddir="$TOPBUILDDIR"
# Currently not used, but left as a Visual Studio placeholder.
# VS=Debug
# Set when using gdb
#DL=".libs/"
# srcdir may or may not be defined, but if not, then create it
if test "x$srcdir" = x ; then
# we need to figure out our directory
# pick off the last component as the relative name of this directory
srcdir=`pwd`
if test "x$srcdir" != "x$top_srcdir" ; then
current=`basename $srcdir`
srcdir="${top_srcdir}/$current"
fi
fi
# We also assume we are executing in builddir
builddir=`pwd`
# execdir is usually an alias for builddir
execdir="${builddir}"
# pick off the last component as the relative name of this directory
thisdir=`basename $srcdir`
WD=`pwd`
# Absolutize paths of interest
cd $srcdir; srcdir=`pwd` ; cd $WD
cd $top_srcdir; top_srcdir=`pwd` ; cd $WD
cd $builddir; builddir=`pwd` ; cd $WD
cd $top_builddir; top_builddir=`pwd` ; cd $WD
cd $execdir; execdir=`pwd` ; cd $WD
# For sun os
export srcdir top_srcdir builddir top_builddir execdir
# Figure out executable extension (probably a better way)
if test -e "${top_builddir}/ncdump${VS}/ncdump.exe" ; then
ext=".exe"
else
ext=""
fi
# We need to locate certain executables (and other things),
# capture absolute paths, and make visible
export NCDUMP="${abs_top_builddir}/ncdump${VS}/${DL}ncdump${ext}"
export NCCOPY="${abs_top_builddir}/ncdump${VS}/${DL}nccopy${ext}"
export NCGEN="${abs_top_builddir}/ncgen${VS}/${DL}ncgen${ext}"
export NCGEN3="${abs_top_builddir}/ncgen3${VS}/${DL}ncgen3${ext}"
export NCPATHCVT="${abs_top_builddir}/ncdump${VS}/${DL}ncpathcvt${ext}"
# Temporary hacks (until we have a test_utils directory)
# to locate certain specific test files
ncgen3c0="${abs_top_srcdir}/ncgen3/c0.cdl"
ncgenc0="${abs_top_srcdir}/ncgen/c0.cdl"
ncgenc04="${abs_top_srcdir}/ncgen/c0_4.cdl"
# Set LC_ALL
if test "x$FP_ISMSVC" = xyes || test "x$FP_ISCYGWIN" = xyes; then export LC_ALL="en_US.utf8"; fi
# Set HOME
if test "x$FP_ISMSVC" = xyes || test "x$FP_MINGW" = xyes; then
if test "x$HOME" = x ; then
HOME=`echo $USERPROFILE |tr '\\\' '/'`
export HOME
fi
fi
# OS/X and windows apparently have no echo -n option, so fake it
echon() {
echo $@ | tr -d '\n'
}
# Test for filter availability
avail() {
if test yes = `${execdir}/../ncdump/ncfilteravail $1` ; then return 0 ; else echo "filter $1 not available" ; return 1; fi
}
# Make sure we are in builddir (not execdir)
cd $builddir
# Parallel make can cause inter-test interference (mostly because of historical naming issues).
# As a protection against this, the isolate() function supports the creation of an
# isolation directory in which created products are stored.
# Cleanup can be accomplished by deleting the whole isolation directory.
# The name of the isolation directory is by convention "testdir_<random>".
# The isolation dir is created within the ${builddir} directory.
# The <random> is a generated 32 bit unsigned random integer to make the chance
# of collision very small.
# Process ID was not used because of the small but real chance of collision.
isolate() {
if test "x$ISOPATH" = x ; then
ISOTESTSET="${builddir}/testset_"
if test "x$NOISOPATH" = x ; then ISOTESTSET="${ISOTESTSET}${TESTUID}"; fi
ISODIR="$1"
ISOPATH="${ISOTESTSET}/$ISODIR"
rm -fr $ISOPATH
mkdir -p $ISOPATH
fi
}
fi #TEST_COMMON_SH
|