tests: add support for asserting warnings

This adds a "test.asserts" module that currently just provides a
convenient way to assert on the content of warnings. By default all
tests will assert that no warnings are given.
This commit is contained in:
Robert Helgesson 2020-12-30 17:20:47 +01:00
parent 4dedfcfd95
commit 9d53afb709
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
7 changed files with 64 additions and 1 deletions

43
tests/asserts.nix Normal file
View file

@ -0,0 +1,43 @@
{ config, lib, pkgs, ... }:
with lib;
{
options.test.asserts = {
warnings = {
enable = mkOption {
type = types.bool;
default = true;
description = "Whether warning asserts are enabled.";
};
expected = mkOption {
type = types.listOf types.str;
default = [ ];
description = ''
List of expected warnings.
'';
};
};
};
config = mkIf config.test.asserts.warnings.enable {
home.file = {
"asserts/warnings.actual".text = concatStringsSep ''
--
'' config.warnings;
};
nmt.script = ''
assertFileContent \
home-files/asserts/warnings.actual \
${
pkgs.writeText "warnings.expected" (concatStringsSep ''
--
'' config.test.asserts.warnings.expected)
}
'';
};
}

View file

@ -25,6 +25,8 @@ let
# Avoid including documentation since this will cause # Avoid including documentation since this will cause
# unnecessary rebuilds of the tests. # unnecessary rebuilds of the tests.
manual.manpages.enable = false; manual.manpages.enable = false;
imports = [ ./asserts.nix ];
} }
]; ];

View file

@ -14,6 +14,12 @@ with lib;
userName = "John Doe"; 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 = '' nmt.script = ''
assertFileExists home-files/.config/git/config assertFileExists home-files/.config/git/config
assertFileContent home-files/.config/git/config \ assertFileContent home-files/.config/git/config \

View file

@ -8,7 +8,10 @@ with lib;
config = { config = {
programs.lieer.enable = true; programs.lieer.enable = true;
accounts.email.accounts = { "hm@example.com".lieer.enable = true; }; accounts.email.accounts."hm@example.com" = {
lieer.enable = true;
notmuch.enable = true;
};
nixpkgs.overlays = [ nixpkgs.overlays = [
(self: super: { gmailieer = pkgs.writeScriptBin "dummy-gmailieer" ""; }) (self: super: { gmailieer = pkgs.writeScriptBin "dummy-gmailieer" ""; })

View file

@ -66,6 +66,10 @@ in {
}]; }];
}; };
# Remove when https://github.com/nix-community/home-manager/issues/1686 is
# fixed.
test.asserts.warnings.enable = false;
nmt.description = '' nmt.description = ''
Test for the broken configuration Test for the broken configuration
https://github.com/nix-community/home-manager/pull/1329#issuecomment-653253069 https://github.com/nix-community/home-manager/pull/1329#issuecomment-653253069

View file

@ -50,6 +50,10 @@ in {
}]; }];
}; };
# Remove when https://github.com/nix-community/home-manager/issues/1686 is
# fixed.
test.asserts.warnings.enable = false;
nmt.script = '' nmt.script = ''
assertPathNotExists home-files/.config/waybar/style.css assertPathNotExists home-files/.config/waybar/style.css
assertFileContent \ assertFileContent \

View file

@ -11,6 +11,7 @@ with lib;
accounts.email.accounts = { accounts.email.accounts = {
"hm@example.com".lieer.enable = true; "hm@example.com".lieer.enable = true;
"hm@example.com".lieer.sync.enable = true; "hm@example.com".lieer.sync.enable = true;
"hm@example.com".notmuch.enable = true;
}; };
nixpkgs.overlays = [ nixpkgs.overlays = [