#!/usr/bin/env bash source ./common.sh flake1Dir=$TEST_ROOT/flake1 flake2Dir=$TEST_ROOT/flake2 mkdir -p "$flake1Dir" "$flake2Dir" writeSimpleFlake "$flake2Dir" tar cfz "$TEST_ROOT"/flake.tar.gz -C "$TEST_ROOT" flake2 hash=$(nix hash path "$flake2Dir") dep=$(nix store add-path ./common.sh) cat > "$flake1Dir"/flake.nix < \$foo/file echo "out" > \$out/file ''; }; in top // { foo = top.foo // { outputSpecified = true; }; }; }; } EOF cp ../simple.nix ../simple.builder.sh ../config.nix "$flake1Dir/" echo bar > "$flake1Dir/foo" nix build --json --out-link "$TEST_ROOT/result" "$flake1Dir#a1" [[ -e $TEST_ROOT/result/simple.nix ]] nix build --json --out-link "$TEST_ROOT/result" "$flake1Dir#a2" [[ $(cat "$TEST_ROOT/result") = bar ]] nix build --json --out-link "$TEST_ROOT/result" "$flake1Dir#a3" nix build --json --out-link "$TEST_ROOT/result" "$flake1Dir#a4" nix build --json --out-link "$TEST_ROOT/result" "$flake1Dir#a6" [[ -e $TEST_ROOT/result/simple.nix ]] nix build --impure --json --out-link "$TEST_ROOT/result" "$flake1Dir#a8" diff common.sh "$TEST_ROOT/result" expectStderr 1 nix build --impure --json --out-link "$TEST_ROOT/result" "$flake1Dir#a9" \ | grepQuiet "has 0 entries in its context. It should only have exactly one entry" nix build --json --out-link "$TEST_ROOT/result" "$flake1Dir"#a10 [[ $(readlink -e "$TEST_ROOT/result") = *simple.drv ]] expectStderr 1 nix build --json --out-link "$TEST_ROOT/result" "$flake1Dir#a11" \ | grepQuiet "has a context which refers to a complete source and binary closure" nix build --json --out-link "$TEST_ROOT/result" "$flake1Dir#a12" [[ -e $TEST_ROOT/result/hello ]] expectStderr 1 nix build --impure --json --out-link "$TEST_ROOT/result" "$flake1Dir#a13" \ | grepQuiet "has 2 entries in its context. It should only have exactly one entry" # Test accessing output in installables with `.` (foobarbaz.) nix build --json --no-link "$flake1Dir"#a14.foo | jq --exit-status ' (.[0] | (.drvPath | match(".*dot-installable.drv")) and (.outputs | keys == ["foo"])) '