Permalink
Cannot retrieve contributors at this time
Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign up
Fetching contributors…
| #!/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 | |
| 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" | |
| rm -rf .build mu.cc mu_bin core.mu # force full rebuild for top-level, but not 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 |