mirror of
https://github.com/NixOS/nix
synced 2025-06-25 02:21:16 +02:00
Default: istty(stdout) This refactors `nix develop` internals a bit to use the `json` type more. The assertion now operates in the in-memory json instead of re-parsing it. While this is technically a weaker guarantee, we should be able to rely on the library to get this right. It's its most essential purpose.
44 lines
No EOL
1.4 KiB
Bash
44 lines
No EOL
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
source common.sh
|
|
|
|
# Meson would split the output into two buffers, ruining the coherence of the log.
|
|
exec 1>&2
|
|
|
|
cat > "$TEST_HOME/expected-machine.json" <<EOF
|
|
{"a":{"b":{"c":true}}}
|
|
EOF
|
|
|
|
cat > "$TEST_HOME/expected-pretty.json" <<EOF
|
|
{
|
|
"a": {
|
|
"b": {
|
|
"c": true
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
|
|
nix eval --json --expr '{ a.b.c = true; }' > "$TEST_HOME/actual.json"
|
|
diff -U3 "$TEST_HOME/expected-machine.json" "$TEST_HOME/actual.json"
|
|
|
|
nix eval --json --pretty --expr \
|
|
'{ a.b.c = true; }' > "$TEST_HOME/actual.json"
|
|
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"
|
|
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"
|
|
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"
|
|
cat "$TEST_HOME/actual.json"
|
|
grep -F '"a":{' "$TEST_HOME/actual.json"
|
|
|
|
fi |