about summary refs log tree commit diff stats
path: root/archive/1.vm/test_layers
diff options
context:
space:
mode:
Diffstat (limited to 'archive/1.vm/test_layers')
-rwxr-xr-xarchive/1.vm/test_layers88
1 files changed, 88 insertions, 0 deletions
diff --git a/archive/1.vm/test_layers b/archive/1.vm/test_layers
new file mode 100755
index 00000000..47cb01b0
--- /dev/null
+++ b/archive/1.vm/test_layers
@@ -0,0 +1,88 @@
+#!/bin/bash
+# Repeatedly stop building until successive layers, and run all tests built,
+# while checking for undefined behavior using both UBSan and Valgrind.
+#
+# Requires Linux.
+#
+# Usage:
+#   Test all layers:
+#     test_layers
+#   Test non-app layers after x:
+#     test_layers x
+#   Test layers after x and until y (inclusive):
+#     test_layers x y
+#   Test all layers for a specific app:
+#     test_layers app
+set -e
+
+test "$BUILD" || export BUILD=build3
+
+if [[ $1 == one-off ]]
+then
+  ./$BUILD
+  ./mu_bin test || exit 1
+  exit 0
+fi
+
+# Core layers atop Valgrind
+for f in [0-9]*
+do
+  if [[ $f < $1 ]]; then continue; fi
+  if [[ $2 && $f > $2 ]]; then exit 0; fi
+  echo "=== $f"
+  ./clean top-level  # preserve subsidiary tools like tangle and cleave
+  ./$BUILD --until $f || exit 1
+  # valgrind requires Linux
+  valgrind --leak-check=yes --num-callers=40 -q --error-exitcode=1 ./mu_bin test || exit 1
+  # run on Mac OS without valgrind, and with a hacky fix for the coarser clock
+#?   ./mu_bin test || exit 1
+#?   sleep 1
+done
+
+# Layers for Mu apps without Valgrind
+./clean
+./$BUILD
+
+if [[ ! $1 || $1 == chessboard ]]
+then
+  echo "=== chessboard"
+  ./mu_bin test chessboard.mu || exit 1
+fi
+
+# slices of edit/ for Travis CI
+if [[ ! $1 || $1 == edit ]]
+then
+  echo "=== edit: until 001"
+  ./mu_bin test edit/001* || exit 1
+  echo "=== edit: until 002"
+  ./mu_bin test edit/00[1-2]* || exit 1
+  echo "=== edit: until 003"
+  ./mu_bin test edit/00[1-3]* || exit 1
+fi
+if [[ ! $1 || $1 == edit2 ]]
+then
+  echo "=== edit: until 004"
+  ./mu_bin test edit/00[1-4]* || exit 1
+  echo "=== edit: until 005"
+  ./mu_bin test edit/00[1-5]* || exit 1
+  echo "=== edit: until 006"
+  ./mu_bin test edit/00[1-6]* || exit 1
+fi
+if [[ ! $1 || $1 == edit3 ]]
+then
+  echo "=== edit: until 007"
+  ./mu_bin test edit/00[1-7]* || exit 1
+  echo "=== edit: until 008"
+  ./mu_bin test edit/00[1-8]* || exit 1
+  echo "=== edit: until 009"
+  ./mu_bin test edit/00* || exit 1
+fi
+if [[ ! $1 || $1 == edit4 ]]
+then
+  echo "=== edit: until 010"
+  ./mu_bin test edit/00* edit/010* || exit 1
+  echo "=== edit: until 011"
+  ./mu_bin test edit/00* edit/01[01]* || exit 1
+  echo "=== edit: until 012"
+  ./mu_bin test edit/00* edit/01[0-2]* || exit 1
+fi