tests/functional/repl: Normalize final prompt

This commit is contained in:
Robert Hensing 2024-07-24 01:01:00 +02:00
parent ca2cc26e12
commit c4ae9bb45b
12 changed files with 13 additions and 24 deletions

View file

@ -262,14 +262,23 @@ badExitCode=0
nixVersion="$(nix eval --impure --raw --expr 'builtins.nixVersion' --extra-experimental-features nix-command)" nixVersion="$(nix eval --impure --raw --expr 'builtins.nixVersion' --extra-experimental-features nix-command)"
# TODO: write a repl interacter for testing. Papering over the differences between readline / editline and between platforms is a pain.
# I couldn't get readline and editline to agree on the newline before the prompt, # I couldn't get readline and editline to agree on the newline before the prompt,
# so let's just force it to be one empty line. Ideally we get the two to agree # so let's just force it to be one empty line.
# or use a simpler interacter for testing.
stripEmptyLinesBeforePrompt() { stripEmptyLinesBeforePrompt() {
# --null-data: treat input as NUL-terminated instead of newline-terminated # --null-data: treat input as NUL-terminated instead of newline-terminated
sed --null-data 's/\n\n*nix-repl>/\n\nnix-repl>/g' sed --null-data 's/\n\n*nix-repl>/\n\nnix-repl>/g'
} }
# We don't get a final prompt on darwin, so we strip this as well.
stripFinalPrompt() {
# Strip the final prompt and/or any trailing spaces
sed --null-data \
-e 's/\(.*[^\n]\)\n\n*nix-repl>[ \n]*$/\1/' \
-e 's/[ \n]*$/\n/'
}
runRepl () { runRepl () {
# That is right, we are also filtering out the testdir _without underscores_. # That is right, we are also filtering out the testdir _without underscores_.
@ -285,7 +294,9 @@ runRepl () {
_NIX_TEST_REPL_ECHO=1 \ _NIX_TEST_REPL_ECHO=1 \
nix repl 2>&1 \ nix repl 2>&1 \
| stripColors \ | stripColors \
| tr -d '\0' \
| stripEmptyLinesBeforePrompt \ | stripEmptyLinesBeforePrompt \
| stripFinalPrompt \
| sed \ | sed \
-e "s@$testDir@/path/to/tests/functional@g" \ -e "s@$testDir@/path/to/tests/functional@g" \
-e "s@$testDirNoUnderscores@/path/to/tests/functional@g" \ -e "s@$testDirNoUnderscores@/path/to/tests/functional@g" \

View file

@ -26,5 +26,3 @@ nix-repl> "This won't produce docs; no support for arbitrary values"
nix-repl> :doc x 2 nix-repl> :doc x 2
error: value does not have documentation error: value does not have documentation
nix-repl>

View file

@ -12,5 +12,3 @@ Function `documentedFormals`\
… defined at /path/to/tests/functional/repl/doc-comments.nix:57:5 … defined at /path/to/tests/functional/repl/doc-comments.nix:57:5
Finds x Finds x
nix-repl>

View file

@ -5,5 +5,3 @@ nix-repl> :doc import ./doc-comment-function.nix
Function defined at /path/to/tests/functional/repl/doc-comment-function.nix:2:1 Function defined at /path/to/tests/functional/repl/doc-comment-function.nix:2:1
A doc comment for a file that only contains a function A doc comment for a file that only contains a function
nix-repl>

View file

@ -9,5 +9,3 @@ Function `compact`\
… defined at /path/to/tests/functional/repl/doc-comments.nix:18:20 … defined at /path/to/tests/functional/repl/doc-comments.nix:18:20
boom boom
nix-repl>

View file

@ -108,5 +108,3 @@ error:
1| lib.attr.undocumental 1| lib.attr.undocumental
| ^ | ^
Did you mean undocumented? Did you mean undocumented?
nix-repl>

View file

@ -9,5 +9,3 @@ Function `floatedIn`\
… defined at /path/to/tests/functional/repl/doc-comments.nix:16:5 … defined at /path/to/tests/functional/repl/doc-comments.nix:16:5
This also works. This also works.
nix-repl>

View file

@ -27,5 +27,3 @@ Function `strictPost`\
… defined at /path/to/tests/functional/repl/doc-comments.nix:41:53 … defined at /path/to/tests/functional/repl/doc-comments.nix:41:53
Here's another way to do this Here's another way to do this
nix-repl>

View file

@ -9,5 +9,3 @@ Function `measurement`\
… defined at /path/to/tests/functional/repl/doc-comments.nix:13:17 … defined at /path/to/tests/functional/repl/doc-comments.nix:13:17
👈 precisely this wide 👉 👈 precisely this wide 👉
nix-repl>

View file

@ -15,5 +15,3 @@ Perform *arithmetic* multiplication. It's kind of like repeated **addition**, ve
multiply 2 3 multiply 2 3
=> 6 => 6
``` ```
nix-repl>

View file

@ -9,5 +9,3 @@ Function `unambiguous`\
… defined at /path/to/tests/functional/repl/doc-comments.nix:24:5 … defined at /path/to/tests/functional/repl/doc-comments.nix:24:5
Very close Very close
nix-repl>

View file

@ -35,5 +35,3 @@ nix-repl> twoDeepList
[ [
[ ... ] [ ... ]
] ]
nix-repl>