From e072e18475bc461e522f34d63cc74fc5fbf1640e Mon Sep 17 00:00:00 2001 From: John Ericson Date: Thu, 13 Jul 2023 08:03:42 -0400 Subject: [PATCH] Fix race condition in the language tests When we pipe to `>(...)` like that, we unfortunately don't wait for the process to finish. Better to just substitute the file. Also, use the "unified" diff output that people (including myself) are more familiar with, thanks to Git. --- tests/lang.sh | 5 +++-- tests/lang/framework.sh | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/lang.sh b/tests/lang.sh index bfb942d3d..75dbbc38e 100755 --- a/tests/lang.sh +++ b/tests/lang.sh @@ -52,9 +52,10 @@ for i in lang/parse-okay-*.nix; do i=$(basename "$i" .nix) if expect 0 nix-instantiate --parse - < "lang/$i.nix" \ - 1> >(sed "s!$(pwd)!/pwd!g" > "lang/$i.out") \ - 2> >(sed "s!$(pwd)!/pwd!g" > "lang/$i.err") + 1> "lang/$i.out" \ + 2> "lang/$i.err" then + sed "s!$(pwd)!/pwd!g" "lang/$i.out" "lang/$i.err" diffAndAccept "$i" out exp diffAndAccept "$i" err err.exp else diff --git a/tests/lang/framework.sh b/tests/lang/framework.sh index d6499e0e9..516bff8ad 100644 --- a/tests/lang/framework.sh +++ b/tests/lang/framework.sh @@ -16,7 +16,7 @@ function diffAndAcceptInner() { fi # Diff so we get a nice message - if ! diff "$got" "$expectedOrEmpty"; then + if ! diff --unified "$got" "$expectedOrEmpty"; then echo "FAIL: evaluation result of $testName not as expected" badDiff=1 fi