mirror of
https://gitlab.com/rensa-nix/core.git
synced 2026-02-01 23:05:08 +01:00
Merge branch 'chore/tests' into feat/autodiscovery
This commit is contained in:
commit
2aaf40e5f3
9 changed files with 293 additions and 1 deletions
|
|
@ -3,8 +3,19 @@
|
|||
in
|
||||
cilib.mkCI {
|
||||
pipelines."default" = {
|
||||
stages = ["build" "deploy"];
|
||||
stages = ["test" "build" "deploy"];
|
||||
jobs = {
|
||||
"test:lib" = {
|
||||
stage = "test";
|
||||
script = [
|
||||
"nix run .#tests -- --junit=junit.xml"
|
||||
];
|
||||
allow_failure = true;
|
||||
artifacts = {
|
||||
when = "always";
|
||||
reports.junit = "junit.xml";
|
||||
};
|
||||
};
|
||||
"docs" = {
|
||||
stage = "build";
|
||||
script = [
|
||||
|
|
|
|||
19
cells/repo/flake.lock
generated
19
cells/repo/flake.lock
generated
|
|
@ -69,12 +69,31 @@
|
|||
"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": {
|
||||
"inputs": {
|
||||
"devshell": "devshell",
|
||||
"devtools-lib": "devtools-lib",
|
||||
"nix-gitlab-ci-lib": "nix-gitlab-ci-lib",
|
||||
"nixmkdocs": "nixmkdocs",
|
||||
"nixtest-lib": "nixtest-lib",
|
||||
"soonix-lib": "soonix-lib",
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
soonix-lib.url = "gitlab:TECHNOFAB/soonix?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";
|
||||
nixtest-lib.url = "gitlab:TECHNOFAB/nixtest/v1.2.1?dir=lib";
|
||||
treefmt-nix = {
|
||||
url = "github:numtide/treefmt-nix";
|
||||
flake = false;
|
||||
|
|
@ -18,6 +19,8 @@
|
|||
doclib = i.nixmkdocs.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;};
|
||||
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;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
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 "ci")
|
||||
(simple "soonix")
|
||||
(simple "tests")
|
||||
];
|
||||
} {
|
||||
packages = rensa.select inputs.self [
|
||||
["repo" "docs"]
|
||||
["repo" "ci" "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