tests: rework derivation stubbing
Instead of having to manually stub packages that should not be downloaded we instead automatically stub all packages (except a small list of whitelisted ones). Tests can re-introduce the real package by using the `realPkgs` module argument.
This commit is contained in:
parent
c5c2cbc866
commit
7a3f0b3b8d
480 changed files with 3557 additions and 5511 deletions
|
|
@ -1,40 +1,36 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
{ realPkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [ ../../accounts/email-test-accounts.nix ];
|
||||
|
||||
config = {
|
||||
accounts.email.accounts.hm-account.smtp.tls.certificatesFile =
|
||||
"/etc/test/certificates.crt";
|
||||
programs.git = {
|
||||
enable = true;
|
||||
package = pkgs.gitMinimal;
|
||||
userEmail = "hm@example.com";
|
||||
userName = "H. M. Test";
|
||||
};
|
||||
accounts.email.accounts.hm-account.smtp.tls.certificatesFile =
|
||||
"/etc/test/certificates.crt";
|
||||
|
||||
home.stateVersion = "20.09";
|
||||
|
||||
nmt.script = ''
|
||||
function assertGitConfig() {
|
||||
local value
|
||||
value=$(${pkgs.gitMinimal}/bin/git config \
|
||||
--file $TESTED/home-files/.config/git/config \
|
||||
--get $1)
|
||||
if [[ $value != $2 ]]; then
|
||||
fail "Expected option '$1' to have value '$2' but it was '$value'"
|
||||
fi
|
||||
}
|
||||
|
||||
assertFileExists home-files/.config/git/config
|
||||
assertFileContent home-files/.config/git/config ${
|
||||
./git-with-email-expected.conf
|
||||
}
|
||||
|
||||
assertGitConfig "sendemail.hm@example.com.from" "H. M. Test <hm@example.com>"
|
||||
assertGitConfig "sendemail.hm-account.from" "H. M. Test Jr. <hm@example.org>"
|
||||
'';
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userEmail = "hm@example.com";
|
||||
userName = "H. M. Test";
|
||||
};
|
||||
|
||||
home.stateVersion = "20.09";
|
||||
|
||||
nmt.script = ''
|
||||
function assertGitConfig() {
|
||||
local value
|
||||
value=$(${realPkgs.gitMinimal}/bin/git config \
|
||||
--file $TESTED/home-files/.config/git/config \
|
||||
--get $1)
|
||||
if [[ $value != $2 ]]; then
|
||||
fail "Expected option '$1' to have value '$2' but it was '$value'"
|
||||
fi
|
||||
}
|
||||
|
||||
assertFileExists home-files/.config/git/config
|
||||
assertFileContent home-files/.config/git/config ${
|
||||
./git-with-email-expected.conf
|
||||
}
|
||||
|
||||
assertGitConfig "sendemail.hm@example.com.from" "H. M. Test <hm@example.com>"
|
||||
assertGitConfig "sendemail.hm-account.from" "H. M. Test Jr. <hm@example.org>"
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, ... }:
|
||||
{ realPkgs, ... }:
|
||||
|
||||
{
|
||||
programs.git = {
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
nmt.script = ''
|
||||
function getGitConfig() {
|
||||
${pkgs.gitMinimal}/bin/git config \
|
||||
${realPkgs.gitMinimal}/bin/git config \
|
||||
--file $TESTED/home-files/.config/git/config \
|
||||
--get $1
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,43 +1,36 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
{ pkgs, realPkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [ ../../accounts/email-test-accounts.nix ];
|
||||
|
||||
config = {
|
||||
accounts.email.accounts."hm@example.com".msmtp.enable = true;
|
||||
accounts.email.accounts."hm@example.com".msmtp.enable = true;
|
||||
|
||||
programs.git = {
|
||||
enable = true;
|
||||
package = pkgs.gitMinimal;
|
||||
userEmail = "hm@example.com";
|
||||
userName = "H. M. Test";
|
||||
};
|
||||
|
||||
home.stateVersion = "20.09";
|
||||
|
||||
test.stubs.msmtp = { };
|
||||
|
||||
nmt.script = ''
|
||||
function assertGitConfig() {
|
||||
local value
|
||||
value=$(${pkgs.gitMinimal}/bin/git config \
|
||||
--file $TESTED/home-files/.config/git/config \
|
||||
--get $1)
|
||||
if [[ $value != $2 ]]; then
|
||||
fail "Expected option '$1' to have value '$2' but it was '$value'"
|
||||
fi
|
||||
}
|
||||
|
||||
assertFileExists home-files/.config/git/config
|
||||
assertFileContent home-files/.config/git/config \
|
||||
${./git-with-msmtp-expected.conf}
|
||||
|
||||
assertGitConfig "sendemail.hm@example.com.from" "H. M. Test <hm@example.com>"
|
||||
assertGitConfig "sendemail.hm-account.from" "H. M. Test Jr. <hm@example.org>"
|
||||
assertGitConfig "sendemail.hm@example.com.smtpServer" "${pkgs.msmtp}/bin/msmtp"
|
||||
assertGitConfig "sendemail.hm@example.com.envelopeSender" "auto"
|
||||
'';
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userEmail = "hm@example.com";
|
||||
userName = "H. M. Test";
|
||||
};
|
||||
|
||||
home.stateVersion = "20.09";
|
||||
|
||||
nmt.script = ''
|
||||
function assertGitConfig() {
|
||||
local value
|
||||
value=$(${realPkgs.gitMinimal}/bin/git config \
|
||||
--file $TESTED/home-files/.config/git/config \
|
||||
--get $1)
|
||||
if [[ $value != $2 ]]; then
|
||||
fail "Expected option '$1' to have value '$2' but it was '$value'"
|
||||
fi
|
||||
}
|
||||
|
||||
assertFileExists home-files/.config/git/config
|
||||
assertFileContent home-files/.config/git/config \
|
||||
${./git-with-msmtp-expected.conf}
|
||||
|
||||
assertGitConfig "sendemail.hm@example.com.from" "H. M. Test <hm@example.com>"
|
||||
assertGitConfig "sendemail.hm-account.from" "H. M. Test Jr. <hm@example.org>"
|
||||
assertGitConfig "sendemail.hm@example.com.smtpServer" "${pkgs.msmtp}/bin/msmtp"
|
||||
assertGitConfig "sendemail.hm@example.com.envelopeSender" "auto"
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,22 +1,20 @@
|
|||
{ pkgs, ... }: {
|
||||
config = {
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "John Doe";
|
||||
userEmail = "user@example.org";
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "John Doe";
|
||||
userEmail = "user@example.org";
|
||||
|
||||
signing = {
|
||||
gpgPath = "path-to-gpg";
|
||||
key = "00112233445566778899AABBCCDDEEFF";
|
||||
signByDefault = true;
|
||||
};
|
||||
signing = {
|
||||
gpgPath = "path-to-gpg";
|
||||
key = "00112233445566778899AABBCCDDEEFF";
|
||||
signByDefault = true;
|
||||
};
|
||||
|
||||
nmt.script = ''
|
||||
assertFileExists home-files/.config/git/config
|
||||
assertFileContent home-files/.config/git/config ${
|
||||
./git-with-signing-key-id-expected.conf
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
nmt.script = ''
|
||||
assertFileExists home-files/.config/git/config
|
||||
assertFileContent home-files/.config/git/config ${
|
||||
./git-with-signing-key-id-expected.conf
|
||||
}
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,29 +1,22 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
config = {
|
||||
programs.git = {
|
||||
enable = true;
|
||||
package = pkgs.gitMinimal;
|
||||
extraConfig = ''
|
||||
This can be anything.
|
||||
'';
|
||||
userEmail = "user@example.org";
|
||||
userName = "John Doe";
|
||||
};
|
||||
|
||||
test.asserts.warnings.expected = [''
|
||||
Using programs.git.extraConfig as a string option is
|
||||
deprecated and will be removed in the future. Please
|
||||
change to using it as an attribute set instead.
|
||||
''];
|
||||
|
||||
nmt.script = ''
|
||||
assertFileExists home-files/.config/git/config
|
||||
assertFileContent home-files/.config/git/config \
|
||||
${./git-with-str-extra-config-expected.conf}
|
||||
programs.git = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
This can be anything.
|
||||
'';
|
||||
userEmail = "user@example.org";
|
||||
userName = "John Doe";
|
||||
};
|
||||
|
||||
test.asserts.warnings.expected = [''
|
||||
Using programs.git.extraConfig as a string option is
|
||||
deprecated and will be removed in the future. Please
|
||||
change to using it as an attribute set instead.
|
||||
''];
|
||||
|
||||
nmt.script = ''
|
||||
assertFileExists home-files/.config/git/config
|
||||
assertFileContent home-files/.config/git/config \
|
||||
${./git-with-str-extra-config-expected.conf}
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,22 +1,20 @@
|
|||
{ pkgs, ... }: {
|
||||
config = {
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "John Doe";
|
||||
userEmail = "user@example.org";
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "John Doe";
|
||||
userEmail = "user@example.org";
|
||||
|
||||
signing = {
|
||||
gpgPath = "path-to-gpg";
|
||||
key = null;
|
||||
signByDefault = true;
|
||||
};
|
||||
signing = {
|
||||
gpgPath = "path-to-gpg";
|
||||
key = null;
|
||||
signByDefault = true;
|
||||
};
|
||||
|
||||
nmt.script = ''
|
||||
assertFileExists home-files/.config/git/config
|
||||
assertFileContent home-files/.config/git/config ${
|
||||
./git-without-signing-key-id-expected.conf
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
nmt.script = ''
|
||||
assertFileExists home-files/.config/git/config
|
||||
assertFileContent home-files/.config/git/config ${
|
||||
./git-without-signing-key-id-expected.conf
|
||||
}
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
{ lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
||||
|
|
@ -21,81 +19,74 @@ let
|
|||
};
|
||||
|
||||
in {
|
||||
config = {
|
||||
programs.git = mkMerge [
|
||||
{
|
||||
programs.git = lib.mkMerge [
|
||||
{
|
||||
enable = true;
|
||||
package = pkgs.gitMinimal;
|
||||
aliases = {
|
||||
a1 = "foo";
|
||||
a2 = "bar";
|
||||
escapes = ''"\n '';
|
||||
};
|
||||
extraConfig = {
|
||||
extra = {
|
||||
name = "value";
|
||||
multiple = [ 1 ];
|
||||
};
|
||||
};
|
||||
ignores = [ "*~" "*.swp" ];
|
||||
includes = [
|
||||
{ path = "~/path/to/config.inc"; }
|
||||
{
|
||||
path = "~/path/to/conditional.inc";
|
||||
condition = "gitdir:~/src/dir";
|
||||
}
|
||||
{
|
||||
condition = "gitdir:~/src/dir";
|
||||
contents = gitInclude;
|
||||
}
|
||||
{
|
||||
condition = "gitdir:~/src/otherproject";
|
||||
contents = gitInclude;
|
||||
contentSuffix = "gitconfig-work";
|
||||
}
|
||||
];
|
||||
signing = {
|
||||
gpgPath = "path-to-gpg";
|
||||
key = "00112233445566778899AABBCCDDEEFF";
|
||||
signByDefault = true;
|
||||
};
|
||||
userEmail = "user@example.org";
|
||||
userName = "John Doe";
|
||||
lfs.enable = true;
|
||||
delta = {
|
||||
enable = true;
|
||||
package = pkgs.gitMinimal;
|
||||
aliases = {
|
||||
a1 = "foo";
|
||||
a2 = "bar";
|
||||
escapes = ''"\n '';
|
||||
};
|
||||
extraConfig = {
|
||||
extra = {
|
||||
name = "value";
|
||||
multiple = [ 1 ];
|
||||
options = {
|
||||
features = "decorations";
|
||||
whitespace-error-style = "22 reverse";
|
||||
decorations = {
|
||||
commit-decoration-style = "bold yellow box ul";
|
||||
file-style = "bold yellow ul";
|
||||
file-decoration-style = "none";
|
||||
};
|
||||
};
|
||||
ignores = [ "*~" "*.swp" ];
|
||||
includes = [
|
||||
{ path = "~/path/to/config.inc"; }
|
||||
{
|
||||
path = "~/path/to/conditional.inc";
|
||||
condition = "gitdir:~/src/dir";
|
||||
}
|
||||
{
|
||||
condition = "gitdir:~/src/dir";
|
||||
contents = gitInclude;
|
||||
}
|
||||
{
|
||||
condition = "gitdir:~/src/otherproject";
|
||||
contents = gitInclude;
|
||||
contentSuffix = "gitconfig-work";
|
||||
}
|
||||
];
|
||||
signing = {
|
||||
gpgPath = "path-to-gpg";
|
||||
key = "00112233445566778899AABBCCDDEEFF";
|
||||
signByDefault = true;
|
||||
};
|
||||
userEmail = "user@example.org";
|
||||
userName = "John Doe";
|
||||
lfs.enable = true;
|
||||
delta = {
|
||||
enable = true;
|
||||
options = {
|
||||
features = "decorations";
|
||||
whitespace-error-style = "22 reverse";
|
||||
decorations = {
|
||||
commit-decoration-style = "bold yellow box ul";
|
||||
file-style = "bold yellow ul";
|
||||
file-decoration-style = "none";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
aliases.a2 = mkForce "baz";
|
||||
extraConfig."extra \"backcompat.with.dots\"".previously = "worked";
|
||||
extraConfig.extra.boolean = true;
|
||||
extraConfig.extra.integer = 38;
|
||||
extraConfig.extra.multiple = [ 2 ];
|
||||
extraConfig.extra.subsection.value = "test";
|
||||
}
|
||||
];
|
||||
{
|
||||
aliases.a2 = lib.mkForce "baz";
|
||||
extraConfig."extra \"backcompat.with.dots\"".previously = "worked";
|
||||
extraConfig.extra.boolean = true;
|
||||
extraConfig.extra.integer = 38;
|
||||
extraConfig.extra.multiple = [ 2 ];
|
||||
extraConfig.extra.subsection.value = "test";
|
||||
}
|
||||
];
|
||||
|
||||
test.stubs = {
|
||||
git-lfs = { };
|
||||
delta = { };
|
||||
};
|
||||
|
||||
nmt.script = ''
|
||||
assertFileExists home-files/.config/git/config
|
||||
assertFileContent home-files/.config/git/config ${
|
||||
substituteExpected ./git-expected.conf
|
||||
}
|
||||
'';
|
||||
};
|
||||
nmt.script = ''
|
||||
assertFileExists home-files/.config/git/config
|
||||
assertFileContent home-files/.config/git/config ${
|
||||
substituteExpected ./git-expected.conf
|
||||
}
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue