diff options
author | Josef Kemetmüller <josef.kemetmueller@gmail.com> | 2023-03-17 21:10:55 +0100 |
---|---|---|
committer | Josef Kemetmüller <josef.kemetmueller@gmail.com> | 2023-03-17 22:10:28 +0100 |
commit | f9c24d67b96f7d2cc4293ac8c3fbed70eb8328a8 (patch) | |
tree | caf58fa32e5e546610dea69c04a7b4e770ee8980 /tests/flakes/flake-in-submodule.sh | |
parent | 790dd2555b8a324035af8b03aad582a25f7a0ecd (diff) |
Add a test with flake.nix in a submodule
I noticed a regression in the lazy-trees branch, which I'm trying to
capture with this test. While the tests succeeds in master, the
lazy-trees branch gives the following error message:
error: access to path
'/build/nix-test/tests/flakes/flake-in-submodule/rootRepo/submodule/flake.nix'
is forbidden because it is not under Git control; maybe you should
'git add' it to the repository
'/build/nix-test/tests/flakes/flake-in-submodule/rootRepo'?
Diffstat (limited to 'tests/flakes/flake-in-submodule.sh')
-rw-r--r-- | tests/flakes/flake-in-submodule.sh | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/flakes/flake-in-submodule.sh b/tests/flakes/flake-in-submodule.sh new file mode 100644 index 000000000..9df47921e --- /dev/null +++ b/tests/flakes/flake-in-submodule.sh @@ -0,0 +1,54 @@ +source common.sh + +# Tests that: +# - flake.nix may reside inside of a git submodule +# - the flake can access content outside of the submodule +# +# rootRepo +# ├── root.nix +# └── submodule +# ├── flake.nix +# └── sub.nix + + +requireGit + +clearStore + +# Submodules can't be fetched locally by default. +# See fetchGitSubmodules.sh +export XDG_CONFIG_HOME=$TEST_HOME/.config +git config --global protocol.file.allow always + + +rootRepo=$TEST_ROOT/rootRepo +subRepo=$TEST_ROOT/submodule + +rm -rf $rootRepo $subRepo $TEST_HOME/.cache/nix + + +createGitRepo $subRepo +cat > $subRepo/flake.nix <<EOF +{ + outputs = { self }: { + sub = import ./sub.nix; + root = import ../root.nix; + }; +} +EOF +echo '"expression in submodule"' > $subRepo/sub.nix +git -C $subRepo add flake.nix sub.nix +git -C $subRepo commit -m Initial + +createGitRepo $rootRepo + +git -C $rootRepo submodule init +git -C $rootRepo submodule add $subRepo submodule +echo '"expression in root repo"' > $rootRepo/root.nix +git -C $rootRepo add root.nix +git -C $rootRepo commit -m "Add root.nix" + +# Flake can live inside a submodule and can be accessed via ?dir=submodule +[[ $(nix eval --json git+file://$rootRepo\?submodules=1\&dir=submodule#sub ) = '"expression in submodule"' ]] +# The flake can access content outside of the submodule +[[ $(nix eval --json git+file://$rootRepo\?submodules=1\&dir=submodule#root ) = '"expression in root repo"' ]] |