mirror of
https://github.com/TECHNOFAB11/kubenix.git
synced 2025-12-12 08:00:06 +01:00
58 lines
1.2 KiB
Nix
58 lines
1.2 KiB
Nix
{ lib, config, pkgs, ... }:
|
|
|
|
with lib;
|
|
let
|
|
testing = config.testing;
|
|
cfg = testing.driver.kubetest;
|
|
|
|
kubetest = import ./kubetestdrv.nix { inherit pkgs; };
|
|
|
|
pythonEnv = pkgs.python38.withPackages (ps: with ps; [
|
|
pytest
|
|
kubetest
|
|
kubernetes
|
|
] ++ cfg.extraPackages);
|
|
|
|
toTestScript = t:
|
|
if isString t.script
|
|
then
|
|
pkgs.writeText "${t.name}.py" ''
|
|
${cfg.defaultHeader}
|
|
${t.script}
|
|
''
|
|
else t.script;
|
|
|
|
tests = pkgs.linkFarm "${testing.name}-tests" (
|
|
map
|
|
(t: {
|
|
path = toTestScript t;
|
|
name = "${t.name}_test.py";
|
|
})
|
|
(filter (t: t.script != null) testing.tests)
|
|
);
|
|
|
|
testScript = pkgs.writeScript "test-${testing.name}.sh" ''
|
|
#!/usr/bin/env bash
|
|
${pythonEnv}/bin/pytest -p no:cacheprovider ${tests} $@
|
|
'';
|
|
|
|
in
|
|
{
|
|
options.testing.driver.kubetest = {
|
|
defaultHeader = mkOption {
|
|
type = types.lines;
|
|
description = "Default test header";
|
|
default = ''
|
|
import pytest
|
|
'';
|
|
};
|
|
|
|
extraPackages = mkOption {
|
|
type = types.listOf types.package;
|
|
description = "Extra packages to pass to tests";
|
|
default = [ ];
|
|
};
|
|
};
|
|
|
|
config.testing.testScript = testScript;
|
|
}
|