#! /usr/bin/env bash # Run nbconvert acceptance tests # ------------------------------ # # This script must be called from the root directory of IHaskell. It requires # `jq` to be available in the $PATH. # # Positional arguments to this script are the invocation for `nbconvert`. # For example: # # Invoke from the the root IHaskell directory: # # test/acceptance.nbconvert.sh jupyter nbconvert # # Invoke with `stack` from the the root IHaskell directory: # # test/acceptance.nbconvert.sh stack exec -- jupyter nbconvert # # Invoke with Stack+Docker from the the root IHaskell directory: # # test/acceptance.nbconvert.sh stack --docker exec -- jupyter nbconvert # # Invoke with Nix from the root IHaskell directory: # # test/acceptance.nbconvert.sh result/bin/jupyter-nbconvert # set -euo pipefail $* --to=notebook --execute --allow-errors test/acceptance.nbconvert.in.ipynb mv test/acceptance.nbconvert.in.nbconvert.ipynb test/acceptance.nbconvert.out.ipynb diff \ <(grep -v -e 'version' -e 'Line ' -e 'Integral' -e 'Num' -e 'Real' -e 'error' \ <(cat test/acceptance.nbconvert.in.ipynb | jq '{"cells": .cells | map(del(.metadata.execution)), "metadata": .metadata}')) \ <(grep -v -e 'version' -e 'Line ' -e 'Integral' -e 'Num' -e 'Real' -e 'error' \ <(cat test/acceptance.nbconvert.out.ipynb | jq '{"cells": .cells | map(del(.metadata.execution)), "metadata": .metadata}'))