nixpkgs/nixos/tests/gitdaemon.nix
ghpzin a0e1d1fd6c
nixos/tests/gitdaemon: fix user and group
- change tmpfiles rule user/group to default daemon user/group set by
gitDaemon module - git:git
- add chown of created repo to user/group of daemon after local subtest
on server (that run from root user) pass. Without it next subtest doing
clone from remote fails with "detected dubious ownership in repository"
on server side.
2024-09-08 16:19:13 +03:00

78 lines
2.1 KiB
Nix

import ./make-test-python.nix ({ pkgs, ... }:
let
hashes = pkgs.writeText "hashes" ''
b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c /project/bar
'';
in {
name = "gitdaemon";
meta = with pkgs.lib.maintainers; {
maintainers = [ tilpner ];
};
nodes = {
server =
{ config, ... }: {
networking.firewall.allowedTCPPorts = [ config.services.gitDaemon.port ];
environment.systemPackages = [ pkgs.git ];
systemd.tmpfiles.rules = [
# type path mode user group age arg
" d /git 0755 git git - -"
];
services.gitDaemon = {
enable = true;
basePath = "/git";
};
};
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",
)
# 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")
with subtest("git daemon starts"):
server.wait_for_unit("git-daemon.service")
server.systemctl("start network-online.target")
client.systemctl("start network-online.target")
server.wait_for_unit("network-online.target")
client.wait_for_unit("network-online.target")
with subtest("client can clone project.git"):
client.succeed(
"git clone git://server/project.git /project",
"sha256sum -c ${hashes}",
)
'';
})