aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMax Siling <root@goldstein.rs>2024-07-17 21:50:59 +0000
committerGerrit Code Review <gerrit@localhost>2024-07-17 21:50:59 +0000
commit68567206f244f26f4830030c172d63c3dc9a13a1 (patch)
treef20bc33a4ed34d9724c9962d91e1320a98cb8b1c /tests
parentef0de7c79f3b32f66db447220d26eae7e7c07b19 (diff)
parent3a36c8bb9004a259bb29e8b86d3217002b9a53ea (diff)
Merge "tests/functional/repl.sh: actually fail test on wrong stdout" into main
Diffstat (limited to 'tests')
-rw-r--r--tests/functional/repl.sh24
1 files changed, 17 insertions, 7 deletions
diff --git a/tests/functional/repl.sh b/tests/functional/repl.sh
index 3765fb492..cd56b4d92 100644
--- a/tests/functional/repl.sh
+++ b/tests/functional/repl.sh
@@ -62,21 +62,31 @@ stripColors () {
testReplResponseGeneral () {
local grepMode="$1"; shift
local commands="$1"; shift
- local expectedResponse="$1"; shift
- local response="$(nix repl "$@" <<< "$commands" | stripColors)"
- echo "$response" | grepQuiet "$grepMode" -s "$expectedResponse" \
- || fail "repl command set:
+ # Expected response can contain newlines.
+ # grep can't handle multiline patterns, so replace newlines with TEST_NEWLINE
+ # in both expectedResponse and response.
+ # awk ORS always adds a trailing record separator, so we strip it with sed.
+ local expectedResponse="$(printf '%s' "$1" | awk 1 ORS=TEST_NEWLINE | sed 's/TEST_NEWLINE$//')"; shift
+ # We don't need to strip trailing record separator here, since extra data is ok.
+ local response="$(nix repl "$@" <<< "$commands" 2>&1 | stripColors | awk 1 ORS=TEST_NEWLINE)"
+ printf '%s' "$response" | grepQuiet "$grepMode" -s "$expectedResponse" \
+ || fail "$(echo "repl command set:
$commands
does not respond with:
+---
$expectedResponse
+---
but with:
+---
$response
-"
+---
+
+" | sed 's/TEST_NEWLINE/\n/g')"
}
testReplResponse () {
@@ -179,7 +189,7 @@ testReplResponseNoRegex '
let x = { y = { a = 1; }; inherit x; }; in x
' \
'{
- x = { ... };
+ x = «repeated»;
y = { ... };
}
'
@@ -231,6 +241,6 @@ testReplResponseNoRegex '
' \
'{
x = «repeated»;
- y = { a = 1 };
+ y = { a = 1; };
}
'