From c16ffa0a125a6098c094fcb19d63c6c4512072d7 Mon Sep 17 00:00:00 2001 From: Jacob Moody Date: Sat, 23 Dec 2023 15:53:20 -0600 Subject: [PATCH] drawterm: add nixos tests --- nixos/tests/all-tests.nix | 1 + nixos/tests/drawterm.nix | 58 +++++++++++++++++++++++++++ pkgs/tools/admin/drawterm/default.nix | 6 ++- 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 nixos/tests/drawterm.nix diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 0ef5c4d8d3cb..c173f753228e 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -257,6 +257,7 @@ in { dolibarr = handleTest ./dolibarr.nix {}; domination = handleTest ./domination.nix {}; dovecot = handleTest ./dovecot.nix {}; + drawterm = discoverTests (import ./drawterm.nix); drbd = handleTest ./drbd.nix {}; dublin-traceroute = handleTest ./dublin-traceroute.nix {}; earlyoom = handleTestOn ["x86_64-linux"] ./earlyoom.nix {}; diff --git a/nixos/tests/drawterm.nix b/nixos/tests/drawterm.nix new file mode 100644 index 000000000000..1d444bb55433 --- /dev/null +++ b/nixos/tests/drawterm.nix @@ -0,0 +1,58 @@ +{ system, pkgs }: +let + tests = { + xorg = { + node = { pkgs, ... }: { + imports = [ ./common/user-account.nix ./common/x11.nix ]; + services.xserver.enable = true; + services.xserver.displayManager.sessionCommands = '' + ${pkgs.drawterm}/bin/drawterm -g 1024x768 & + ''; + test-support.displayManager.auto.user = "alice"; + }; + systems = [ "x86_64-linux" "aarch64-linux" ]; + }; + wayland = { + node = { pkgs, ... }: { + imports = [ ./common/wayland-cage.nix ]; + services.cage.program = "${pkgs.drawterm-wayland}/bin/drawterm"; + }; + systems = [ "x86_64-linux" ]; + }; + }; + + mkTest = name: machine: + import ./make-test-python.nix ({ pkgs, ... }: { + inherit name; + + nodes = { "${name}" = machine; }; + + meta = with pkgs.lib.maintainers; { + maintainers = [ moody ]; + }; + + enableOCR = true; + + testScript = '' + @polling_condition + def drawterm_running(): + machine.succeed("pgrep drawterm") + + start_all() + + machine.wait_for_unit("graphical.target") + drawterm_running.wait() # type: ignore[union-attr] + machine.wait_for_text("cpu") + machine.send_chars("cpu\n") + machine.wait_for_text("auth") + machine.send_chars("cpu\n") + machine.wait_for_text("ending") + machine.screenshot("out.png") + ''; + + }); + mkTestOn = systems: name: machine: + if pkgs.lib.elem system systems then mkTest name machine + else { ... }: { }; +in +builtins.mapAttrs (k: v: mkTestOn v.systems k v.node { inherit system; }) tests diff --git a/pkgs/tools/admin/drawterm/default.nix b/pkgs/tools/admin/drawterm/default.nix index ad839b495172..0fafd28ae3c2 100644 --- a/pkgs/tools/admin/drawterm/default.nix +++ b/pkgs/tools/admin/drawterm/default.nix @@ -14,6 +14,7 @@ , wlr-protocols , pulseaudio , config +, nixosTests }: stdenv.mkDerivation { @@ -56,7 +57,10 @@ stdenv.mkDerivation { installManPage drawterm.1 ''; - passthru.updateScript = unstableGitUpdater { shallowClone = false; }; + passthru = { + updateScript = unstableGitUpdater { shallowClone = false; }; + tests = nixosTests.drawterm; + }; meta = with lib; { description = "Connect to Plan 9 CPU servers from other operating systems.";