aboutsummaryrefslogtreecommitdiff
path: root/tests/nixos/fetch-git/testsupport/setup.nix
diff options
context:
space:
mode:
Diffstat (limited to 'tests/nixos/fetch-git/testsupport/setup.nix')
-rw-r--r--tests/nixos/fetch-git/testsupport/setup.nix91
1 files changed, 91 insertions, 0 deletions
diff --git a/tests/nixos/fetch-git/testsupport/setup.nix b/tests/nixos/fetch-git/testsupport/setup.nix
new file mode 100644
index 000000000..a81d5614b
--- /dev/null
+++ b/tests/nixos/fetch-git/testsupport/setup.nix
@@ -0,0 +1,91 @@
+{ lib, config, extendModules, ... }:
+let
+ inherit (lib)
+ mkOption
+ types
+ ;
+
+ indent = lib.replaceStrings ["\n"] ["\n "];
+
+ execTestCase = testCase: ''
+
+ ### TEST ${testCase.name}: ${testCase.description} ###
+
+ with subtest("${testCase.description}"):
+ # Setup
+ ${indent testCase.setupScript}
+
+ # Test
+ ${indent testCase.script}
+ '';
+in
+{
+
+ options = {
+ setupScript = mkOption {
+ type = types.lines;
+ description = ''
+ Python code that runs before the main test.
+
+ Variables defined by this code will be available in the test.
+ '';
+ default = "";
+ };
+ testCases = mkOption {
+ description = ''
+ The test cases. See `testScript`.
+ '';
+ type = types.listOf (types.submodule {
+ options.name = mkOption {
+ type = types.str;
+ description = ''
+ The name of the test case.
+
+ A repository with that name will be set up on the gitea server and locally.
+ '';
+ };
+ options.description = mkOption {
+ type = types.str;
+ description = ''
+ A description of the test case.
+ '';
+ };
+ options.setupScript = mkOption {
+ type = types.lines;
+ description = ''
+ Python code that runs before the test case.
+ '';
+ default = "";
+ };
+ options.script = mkOption {
+ type = types.lines;
+ description = ''
+ Python code that runs the test.
+
+ Variables defined by the global `setupScript`, as well as `testCases.*.setupScript` will be available here.
+ '';
+ };
+ });
+ };
+ };
+
+ config = {
+ nodes.client = {
+ environment.variables = {
+ _NIX_FORCE_HTTP = "1";
+ };
+ nix.settings.experimental-features = ["nix-command" "flakes"];
+ };
+ setupScript = ''
+ '';
+ testScript = ''
+ start_all();
+
+ ${config.setupScript}
+
+ ### SETUP COMPLETE ###
+
+ ${lib.concatStringsSep "\n" (map execTestCase config.testCases)}
+ '';
+ };
+}