Writing Tests
Conflake integrates lib.debug.runTests with nix flake check.
Here is a minimal outputs to define tests,
outputs =
{ conflake, ... }@inputs:
conflake ./. {
inherit inputs;
tests = {
add = {
expr = 1 + 1;
expected = 2;
};
};
};Tests attributes are prefixed with test- before calling lib.debug.runTests, set presets.checks.tests.prefix = ""; to turn it off.
Running Tests
Run nix flake check will run the tests with lib.debug.runTests along side with other checks.
To run only the tests,
# Print nothing when tests passed
nix build --no-link .#checks.x86_64-linux.testsFile-based Tests
Additionally, nix files under tests/folder will be loaded and run withnix flake check too.
Each test files should define a function returning an attribute set of test cases, e.g.
{ lib, ... }:
{
singleton = {
expr = lib.singleton 1;
expected = [ 1 ];
};
}The function arguments is a combination of pkgs, moduleArgs and presets.checks.tests.args.
List Form Test
Apart from attribute set {expr, expected} test, test case can be defined as a list, which is convenient when the testing value need to be transformed before comparing against the expected value.
{ lib, ... }:
{
simple = [
(lib.singleton { a = 1; })
[ { a = 1; } ]
];
chained = [
(lib.singleton { a = 1; })
builtins.head
(x: x.a)
1
];
}