Merge pull request #305845 from abathur/resholve_0.10.5
[NixPkgs.git] / nixos / tests / gitdaemon.nix
blob052fa902b45049b7837fc52e743d5589923cb22c
1 import ./make-test-python.nix ({ pkgs, ... }:
3 let
4   hashes = pkgs.writeText "hashes" ''
5     b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c  /project/bar
6   '';
7 in {
8   name = "gitdaemon";
10   meta = with pkgs.lib.maintainers; {
11     maintainers = [ tilpner ];
12   };
14   nodes = {
15     server =
16       { config, ... }: {
17         networking.firewall.allowedTCPPorts = [ config.services.gitDaemon.port ];
19         environment.systemPackages = [ pkgs.git ];
21         systemd.tmpfiles.rules = [
22           # type path mode user group age arg
23           " d    /git 0755 root root  -   -"
24         ];
26         services.gitDaemon = {
27           enable = true;
28           basePath = "/git";
29         };
30       };
32     client =
33       { pkgs, ... }: {
34         environment.systemPackages = [ pkgs.git ];
35       };
36   };
38   testScript = ''
39     start_all()
41     with subtest("create project.git"):
42         server.succeed(
43             "git init --bare /git/project.git",
44             "touch /git/project.git/git-daemon-export-ok",
45         )
47     with subtest("add file to project.git"):
48         server.succeed(
49             "git clone /git/project.git /project",
50             "echo foo > /project/bar",
51             "git config --global user.email 'you@example.com'",
52             "git config --global user.name 'Your Name'",
53             "git -C /project add bar",
54             "git -C /project commit -m 'quux'",
55             "git -C /project push",
56             "rm -r /project",
57         )
59     with subtest("git daemon starts"):
60         server.wait_for_unit("git-daemon.service")
63     server.systemctl("start network-online.target")
64     client.systemctl("start network-online.target")
65     server.wait_for_unit("network-online.target")
66     client.wait_for_unit("network-online.target")
68     with subtest("client can clone project.git"):
69         client.succeed(
70             "git clone git://server/project.git /project",
71             "sha256sum -c ${hashes}",
72         )
73   '';