mirror of
https://github.com/nix-community/home-manager
synced 2024-11-30 06:59:45 +01:00
tests: add initial test framework
This commit is contained in:
parent
5d63abb473
commit
6d56abcec1
9 changed files with 146 additions and 1 deletions
|
@ -8,4 +8,5 @@ before_script:
|
||||||
- mkdir -m 0755 -p /nix/var/nix/{profiles,gcroots}/per-user/$USER
|
- mkdir -m 0755 -p /nix/var/nix/{profiles,gcroots}/per-user/$USER
|
||||||
|
|
||||||
script:
|
script:
|
||||||
nix-shell . -A install
|
- nix-shell . -A install
|
||||||
|
- nix-shell . -A tests.run.all
|
||||||
|
|
|
@ -11,4 +11,8 @@ rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
nixos = import ./nixos;
|
nixos = import ./nixos;
|
||||||
|
|
||||||
|
tests = import ./tests {
|
||||||
|
inherit pkgs;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
23
tests/default.nix
Normal file
23
tests/default.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{ pkgs ? import <nixpkgs> {} }:
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
nmt = pkgs.fetchFromGitLab {
|
||||||
|
owner = "rycee";
|
||||||
|
repo = "nmt";
|
||||||
|
rev = "4d7b4bb34ed9df333b5aa54509e50881f3a59939";
|
||||||
|
sha256 = "1rha4n5xafxwa5gbrjwnm63z944jr27gv71krkzzmb5wapi1r36m";
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
import nmt {
|
||||||
|
inherit pkgs;
|
||||||
|
modules = import ../modules/modules.nix { inherit pkgs; lib = pkgs.lib; };
|
||||||
|
testedAttrPath = [ "home" "activationPackage" ];
|
||||||
|
tests = {
|
||||||
|
"git/with-most-options" = ./modules/programs/git.nix;
|
||||||
|
"git/with-str-extra-config" = ./modules/programs/git-with-str-extra-config.nix;
|
||||||
|
xresources = ./modules/xresources.nix;
|
||||||
|
};
|
||||||
|
}
|
23
tests/modules/programs/git-expected.conf
Normal file
23
tests/modules/programs/git-expected.conf
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
[alias]
|
||||||
|
a1=foo
|
||||||
|
a2=bar
|
||||||
|
|
||||||
|
[commit]
|
||||||
|
gpgSign=true
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
name=value
|
||||||
|
|
||||||
|
[gpg]
|
||||||
|
program=path-to-gpg
|
||||||
|
|
||||||
|
[user]
|
||||||
|
email=user@example.org
|
||||||
|
name=John Doe
|
||||||
|
signingKey=00112233445566778899AABBCCDDEEFF
|
||||||
|
|
||||||
|
[include]
|
||||||
|
path = ~/path/to/config.inc
|
||||||
|
|
||||||
|
[includeIf "gitdir:~/src/dir"]
|
||||||
|
path = ~/path/to/conditional.inc
|
|
@ -0,0 +1,5 @@
|
||||||
|
This can be anything.
|
||||||
|
|
||||||
|
[user]
|
||||||
|
email=user@example.org
|
||||||
|
name=John Doe
|
22
tests/modules/programs/git-with-str-extra-config.nix
Normal file
22
tests/modules/programs/git-with-str-extra-config.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = ''
|
||||||
|
This can be anything.
|
||||||
|
'';
|
||||||
|
userEmail = "user@example.org";
|
||||||
|
userName = "John Doe";
|
||||||
|
};
|
||||||
|
|
||||||
|
nmt.script = ''
|
||||||
|
assertFileExists home-files/.config/git/config
|
||||||
|
assertFileContent home-files/.config/git/config \
|
||||||
|
${./git-with-str-extra-config-expected.conf}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
40
tests/modules/programs/git.nix
Normal file
40
tests/modules/programs/git.nix
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
aliases = {
|
||||||
|
a1 = "foo";
|
||||||
|
a2 = "bar";
|
||||||
|
};
|
||||||
|
extraConfig = {
|
||||||
|
extra = {
|
||||||
|
name = "value";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ignores = [ "*~" "*.swp" ];
|
||||||
|
includes = [
|
||||||
|
{ path = "~/path/to/config.inc"; }
|
||||||
|
{
|
||||||
|
path = "~/path/to/conditional.inc";
|
||||||
|
condition = "gitdir:~/src/dir";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
signing = {
|
||||||
|
gpgPath = "path-to-gpg";
|
||||||
|
key = "00112233445566778899AABBCCDDEEFF";
|
||||||
|
signByDefault = true;
|
||||||
|
};
|
||||||
|
userEmail = "user@example.org";
|
||||||
|
userName = "John Doe";
|
||||||
|
};
|
||||||
|
|
||||||
|
nmt.script = ''
|
||||||
|
assertFileExists home-files/.config/git/config
|
||||||
|
assertFileContent home-files/.config/git/config ${./git-expected.conf}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
5
tests/modules/xresources-expected.conf
Normal file
5
tests/modules/xresources-expected.conf
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
Test*boolean1: true
|
||||||
|
Test*boolean2: false
|
||||||
|
Test*int: 10
|
||||||
|
Test*list: list-str, true, false, 10
|
||||||
|
Test*string: test-string
|
22
tests/modules/xresources.nix
Normal file
22
tests/modules/xresources.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
xresources = {
|
||||||
|
properties = {
|
||||||
|
"Test*string" = "test-string";
|
||||||
|
"Test*boolean1" = true;
|
||||||
|
"Test*boolean2" = false;
|
||||||
|
"Test*int" = 10;
|
||||||
|
"Test*list" = [ "list-str" true false 10 ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nmt.script = ''
|
||||||
|
assertFileExists home-files/.Xresources
|
||||||
|
assertFileContent home-files/.Xresources ${./xresources-expected.conf}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue