{ pkgs, cilib, ntlib, ... }: { suites."Modules" = { pos = __curPos; tests = let simplePipeline = cilib.mkCI { pipelines."test" = { stages = ["test"]; jobs."test" = { stage = "test"; script = ["echo hello world"]; }; }; }; in [ { name = "empty pipelines"; expected = {}; actual = (cilib.mkCI {}).pipelines; } { name = "empty packages"; expected = {}; actual = (cilib.mkCI {}).packages; } { name = "simple pipeline"; expected = { stages = [".pre" "test" ".post"]; "test" = { stage = "test"; before_script = ["source setup_nix_ci \"gitlab-ci:pipeline:test:job-deps:test\""]; script = ["echo hello world"]; after_script = ["finalize_nix_ci"]; }; }; actual = simplePipeline.pipelines."test".finalConfig; } { name = "simple pipeline yaml"; type = "script"; script = let package = simplePipeline.packages."gitlab-ci:pipeline:test"; in # sh '' ${ntlib.helpers.path [pkgs.gnugrep]} ${ntlib.helpers.scriptHelpers} assert_file_contains ${package} 'gitlab-ci:pipeline:test:job-deps:test' assert_file_contains ${package} 'finalize_nix_ci' assert_file_contains ${package} 'echo hello world' ''; } { name = "dont fail on store paths"; type = "script"; script = let package = (cilib.mkCI { pipelines."test" = { variables.EXAMPLE = "${pkgs.hello}"; }; }).packages."gitlab-ci:pipeline:test"; in # sh '' ${ntlib.helpers.path [pkgs.gnugrep]} ${ntlib.helpers.scriptHelpers} assert_file_contains ${package} '[".pre",".post"]' assert_file_contains ${package} '"EXAMPLE":"/nix/store/.*-hello-.*"' ''; } ]; }; }