From 528e69af1edec77b2dcc959b8627f23a9d16710a Mon Sep 17 00:00:00 2001 From: teutat3s Date: Sat, 4 Jun 2022 23:45:06 +0200 Subject: [PATCH] wip: first PubSolarOS iso test using the NixOS test suite: https://nixos.org/manual/nixos/stable/index.html#sec-nixos-tests --- flake.nix | 7 +++++- tests/first-test.nix | 52 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 tests/first-test.nix diff --git a/flake.nix b/flake.nix index ac567b20..659e73da 100644 --- a/flake.nix +++ b/flake.nix @@ -122,7 +122,12 @@ imports = [ (digga.lib.importHosts ./hosts) ]; hosts = { /* set host specific properties here */ - PubSolarOS = { }; + PubSolarOS = { + tests = [ + (import ./tests/first-test.nix {}) + (import ./tests/second-test.nix {}) + ]; + }; fae = { system = "aarch64-linux"; }; diff --git a/tests/first-test.nix b/tests/first-test.nix new file mode 100644 index 00000000..14576dc7 --- /dev/null +++ b/tests/first-test.nix @@ -0,0 +1,52 @@ +{ }: +{ + name = "firstTest"; + + nodes.test-machine = { suites ? null, ... }: { + imports = suites.iso; + + environment = { + variables = { + "SWAYSOCK" = "/tmp/sway-ipc.sock"; + # TODO: Investigate if we can get hardware acceleration to work (via + # virtio-gpu and Virgil). We currently have to use the Pixman software + # renderer since the GLES2 renderer doesn't work inside the VM (even + # with WLR_RENDERER_ALLOW_SOFTWARE): + # "WLR_RENDERER_ALLOW_SOFTWARE" = "1"; + "WLR_RENDERER" = "pixman"; + }; + + shellAliases = { + test-wayland = "wayland-info | tee /tmp/test-wayland.out && touch /tmp/test-wayland-exit-ok"; + }; + }; + + # Need to switch to a different GPU driver than the default one (-vga std) so that Sway can launch: + virtualisation.qemu.options = [ "-vga none -device virtio-gpu-pci" ]; + }; + + enableOCR = true; + + testScript = '' + machine.wait_for_unit("multi-user.target") + # To check the version: + print(machine.succeed("sway --version")) + # Wait for Sway to complete startup: + machine.wait_for_file("/run/user/1000/wayland-1") + machine.wait_for_file("/tmp/sway-ipc.sock") + + # Start a terminal (alacritty) on workspace 3: + machine.send_key("super-3") + machine.sleep(3) + machine.send_key("super-ret") + machine.send_chars("whoami\n") + machine.wait_for_text("pub-solar") + machine.send_chars("test-wayland\n") + machine.wait_for_file("/tmp/test-wayland-exit-ok") + print(machine.succeed("cat /tmp/test-wayland.out")) + machine.copy_from_vm("/tmp/test-wayland.out") + machine.screenshot("alacritty_wayland_info") + machine.send_key("super-shift-q") + machine.wait_until_fails("pgrep alacritty") + ''; +}