diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 933eaab3b0a9..c03ed4767c77 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1125,7 +1125,7 @@ in prosody = handleTest ./xmpp/prosody.nix { }; prosody-mysql = handleTest ./xmpp/prosody-mysql.nix { }; proxy = handleTest ./proxy.nix { }; - prowlarr = handleTest ./prowlarr.nix { }; + prowlarr = runTest ./prowlarr.nix; pt2-clone = handleTest ./pt2-clone.nix { }; pykms = handleTest ./pykms.nix { }; public-inbox = handleTest ./public-inbox.nix { }; diff --git a/nixos/tests/prowlarr.nix b/nixos/tests/prowlarr.nix index 859ce58b3b1b..c03475df0423 100644 --- a/nixos/tests/prowlarr.nix +++ b/nixos/tests/prowlarr.nix @@ -1,22 +1,40 @@ -import ./make-test-python.nix ( - { lib, ... }: +{ lib, config, ... }: - { - name = "prowlarr"; - meta.maintainers = with lib.maintainers; [ ]; +{ + name = "prowlarr"; + meta.maintainers = with lib.maintainers; [ ]; - nodes.machine = - { pkgs, ... }: - { - services.prowlarr.enable = true; + nodes.machine = + { pkgs, ... }: + { + services.prowlarr.enable = true; + specialisation.customDataDir = { + inheritParentConfig = true; + configuration.services.prowlarr.dataDir = "/srv/prowlarr"; }; + }; - testScript = '' + testScript = '' + def verify_prowlarr_works(): machine.wait_for_unit("prowlarr.service") machine.wait_for_open_port(9696) response = machine.succeed("curl --fail http://localhost:9696/") assert 'Prowlarr' in response, "Login page didn't load successfully" machine.succeed("[ -d /var/lib/prowlarr ]") - ''; - } -) + + with subtest("Prowlarr starts and responds to requests"): + verify_prowlarr_works() + + with subtest("Prowlarr data directory migration works"): + machine.systemctl("stop prowlarr.service") + machine.succeed("mkdir -p /tmp/prowlarr-migration") + machine.succeed("mv /var/lib/prowlarr/* /tmp/prowlarr-migration") + machine.succeed("${config.nodes.machine.system.build.toplevel}/specialisation/customDataDir/bin/switch-to-configuration test") + machine.wait_for_unit("var-lib-private-prowlarr.mount") + machine.succeed("mv /tmp/prowlarr-migration/* /var/lib/prowlarr") + machine.systemctl("restart prowlarr.service") + # Check that we're using a bind mount when using a non-default dataDir + machine.succeed("findmnt /var/lib/private/prowlarr | grep /srv/prowlarr") + verify_prowlarr_works() + ''; +}