From ba32dedce4fea8122148b562680c376571d471b7 Mon Sep 17 00:00:00 2001 From: bas Date: Thu, 8 Jan 2026 09:06:17 +0100 Subject: [PATCH] nixos/qui: init tests --- nixos/tests/all-tests.nix | 1 + nixos/tests/qui.nix | 47 +++++++++++++++++++++++++++++++++ pkgs/by-name/qu/qui/package.nix | 14 ++++++---- 3 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 nixos/tests/qui.nix diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 8ab11239fadf..fbab6e29c358 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1314,6 +1314,7 @@ in qtile = runTestOn [ "x86_64-linux" "aarch64-linux" ] ./qtile/default.nix; qtile-extras = runTestOn [ "x86_64-linux" "aarch64-linux" ] ./qtile-extras/default.nix; quake3 = runTest ./quake3.nix; + qui = runTest ./qui.nix; quicktun = runTest ./quicktun.nix; quickwit = runTest ./quickwit.nix; rabbitmq = runTest ./rabbitmq.nix; diff --git a/nixos/tests/qui.nix b/nixos/tests/qui.nix new file mode 100644 index 000000000000..cd3cc27f65ce --- /dev/null +++ b/nixos/tests/qui.nix @@ -0,0 +1,47 @@ +{ lib, ... }: + +{ + name = "qui"; + meta.maintainers = with lib.maintainers; [ undefined-landmark ]; + + nodes.machine = + { pkgs, ... }: + let + # We create this secret in the Nix store (making it readable by everyone). + # DO NOT DO THIS OUTSIDE OF TESTS!! + testSecretFile = pkgs.writeText "session_secret" "not-secret"; + in + { + services.qui = { + enable = true; + secretFile = testSecretFile; + }; + + # Use port other than default to test if settings options work. + specialisation.settingsPort.configuration = { + services.qui = { + enable = true; + secretFile = testSecretFile; + settings.port = 7777; + }; + }; + }; + + testScript = + { nodes, ... }: + let + settingsPort = "${nodes.machine.system.build.toplevel}/specialisation/settingsPort"; + in + # python + '' + def test_webui(port): + machine.wait_for_unit("qui.service") + machine.wait_for_open_port(port) + machine.wait_until_succeeds(f"curl --fail http://localhost:{port}") + + test_webui(7476) + + machine.succeed("${settingsPort}/bin/switch-to-configuration test") + test_webui(7777) + ''; +} diff --git a/pkgs/by-name/qu/qui/package.nix b/pkgs/by-name/qu/qui/package.nix index 9048776cac10..d2e282a7092b 100644 --- a/pkgs/by-name/qu/qui/package.nix +++ b/pkgs/by-name/qu/qui/package.nix @@ -3,6 +3,7 @@ buildGoModule, fetchFromGitHub, stdenvNoCC, + nixosTests, nix-update-script, nodejs, pnpm_9, @@ -72,11 +73,14 @@ buildGoModule (finalAttrs: { versionCheckProgramArg = "version"; doInstallCheck = true; - passthru.updateScript = nix-update-script { - extraArgs = [ - "--subpackage" - "qui-web" - ]; + passthru = { + updateScript = nix-update-script { + extraArgs = [ + "--subpackage" + "qui-web" + ]; + }; + tests.testService = nixosTests.qui; }; meta = {