diff --git a/tests/functional/json.sh b/tests/functional/json.sh index 9cc7c6ec1..49992e0d9 100644 --- a/tests/functional/json.sh +++ b/tests/functional/json.sh @@ -19,6 +19,20 @@ cat > "$TEST_HOME/expected-pretty.json" < "$TEST_HOME/actual.json" diff -U3 "$TEST_HOME/expected-machine.json" "$TEST_HOME/actual.json" @@ -27,18 +41,31 @@ nix eval --json --pretty --expr \ diff -U3 "$TEST_HOME/expected-pretty.json" "$TEST_HOME/actual.json" if type script &>/dev/null; then - script --return --quiet --command 'nix eval --json --expr "{ a.b.c = true; }"' > "$TEST_HOME/actual.json" + acceptsCommandFlag=0 + # The macOS version just accepts multiple arguments, but util-linux and its `-c` flag only accept a single argument, which is then split on whitespace. We thus have to quote in that case. + if script -c true /dev/null 2>/dev/null; then + acceptsCommandFlag=1 + fi + + runScript() { + if [[ $acceptsCommandFlag -eq 0 ]]; then + script -e -q /dev/null "$@" + else + script -e -q /dev/null -c "$(shellEscapeArray "$@")" + fi + } + runScript nix eval --json --expr "{ a.b.c = true; }" > "$TEST_HOME/actual.json" cat "$TEST_HOME/actual.json" # script isn't perfectly accurate? Let's grep for a pretty good indication, as the pretty output has a space between the key and the value. # diff -U3 "$TEST_HOME/expected-pretty.json" "$TEST_HOME/actual.json" grep -F '"a": {' "$TEST_HOME/actual.json" - script --return --quiet --command 'nix eval --json --pretty --expr "{ a.b.c = true; }"' > "$TEST_HOME/actual.json" + runScript nix eval --json --pretty --expr "{ a.b.c = true; }" > "$TEST_HOME/actual.json" cat "$TEST_HOME/actual.json" grep -F '"a": {' "$TEST_HOME/actual.json" - script --return --quiet --command 'nix eval --json --no-pretty --expr "{ a.b.c = true; }"' > "$TEST_HOME/actual.json" + runScript nix eval --json --no-pretty --expr "{ a.b.c = true; }" > "$TEST_HOME/actual.json" cat "$TEST_HOME/actual.json" grep -F '"a":{' "$TEST_HOME/actual.json" -fi \ No newline at end of file +fi diff --git a/tests/functional/package.nix b/tests/functional/package.nix index a84ad1791..43f2f25a2 100644 --- a/tests/functional/package.nix +++ b/tests/functional/package.nix @@ -11,6 +11,7 @@ git, mercurial, util-linux, + unixtools, nix-store, nix-expr, @@ -54,6 +55,7 @@ mkMesonDerivation ( jq git mercurial + unixtools.script ] ++ lib.optionals stdenv.hostPlatform.isLinux [ # For various sandboxing tests that needs a statically-linked shell,