#!/bin/bash # # test/mk: tests the makefile of Conjure itself # # This tests that the makefile is thorough and actually # runs all tests scripts and benchmarks when asked to do so. # # Copyright (c) 2024 Rudy Matela. # Distributed under the 3-Clause BSD licence. set -xe export LC_ALL=C # consistent sort diff="diff --color -rud" tmp=`mktemp -d /tmp/test-mk-XXXXXXXXXX` [ -d "$tmp" ] || exit 1 rmhs() { sed -e 's/.hs$//'; } rmtarget() { sed -e 's/:.*//'; } flt() { rmhs | # excludes extensions from the result of find rmtarget | # exclude Makefile target indicators grep -v '^bench/avgs$' | # not an actual benchmark grep -v '^.*/[A-Z].*$' # test/benchmark/example scripts begin with lowercase } make -s ls-eg ls-test | sort >$tmp/ls-mk find eg bench proto test -maxdepth 1 -name '*.hs' | flt | sort >$tmp/ls-find grep -E "^[^/]*/[^.]*:" mk/depend.mk | flt | sort >$tmp/ls-depend grep -E "(eg|bench|proto|test)/" .gitignore | flt | sort >$tmp/ls-gitignore $diff $tmp/ls-{mk,find} # compares make variables with actual directory $diff $tmp/ls-{mk,depend} # compares make variables with mk/depend.mk $diff $tmp/ls-{mk,gitignore} # compare make variables with .gitignore rm -r $tmp