diff options
Diffstat (limited to 'lib/tests/sources.sh')
-rwxr-xr-x | lib/tests/sources.sh | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/lib/tests/sources.sh b/lib/tests/sources.sh index a7f490a79d74..cda77aa96b28 100755 --- a/lib/tests/sources.sh +++ b/lib/tests/sources.sh @@ -23,14 +23,19 @@ clean_up() { trap clean_up EXIT cd "$work" -touch {README.md,module.o,foo.bar} +# Crudely unquotes a JSON string by just taking everything between the first and the second quote. +# We're only using this for resulting /nix/store paths, which can't contain " anyways, +# nor can they contain any other characters that would need to be escaped specially in JSON +# This way we don't need to add a dependency on e.g. jq +crudeUnquoteJSON() { + cut -d \" -f2 +} -# nix-instantiate doesn't write out the source, only computing the hash, so -# this uses the experimental nix command instead. +touch {README.md,module.o,foo.bar} -dir="$(nix eval --impure --raw --expr '(with import <nixpkgs/lib>; "${ +dir="$(nix-instantiate --eval --strict --read-write-mode --json --expr '(with import <nixpkgs/lib>; "${ cleanSource ./. -}")')" +}")' | crudeUnquoteJSON)" (cd "$dir"; find) | sort -f | diff -U10 - <(cat <<EOF . ./foo.bar @@ -39,9 +44,9 @@ EOF ) || die "cleanSource 1" -dir="$(nix eval --impure --raw --expr '(with import <nixpkgs/lib>; "${ +dir="$(nix-instantiate --eval --strict --read-write-mode --json --expr '(with import <nixpkgs/lib>; "${ cleanSourceWith { src = '"$work"'; filter = path: type: ! hasSuffix ".bar" path; } -}")')" +}")' | crudeUnquoteJSON)" (cd "$dir"; find) | sort -f | diff -U10 - <(cat <<EOF . ./module.o @@ -49,9 +54,9 @@ dir="$(nix eval --impure --raw --expr '(with import <nixpkgs/lib>; "${ EOF ) || die "cleanSourceWith 1" -dir="$(nix eval --impure --raw --expr '(with import <nixpkgs/lib>; "${ +dir="$(nix-instantiate --eval --strict --read-write-mode --json --expr '(with import <nixpkgs/lib>; "${ cleanSourceWith { src = cleanSource '"$work"'; filter = path: type: ! hasSuffix ".bar" path; } -}")')" +}")' | crudeUnquoteJSON)" (cd "$dir"; find) | sort -f | diff -U10 - <(cat <<EOF . ./README.md |