apenwarr-redo/t/all.do
Avery Pennarun 887df98ead builder.py: refresh the File object after obtaining the lock.
We need to create the File object to get its f.id, then lock that id.
During that gap, another instance of redo may have modified the file or
its state data, so we have to refresh it.

This fixes 'redo -j10 t/stress'.
2018-10-13 01:37:08 -04:00

31 lines
971 B
Text

# tests that "set -e" works (.do scripts always run with -e set by default)
rm -f 000-set-minus-e/log
redo 000-set-minus-e/all
if [ "$(cat 000-set-minus-e/log)" != "ok" ]; then
echo "FATAL! .do file not run with 'set -e' in effect!" >&2
exit 5
fi
# builds 1xx*/all to test for basic/dangerous functionality.
# We don't want to run more advanced tests if the basics don't work.
/bin/ls 1[0-9][0-9]*/all.do |
sed 's/\.do$//' |
xargs redo
110-compile/hello >&2
# builds most of the rest in parallel
/bin/ls [2-9][0-9][0-9]*/all.do |
sed 's/\.do$//' |
xargs redo
# builds the tests that require non-parallel execution.
# If tests are written carefully, this should only be things that
# are checking for unnecessary extra rebuilds of some targets, which
# might happen after flush-cache.
# FIXME: a better solution might be to make flush-cache less destructive!
/bin/ls [s][0-9][0-9]*/all.do |
sed 's/\.do$//' | {
while read d; do
redo "$d"
done
}