mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-27 16:16:16 +02:00
68c81c7375
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/ ```
87 lines
2 KiB
Bash
87 lines
2 KiB
Bash
source ./common.sh
|
|
|
|
requireGit
|
|
|
|
templatesDir=$TEST_ROOT/templates
|
|
flakeDir=$TEST_ROOT/flake
|
|
nixpkgsDir=$TEST_ROOT/nixpkgs
|
|
|
|
nix registry add --registry $registry templates git+file://$templatesDir
|
|
nix registry add --registry $registry nixpkgs git+file://$nixpkgsDir
|
|
|
|
createGitRepo $nixpkgsDir
|
|
createSimpleGitFlake $nixpkgsDir
|
|
|
|
# Test 'nix flake init'.
|
|
createGitRepo $templatesDir
|
|
|
|
cat > $templatesDir/flake.nix <<EOF
|
|
{
|
|
description = "Some templates";
|
|
|
|
outputs = { self }: {
|
|
templates = rec {
|
|
trivial = {
|
|
path = ./trivial;
|
|
description = "A trivial flake";
|
|
welcomeText = ''
|
|
Welcome to my trivial flake
|
|
'';
|
|
};
|
|
default = trivial;
|
|
};
|
|
};
|
|
}
|
|
EOF
|
|
|
|
mkdir $templatesDir/trivial
|
|
|
|
cat > $templatesDir/trivial/flake.nix <<EOF
|
|
{
|
|
description = "A flake for building Hello World";
|
|
|
|
outputs = { self, nixpkgs }: {
|
|
packages.$system = rec {
|
|
hello = nixpkgs.legacyPackages.$system.hello;
|
|
default = hello;
|
|
};
|
|
};
|
|
}
|
|
EOF
|
|
echo a > $templatesDir/trivial/a
|
|
echo b > $templatesDir/trivial/b
|
|
|
|
git -C $templatesDir add flake.nix trivial/
|
|
git -C $templatesDir commit -m 'Initial'
|
|
|
|
nix flake check templates
|
|
nix flake show templates
|
|
nix flake show templates --json | jq
|
|
|
|
createGitRepo $flakeDir
|
|
(cd $flakeDir && nix flake init)
|
|
(cd $flakeDir && nix flake init) # check idempotence
|
|
git -C $flakeDir add flake.nix
|
|
nix flake check $flakeDir
|
|
nix flake show $flakeDir
|
|
nix flake show $flakeDir --json | jq
|
|
git -C $flakeDir commit -a -m 'Initial'
|
|
|
|
# Test 'nix flake init' with benign conflicts
|
|
createGitRepo "$flakeDir"
|
|
echo a > $flakeDir/a
|
|
(cd $flakeDir && nix flake init) # check idempotence
|
|
|
|
# Test 'nix flake init' with conflicts
|
|
createGitRepo "$flakeDir"
|
|
echo b > $flakeDir/a
|
|
pushd $flakeDir
|
|
(! nix flake init) |& grep "refusing to overwrite existing file '$flakeDir/a'"
|
|
popd
|
|
git -C $flakeDir commit -a -m 'Changed'
|
|
|
|
# Test 'nix flake new'.
|
|
rm -rf $flakeDir
|
|
nix flake new -t templates#trivial $flakeDir
|
|
nix flake new -t templates#trivial $flakeDir # check idempotence
|
|
nix flake check $flakeDir
|