mirror of
https://gitlab.com/rensa-nix/core.git
synced 2026-02-02 07:15:08 +01:00
Merge branch 'chore/tests' into 'main'
chore: add tests using nixtest See merge request rensa-nix/core!2
This commit is contained in:
commit
2338ee8635
9 changed files with 293 additions and 1 deletions
|
|
@ -3,8 +3,19 @@
|
||||||
in
|
in
|
||||||
cilib.mkCI {
|
cilib.mkCI {
|
||||||
pipelines."default" = {
|
pipelines."default" = {
|
||||||
stages = ["build" "deploy"];
|
stages = ["test" "build" "deploy"];
|
||||||
jobs = {
|
jobs = {
|
||||||
|
"test:lib" = {
|
||||||
|
stage = "test";
|
||||||
|
script = [
|
||||||
|
"nix run .#tests -- --junit=junit.xml"
|
||||||
|
];
|
||||||
|
allow_failure = true;
|
||||||
|
artifacts = {
|
||||||
|
when = "always";
|
||||||
|
reports.junit = "junit.xml";
|
||||||
|
};
|
||||||
|
};
|
||||||
"docs" = {
|
"docs" = {
|
||||||
stage = "build";
|
stage = "build";
|
||||||
script = [
|
script = [
|
||||||
|
|
|
||||||
19
cells/repo/flake.lock
generated
19
cells/repo/flake.lock
generated
|
|
@ -69,12 +69,31 @@
|
||||||
"type": "gitlab"
|
"type": "gitlab"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixtest-lib": {
|
||||||
|
"locked": {
|
||||||
|
"dir": "lib",
|
||||||
|
"lastModified": 1765728058,
|
||||||
|
"narHash": "sha256-V3FXECl1oTxEtGteNz3o3GJs/X8asSn1TxRpZ2F+htU=",
|
||||||
|
"owner": "TECHNOFAB",
|
||||||
|
"repo": "nixtest",
|
||||||
|
"rev": "2477ad31ae3aa4134e1bb5eeddbebe0cb64ccb57",
|
||||||
|
"type": "gitlab"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"dir": "lib",
|
||||||
|
"owner": "TECHNOFAB",
|
||||||
|
"ref": "v1.2.1",
|
||||||
|
"repo": "nixtest",
|
||||||
|
"type": "gitlab"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"devshell": "devshell",
|
"devshell": "devshell",
|
||||||
"devtools-lib": "devtools-lib",
|
"devtools-lib": "devtools-lib",
|
||||||
"nix-gitlab-ci-lib": "nix-gitlab-ci-lib",
|
"nix-gitlab-ci-lib": "nix-gitlab-ci-lib",
|
||||||
"nixmkdocs": "nixmkdocs",
|
"nixmkdocs": "nixmkdocs",
|
||||||
|
"nixtest-lib": "nixtest-lib",
|
||||||
"soonix-lib": "soonix-lib",
|
"soonix-lib": "soonix-lib",
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
soonix-lib.url = "gitlab:TECHNOFAB/soonix?dir=lib";
|
soonix-lib.url = "gitlab:TECHNOFAB/soonix?dir=lib";
|
||||||
nix-gitlab-ci-lib.url = "gitlab:TECHNOFAB/nix-gitlab-ci/3.1.2?dir=lib";
|
nix-gitlab-ci-lib.url = "gitlab:TECHNOFAB/nix-gitlab-ci/3.1.2?dir=lib";
|
||||||
devtools-lib.url = "gitlab:rensa-nix/devtools?dir=lib";
|
devtools-lib.url = "gitlab:rensa-nix/devtools?dir=lib";
|
||||||
|
nixtest-lib.url = "gitlab:TECHNOFAB/nixtest/v1.2.1?dir=lib";
|
||||||
treefmt-nix = {
|
treefmt-nix = {
|
||||||
url = "github:numtide/treefmt-nix";
|
url = "github:numtide/treefmt-nix";
|
||||||
flake = false;
|
flake = false;
|
||||||
|
|
@ -18,6 +19,8 @@
|
||||||
doclib = i.nixmkdocs.lib {inherit (i.parent) pkgs;};
|
doclib = i.nixmkdocs.lib {inherit (i.parent) pkgs;};
|
||||||
soonix = i.soonix-lib.lib {inherit (i.parent) pkgs;};
|
soonix = i.soonix-lib.lib {inherit (i.parent) pkgs;};
|
||||||
cilib = i.nix-gitlab-ci-lib.lib {inherit (i.parent) pkgs;};
|
cilib = i.nix-gitlab-ci-lib.lib {inherit (i.parent) pkgs;};
|
||||||
|
ntlib = i.nixtest-lib.lib {inherit (i.parent) pkgs;};
|
||||||
|
rensa = import "${i.parent.self}/lib" {inherit (i.parent.pkgs) lib;};
|
||||||
treefmt = import i.treefmt-nix;
|
treefmt = import i.treefmt-nix;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
10
cells/repo/tests.nix
Normal file
10
cells/repo/tests.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
{inputs, ...}: let
|
||||||
|
inherit (inputs) pkgs ntlib rensa;
|
||||||
|
in {
|
||||||
|
tests = ntlib.mkNixtest {
|
||||||
|
modules = ntlib.autodiscover {dir = "${inputs.self}/tests";};
|
||||||
|
args = {
|
||||||
|
inherit pkgs ntlib rensa;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -24,12 +24,14 @@
|
||||||
(simple "docs")
|
(simple "docs")
|
||||||
(simple "ci")
|
(simple "ci")
|
||||||
(simple "soonix")
|
(simple "soonix")
|
||||||
|
(simple "tests")
|
||||||
];
|
];
|
||||||
} {
|
} {
|
||||||
packages = rensa.select inputs.self [
|
packages = rensa.select inputs.self [
|
||||||
["repo" "docs"]
|
["repo" "docs"]
|
||||||
["repo" "ci" "packages"]
|
["repo" "ci" "packages"]
|
||||||
["repo" "soonix" "packages"]
|
["repo" "soonix" "packages"]
|
||||||
|
["repo" "tests"]
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
90
tests/builder_test.nix
Normal file
90
tests/builder_test.nix
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
ntlib,
|
||||||
|
rensa,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
suites."Builder" = {
|
||||||
|
pos = __curPos;
|
||||||
|
tests = [
|
||||||
|
{
|
||||||
|
name = "has system outputs";
|
||||||
|
expected = true;
|
||||||
|
actual = let
|
||||||
|
testFlake = rensa.build {
|
||||||
|
inputs = {};
|
||||||
|
cellsFrom = ../cells;
|
||||||
|
cellBlocks = with rensa.blocks; [
|
||||||
|
(simple "test")
|
||||||
|
];
|
||||||
|
systems = ["x86_64-linux"];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
builtins.hasAttr "x86_64-linux" testFlake;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "has ren metadata";
|
||||||
|
expected = true;
|
||||||
|
actual = let
|
||||||
|
testFlake = rensa.build {
|
||||||
|
inputs = {};
|
||||||
|
cellsFrom = ../cells;
|
||||||
|
cellBlocks = with rensa.blocks; [
|
||||||
|
(simple "test")
|
||||||
|
];
|
||||||
|
systems = ["x86_64-linux"];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
builtins.hasAttr "__ren" testFlake;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "merges outputs";
|
||||||
|
expected = {
|
||||||
|
packages = {
|
||||||
|
test-package = "merged";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
actual = let
|
||||||
|
testFlake =
|
||||||
|
rensa.buildWith {
|
||||||
|
inputs = {};
|
||||||
|
cellsFrom = ../cells;
|
||||||
|
cellBlocks = with rensa.blocks; [
|
||||||
|
(simple "test")
|
||||||
|
];
|
||||||
|
systems = ["x86_64-linux"];
|
||||||
|
} {
|
||||||
|
packages = {
|
||||||
|
test-package = "merged";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
packages = testFlake.packages;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "eval test";
|
||||||
|
type = "script";
|
||||||
|
script = ''
|
||||||
|
${ntlib.helpers.path [pkgs.gnugrep pkgs.coreutils pkgs.nix]}
|
||||||
|
${ntlib.helpers.scriptHelpers}
|
||||||
|
|
||||||
|
result=$(nix eval --impure --expr '
|
||||||
|
let
|
||||||
|
rensa = import ${../lib} {lib = import ${pkgs.path}/lib;};
|
||||||
|
testFlake = rensa.build {
|
||||||
|
inputs = { test = "value"; };
|
||||||
|
cellsFrom = ${../cells};
|
||||||
|
cellBlocks = [];
|
||||||
|
systems = [ "x86_64-linux" ];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
testFlake.__ren.__schema
|
||||||
|
')
|
||||||
|
|
||||||
|
assert "$result == \"v0\"" "should contain version"
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
51
tests/filter_test.nix
Normal file
51
tests/filter_test.nix
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
{rensa, ...}: {
|
||||||
|
suites."Filter" = {
|
||||||
|
pos = __curPos;
|
||||||
|
tests = [
|
||||||
|
{
|
||||||
|
name = "filter by cell";
|
||||||
|
expected = {
|
||||||
|
x86_64-linux = {};
|
||||||
|
};
|
||||||
|
actual = let
|
||||||
|
testFlake = {
|
||||||
|
__ren = {
|
||||||
|
cells = ["repo" "other"];
|
||||||
|
};
|
||||||
|
x86_64-linux = {
|
||||||
|
repo = {
|
||||||
|
docs = {value = "docs-value";};
|
||||||
|
ci = {value = "ci-value";};
|
||||||
|
};
|
||||||
|
other = {
|
||||||
|
packages = {value = "other-packages";};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
rensa.filter (_: cell: cell == "repo") testFlake [["*" "*"]];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "filter by block";
|
||||||
|
expected = {
|
||||||
|
x86_64-linux = {};
|
||||||
|
};
|
||||||
|
actual = let
|
||||||
|
testFlake = {
|
||||||
|
__ren = {
|
||||||
|
cells = ["repo"];
|
||||||
|
};
|
||||||
|
x86_64-linux = {
|
||||||
|
repo = {
|
||||||
|
docs = {value = "docs-value";};
|
||||||
|
ci = {value = "ci-value";};
|
||||||
|
packages = {value = "packages-value";};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
rensa.filter (block: _: block == "docs") testFlake [["repo" "*"]];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
57
tests/loader_test.nix
Normal file
57
tests/loader_test.nix
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
ntlib,
|
||||||
|
rensa,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
suites."Loader" = {
|
||||||
|
pos = __curPos;
|
||||||
|
tests = [
|
||||||
|
{
|
||||||
|
name = "cell sibling access";
|
||||||
|
expected = {
|
||||||
|
hello = "world";
|
||||||
|
};
|
||||||
|
actual = let
|
||||||
|
testFlake = rensa.build {
|
||||||
|
inputs = {};
|
||||||
|
cellsFrom = ../cells;
|
||||||
|
cellBlocks = with rensa.blocks; [
|
||||||
|
(simple "test")
|
||||||
|
];
|
||||||
|
systems = ["x86_64-linux"];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
testFlake.x86_64-linux.test.test;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "load file";
|
||||||
|
type = "script";
|
||||||
|
script = ''
|
||||||
|
${ntlib.helpers.path [pkgs.gnugrep pkgs.coreutils pkgs.nix]}
|
||||||
|
${ntlib.helpers.scriptHelpers}
|
||||||
|
|
||||||
|
mkdir -p "cells/testcell"
|
||||||
|
echo '{ hello = "world"; }' > "cells/testcell/packages.nix"
|
||||||
|
|
||||||
|
cat > "flake.nix" << 'EOF'
|
||||||
|
{
|
||||||
|
outputs = inputs: let
|
||||||
|
rensa = import ${../lib} { lib = import "${pkgs.path}/lib"; };
|
||||||
|
in rensa.build {
|
||||||
|
inputs = {};
|
||||||
|
cellsFrom = ./cells;
|
||||||
|
cellBlocks = with rensa.blocks; [ (simple "packages") ];
|
||||||
|
systems = [ "x86_64-linux" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
result=$(nix eval --impure .#x86_64-linux.testcell.packages.hello)
|
||||||
|
|
||||||
|
assert "$result == \"world\"" "should equal to world"
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
49
tests/select_test.nix
Normal file
49
tests/select_test.nix
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
{rensa, ...}: {
|
||||||
|
suites."Select" = {
|
||||||
|
pos = __curPos;
|
||||||
|
tests = [
|
||||||
|
{
|
||||||
|
name = "single block";
|
||||||
|
expected = {
|
||||||
|
x86_64-linux = {value = "test-value";};
|
||||||
|
};
|
||||||
|
actual = let
|
||||||
|
testFlake = {
|
||||||
|
__ren = {
|
||||||
|
cells = ["repo"];
|
||||||
|
};
|
||||||
|
x86_64-linux = {
|
||||||
|
repo = {
|
||||||
|
docs = {value = "test-value";};
|
||||||
|
ci = {packages = {value = "ci-packages";};};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
rensa.select testFlake [["repo" "docs"]];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "multiple blocks";
|
||||||
|
expected = {
|
||||||
|
x86_64-linux = {value = "ci-packages";};
|
||||||
|
};
|
||||||
|
actual = let
|
||||||
|
testFlake = {
|
||||||
|
__ren = {
|
||||||
|
cells = ["repo"];
|
||||||
|
};
|
||||||
|
x86_64-linux = {
|
||||||
|
repo = {
|
||||||
|
ci = {packages = {value = "ci-packages";};};
|
||||||
|
other = {value = "ignored";};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
rensa.select testFlake [
|
||||||
|
["repo" "ci" "packages"]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue