about summary refs log tree commit diff
path: root/nixos/tests
diff options
context:
space:
mode:
authorworldofpeace <worldofpeace@protonmail.ch>2020-03-01 13:40:57 +0000
committerGitHub <noreply@github.com>2020-03-01 13:40:57 +0000
commit21c971a7322ae3f6fde8eb33b49322e384e45fac (patch)
tree3e33d6a2d8019bf56cf7aa48c19b8b7f76f88ce7 /nixos/tests
parentfe0aaf1f7414b51d586bd75c1c1de2ca4357af13 (diff)
parent6df119a6ecd5e8fa624b4b7d012843883be6391c (diff)
downloadnixlib-21c971a7322ae3f6fde8eb33b49322e384e45fac.tar
nixlib-21c971a7322ae3f6fde8eb33b49322e384e45fac.tar.gz
nixlib-21c971a7322ae3f6fde8eb33b49322e384e45fac.tar.bz2
nixlib-21c971a7322ae3f6fde8eb33b49322e384e45fac.tar.lz
nixlib-21c971a7322ae3f6fde8eb33b49322e384e45fac.tar.xz
nixlib-21c971a7322ae3f6fde8eb33b49322e384e45fac.tar.zst
nixlib-21c971a7322ae3f6fde8eb33b49322e384e45fac.zip
Merge pull request #81118 from tilpner/gitdaemon-usercreation
nixos/git-daemon: only create git user if it will be used
Diffstat (limited to 'nixos/tests')
-rw-r--r--nixos/tests/all-tests.nix1
-rw-r--r--nixos/tests/gitdaemon.nix64
2 files changed, 65 insertions, 0 deletions
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 2e547780439a..893c2c423efd 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -98,6 +98,7 @@ in
   fsck = handleTest ./fsck.nix {};
   gotify-server = handleTest ./gotify-server.nix {};
   grocy = handleTest ./grocy.nix {};
+  gitdaemon = handleTest ./gitdaemon.nix {};
   gitea = handleTest ./gitea.nix {};
   gitlab = handleTest ./gitlab.nix {};
   gitolite = handleTest ./gitolite.nix {};
diff --git a/nixos/tests/gitdaemon.nix b/nixos/tests/gitdaemon.nix
new file mode 100644
index 000000000000..b610caf06fb2
--- /dev/null
+++ b/nixos/tests/gitdaemon.nix
@@ -0,0 +1,64 @@
+import ./make-test-python.nix ({ pkgs, ... }:
+
+let
+  hashes = pkgs.writeText "hashes" ''
+    b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c  /project/bar
+  '';
+in {
+  name = "gitdaemon";
+
+  meta = with pkgs.stdenv.lib.maintainers; {
+    maintainers = [ tilpner ];
+  };
+
+  nodes = {
+    server =
+      { config, ... }: {
+        networking.firewall.allowedTCPPorts = [ config.services.gitDaemon.port ];
+
+        environment.systemPackages = [ pkgs.git ];
+
+        services.gitDaemon = {
+          enable = true;
+          basePath = "/git";
+        };
+      };
+
+    client =
+      { pkgs, ... }: {
+        environment.systemPackages = [ pkgs.git ];
+      };
+  };
+
+  testScript = ''
+    start_all()
+
+    with subtest("create project.git"):
+        server.succeed(
+            "mkdir /git",
+            "git init --bare /git/project.git",
+            "touch /git/project.git/git-daemon-export-ok",
+        )
+
+    with subtest("add file to project.git"):
+        server.succeed(
+            "git clone /git/project.git /project",
+            "echo foo > /project/bar",
+            "git config --global user.email 'you@example.com'",
+            "git config --global user.name 'Your Name'",
+            "git -C /project add bar",
+            "git -C /project commit -m 'quux'",
+            "git -C /project push",
+            "rm -r /project",
+        )
+
+    with subtest("git daemon starts"):
+        server.wait_for_unit("git-daemon.service")
+
+    with subtest("client can clone project.git"):
+        client.succeed(
+            "git clone git://server/project.git /project",
+            "sha256sum -c ${hashes}",
+        )
+  '';
+})