hakurei/test/sandbox/case/default.nix
Ophestra 6f5833bf41
Some checks failed
Test / Create distribution (push) Successful in 32s
Test / Sandbox (push) Successful in 2m1s
Test / Hakurei (push) Successful in 2m47s
Test / Planterette (push) Successful in 3m35s
Test / Sandbox (race detector) (push) Successful in 3m45s
Test / Hakurei (race detector) (push) Successful in 4m21s
Test / Flake checks (push) Failing after 1m15s
test/sandbox: verify seccomp on all test cases
This change also makes seccomp hashes cross-platform.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-07-09 03:47:16 +09:00

69 lines
1.3 KiB
Nix

system: lib: testProgram:
let
fs = mode: dir: data: {
mode = lib.fromHexString mode;
inherit
dir
data
;
};
ignore = "//ignore";
ent = root: target: vfs_optstr: fstype: source: fs_optstr: {
id = -1;
parent = -1;
inherit
root
target
vfs_optstr
fstype
source
fs_optstr
;
};
callTestCase =
path: identity:
let
tc = import path {
inherit
fs
ent
ignore
;
};
in
{
name = "check-sandbox-${tc.name}";
inherit identity;
verbose = true;
inherit (tc)
tty
device
mapRealUid
useCommonPaths
userns
;
share = testProgram;
packages = [ ];
path = "${testProgram}/bin/hakurei-test";
args = [
"test"
"-t"
(toString (builtins.toFile "hakurei-${tc.name}-want.json" (builtins.toJSON tc.want)))
"-s"
tc.expectedFilter.${system}
];
};
testCaseName = name: "cat.gensokyo.hakurei.test." + name;
in
{
${testCaseName "preset"} = callTestCase ./preset.nix 1;
${testCaseName "tty"} = callTestCase ./tty.nix 2;
${testCaseName "mapuid"} = callTestCase ./mapuid.nix 3;
${testCaseName "device"} = callTestCase ./device.nix 4;
${testCaseName "pdlike"} = callTestCase ./pdlike.nix 5;
}