2020-02-26 13:05:00 +00:00
|
|
|
import ./make-test-python.nix (
|
|
|
|
{ pkgs, ... }:
|
|
|
|
|
|
|
|
let
|
|
|
|
hashes = pkgs.writeText "hashes" ''
|
|
|
|
b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c /project/bar
|
|
|
|
'';
|
|
|
|
in
|
|
|
|
{
|
|
|
|
name = "gitdaemon";
|
|
|
|
|
2021-01-10 19:08:30 +00:00
|
|
|
meta = with pkgs.lib.maintainers; {
|
2020-02-26 13:05:00 +00:00
|
|
|
maintainers = [ tilpner ];
|
|
|
|
};
|
|
|
|
|
|
|
|
nodes = {
|
|
|
|
server =
|
|
|
|
{ config, ... }:
|
|
|
|
{
|
|
|
|
networking.firewall.allowedTCPPorts = [ config.services.gitDaemon.port ];
|
|
|
|
|
|
|
|
environment.systemPackages = [ pkgs.git ];
|
|
|
|
|
2021-05-02 21:58:43 +00:00
|
|
|
systemd.tmpfiles.rules = [
|
|
|
|
# type path mode user group age arg
|
2024-09-08 13:09:41 +00:00
|
|
|
" d /git 0755 git git - -"
|
2021-05-02 21:58:43 +00:00
|
|
|
];
|
|
|
|
|
2020-02-26 13:05:00 +00:00
|
|
|
services.gitDaemon = {
|
|
|
|
enable = true;
|
|
|
|
basePath = "/git";
|
2024-12-10 19:26:33 +00:00
|
|
|
};
|
2020-02-26 13:05:00 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
client =
|
|
|
|
{ pkgs, ... }:
|
|
|
|
{
|
|
|
|
environment.systemPackages = [ pkgs.git ];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
testScript = ''
|
|
|
|
start_all()
|
|
|
|
|
|
|
|
with subtest("create project.git"):
|
|
|
|
server.succeed(
|
|
|
|
"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",
|
|
|
|
)
|
|
|
|
|
2024-09-08 13:09:41 +00:00
|
|
|
# Change user/group to default daemon user/group from module
|
|
|
|
# to avoid "fatal: detected dubious ownership in repository at '/git/project.git'"
|
|
|
|
server.succeed("chown git:git -R /git/project.git")
|
|
|
|
|
2020-02-26 13:05:00 +00:00
|
|
|
with subtest("git daemon starts"):
|
|
|
|
server.wait_for_unit("git-daemon.service")
|
|
|
|
|
2023-10-04 05:08:33 +00:00
|
|
|
|
|
|
|
server.systemctl("start network-online.target")
|
|
|
|
client.systemctl("start network-online.target")
|
2020-05-09 09:42:22 +00:00
|
|
|
server.wait_for_unit("network-online.target")
|
|
|
|
client.wait_for_unit("network-online.target")
|
|
|
|
|
2020-02-26 13:05:00 +00:00
|
|
|
with subtest("client can clone project.git"):
|
|
|
|
client.succeed(
|
|
|
|
"git clone git://server/project.git /project",
|
|
|
|
"sha256sum -c ${hashes}",
|
|
|
|
)
|
|
|
|
'';
|
|
|
|
}
|
|
|
|
)
|