#!/usr/bin/env bash # Build the wasm package (../build.sh), test it under Node against files # written by h5py and netCDF4 (make_fixture.py), then load the viewer page # in headless Chromium if one is found (browser.sh). # # Needs node, the wasm-bindgen CLI (see ../build.sh) and a Python with h5py, # netCDF4 and numpy: CLAWHDF5_PYTHON names it (default python3). Without that # Python the test is skipped, unless CLAWHDF5_REQUIRE_INTEROP=1. set -euo pipefail HERE="$(cd "$(dirname "$0")" && pwd)" PY="${CLAWHDF5_PYTHON:-python3}" command -v node >/dev/null || { echo "node not found" >&2; exit 1; } if ! "$PY" -c "import h5py, netCDF4, numpy" >/dev/null 2>&1; then if [ "${CLAWHDF5_REQUIRE_INTEROP:-0}" = "1" ]; then echo "CLAWHDF5_REQUIRE_INTEROP=1 but $PY lacks h5py/netCDF4/numpy" >&2 exit 1 fi echo "SKIP: $PY lacks h5py/netCDF4/numpy" exit 0 fi bash "$HERE/../build.sh" fix="$(mktemp -d)" trap 'rm -rf "$fix"' EXIT "$PY" "$HERE/make_fixture.py" "$fix" node "$HERE/test.mjs" "$HERE/../pkg" "$fix" # The page itself, in headless Chromium when one is available. status=0 bash "$HERE/browser.sh" "$fix" || status=$? if [ "$status" = 3 ]; then echo "SKIP: viewer page in a browser (no Chromium; set CHROME)" elif [ "$status" != 0 ]; then exit "$status" fi