-
Notifications
You must be signed in to change notification settings - Fork 258
/
acceptance.nbconvert.sh
executable file
·40 lines (34 loc) · 1.36 KB
/
acceptance.nbconvert.sh
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
#! /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 '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 'error' \
<(cat test/acceptance.nbconvert.out.ipynb | jq '{"cells": .cells | map(del(.metadata.execution)), "metadata": .metadata}'))