lix/tests/functional/flakes/inputs.sh
John Ericson 30dcc19d1f Put functional tests in tests/functional
I think it is bad for these reasons when `tests/` contains a mix of
functional and integration tests

 - Concepts is harder to understand, the documentation makes a good
   unit vs functional vs integration distinction, but when the
   integration tests are just two subdirs within `tests/` this is not
   clear.

 - Source filtering in the `flake.nix` is more complex. We need to
   filter out some of the dirs from `tests/`, rather than simply pick
   the dirs we want and take all of them. This is a good sign the
   structure of what we are trying to do is not matching the structure
   of the files.

With this change we have a clean:
```shell-session
$ git show 'HEAD:tests'
tree HEAD:tests

functional/
installer/
nixos/
```

(cherry picked from commit 68c81c7375)
2023-12-01 12:06:43 -05:00

81 lines
1.6 KiB
Bash

source ./common.sh
requireGit
test_subdir_self_path() {
baseDir=$TEST_ROOT/$RANDOM
flakeDir=$baseDir/b-low
mkdir -p $flakeDir
writeSimpleFlake $baseDir
writeSimpleFlake $flakeDir
echo all good > $flakeDir/message
cat > $flakeDir/flake.nix <<EOF
{
outputs = inputs: rec {
packages.$system = rec {
default =
assert builtins.readFile ./message == "all good\n";
assert builtins.readFile (inputs.self + "/message") == "all good\n";
import ./simple.nix;
};
};
}
EOF
(
nix build $baseDir?dir=b-low --no-link
)
}
test_subdir_self_path
test_git_subdir_self_path() {
repoDir=$TEST_ROOT/repo-$RANDOM
createGitRepo $repoDir
flakeDir=$repoDir/b-low
mkdir -p $flakeDir
writeSimpleFlake $repoDir
writeSimpleFlake $flakeDir
echo all good > $flakeDir/message
cat > $flakeDir/flake.nix <<EOF
{
outputs = inputs: rec {
packages.$system = rec {
default =
assert builtins.readFile ./message == "all good\n";
assert builtins.readFile (inputs.self + "/message") == "all good\n";
assert inputs.self.outPath == inputs.self.sourceInfo.outPath + "/b-low";
import ./simple.nix;
};
};
}
EOF
(
cd $flakeDir
git add .
git commit -m init
# nix build
)
clientDir=$TEST_ROOT/client-$RANDOM
mkdir -p $clientDir
cat > $clientDir/flake.nix <<EOF
{
inputs.inp = {
type = "git";
url = "file://$repoDir";
dir = "b-low";
};
outputs = inputs: rec {
packages = inputs.inp.packages;
};
}
EOF
nix build $clientDir --no-link
}
test_git_subdir_self_path