From 635fa3d7ee1231185b452ef6ac46c31fbcdb09d2 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Fri, 17 Oct 2025 23:41:50 +0900 Subject: [PATCH] nixos/tests/svnserve: init --- nixos/tests/all-tests.nix | 1 + nixos/tests/svnserve.nix | 60 +++++++++++++++++++ .../version-management/subversion/default.nix | 3 + 3 files changed, 64 insertions(+) create mode 100644 nixos/tests/svnserve.nix diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 1f1f5ae5e043..7d81f706bf23 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1405,6 +1405,7 @@ in inherit runTest; lib = pkgs.lib; }; + svnserve = runTest ./svnserve.nix; swap-file-btrfs = runTest ./swap-file-btrfs.nix; swap-partition = runTest ./swap-partition.nix; swap-random-encryption = runTest ./swap-random-encryption.nix; diff --git a/nixos/tests/svnserve.nix b/nixos/tests/svnserve.nix new file mode 100644 index 000000000000..4a537bbdd657 --- /dev/null +++ b/nixos/tests/svnserve.nix @@ -0,0 +1,60 @@ +{ pkgs, ... }: +{ + name = "svnserve"; + + nodes = { + server = { + virtualisation.vlans = [ 1 ]; + + networking = { + useNetworkd = true; + useDHCP = false; + firewall.allowedTCPPorts = [ 3690 ]; + }; + + systemd.network.networks."01-eth1" = { + name = "eth1"; + networkConfig.Address = "10.0.0.1/24"; + }; + + services.svnserve.enable = true; + + environment.systemPackages = [ pkgs.subversion ]; + }; + + client = + { pkgs, ... }: + { + virtualisation.vlans = [ 1 ]; + + networking = { + useNetworkd = true; + useDHCP = false; + }; + + systemd.network.networks."01-eth1" = { + name = "eth1"; + networkConfig.Address = "10.0.0.2/24"; + }; + + environment.systemPackages = [ pkgs.subversion ]; + }; + }; + + testScript = + { nodes, ... }: + '' + start_all() + + server.wait_for_unit("svnserve") + server.wait_for_open_port(3690) + server.succeed("svnadmin create '${nodes.server.services.svnserve.svnBaseDir}/project'") + server.succeed("sed -i 's/# anon-access = read/anon-access = write/' '${nodes.server.services.svnserve.svnBaseDir}/project/conf/svnserve.conf'") + + client.succeed("svn checkout svn://10.0.0.1/project") + client.succeed("cd ./project && echo hello > ./file.txt && svn add ./file.txt && svn commit -m 'Added file.txt'") + + client.succeed("svn checkout svn://10.0.0.1/project project-copy") + client.succeed("grep hello project-copy/file.txt") + ''; +} diff --git a/pkgs/applications/version-management/subversion/default.nix b/pkgs/applications/version-management/subversion/default.nix index 4a87cbd4f308..d99296d0c509 100644 --- a/pkgs/applications/version-management/subversion/default.nix +++ b/pkgs/applications/version-management/subversion/default.nix @@ -27,6 +27,7 @@ perl ? null, sasl ? null, serf ? null, + nixosTests, }: assert bdbSupport -> aprutil.bdbSupport; @@ -156,6 +157,8 @@ let nativeCheckInputs = [ python3 ]; doCheck = false; # fails 10 out of ~2300 tests + passthru.tests = { inherit (nixosTests) svnserve; }; + meta = with lib; { description = "Version control system intended to be a compelling replacement for CVS in the open source community"; license = licenses.asl20;