diff options
Diffstat (limited to 'archive/2.vm/test_layers')
-rwxr-xr-x | archive/2.vm/test_layers | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/archive/2.vm/test_layers b/archive/2.vm/test_layers new file mode 100755 index 00000000..47cb01b0 --- /dev/null +++ b/archive/2.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 |