forked from mirrors/nixpkgs
Merge pull request #153741 from primeos/nixos-tests-tinywl
nixos/tests/tinywl: init
This commit is contained in:
commit
297cb6514f
|
@ -479,6 +479,7 @@ in
|
|||
timezone = handleTest ./timezone.nix {};
|
||||
tinc = handleTest ./tinc {};
|
||||
tinydns = handleTest ./tinydns.nix {};
|
||||
tinywl = handleTest ./tinywl.nix {};
|
||||
tor = handleTest ./tor.nix {};
|
||||
# traefik test relies on docker-containers
|
||||
traefik = handleTestOn ["x86_64-linux"] ./traefik.nix {};
|
||||
|
|
56
nixos/tests/tinywl.nix
Normal file
56
nixos/tests/tinywl.nix
Normal file
|
@ -0,0 +1,56 @@
|
|||
import ./make-test-python.nix ({ pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
name = "tinywl";
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ primeos ];
|
||||
};
|
||||
|
||||
machine = { config, ... }: {
|
||||
# Automatically login on tty1 as a normal user:
|
||||
imports = [ ./common/user-account.nix ];
|
||||
services.getty.autologinUser = "alice";
|
||||
|
||||
environment = {
|
||||
systemPackages = with pkgs; [ tinywl foot wayland-utils ];
|
||||
};
|
||||
|
||||
# Automatically start TinyWL when logging in on tty1:
|
||||
programs.bash.loginShellInit = ''
|
||||
if [ "$(tty)" = "/dev/tty1" ]; then
|
||||
set -e
|
||||
test ! -e /tmp/tinywl.log # Only start tinywl once
|
||||
readonly TEST_CMD="wayland-info |& tee /tmp/test-wayland.out && touch /tmp/test-wayland-exit-ok; read"
|
||||
readonly FOOT_CMD="foot sh -c '$TEST_CMD'"
|
||||
tinywl -s "$FOOT_CMD" |& tee /tmp/tinywl.log
|
||||
touch /tmp/tinywl-exit-ok
|
||||
fi
|
||||
'';
|
||||
|
||||
# Switch to a different GPU driver (default: -vga std), otherwise TinyWL segfaults:
|
||||
virtualisation.qemu.options = [ "-vga none -device virtio-gpu-pci" ];
|
||||
};
|
||||
|
||||
testScript = { nodes, ... }: ''
|
||||
start_all()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
# Wait for complete startup:
|
||||
machine.wait_until_succeeds("pgrep tinywl")
|
||||
machine.wait_for_file("/run/user/1000/wayland-0")
|
||||
machine.wait_until_succeeds("pgrep foot")
|
||||
machine.wait_for_file("/tmp/test-wayland-exit-ok")
|
||||
|
||||
# Make a screenshot and save the result:
|
||||
machine.screenshot("tinywl_foot")
|
||||
print(machine.succeed("cat /tmp/test-wayland.out"))
|
||||
machine.copy_from_vm("/tmp/test-wayland.out")
|
||||
|
||||
# Terminate cleanly:
|
||||
machine.send_key("alt-esc")
|
||||
machine.wait_until_fails("pgrep foot")
|
||||
machine.wait_until_fails("pgrep tinywl")
|
||||
machine.wait_for_file("/tmp/tinywl-exit-ok")
|
||||
machine.copy_from_vm("/tmp/tinywl.log")
|
||||
'';
|
||||
})
|
|
@ -21,7 +21,7 @@ stdenv.mkDerivation {
|
|||
meta = with lib; {
|
||||
homepage = "https://github.com/swaywm/wlroots/tree/master/tinywl";
|
||||
description = ''A "minimum viable product" Wayland compositor based on wlroots'';
|
||||
maintainers = with maintainers; [ qyliss ];
|
||||
maintainers = with maintainers; [ qyliss ] ++ wlroots.meta.maintainers;
|
||||
license = licenses.cc0;
|
||||
inherit (wlroots.meta) platforms;
|
||||
};
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
, libGL, wayland, wayland-protocols, libinput, libxkbcommon, pixman
|
||||
, xcbutilwm, libX11, libcap, xcbutilimage, xcbutilerrors, mesa
|
||||
, libpng, ffmpeg, xcbutilrenderutil, seatd, vulkan-loader, glslang
|
||||
, nixosTests
|
||||
|
||||
, enableXWayland ? true, xwayland ? null
|
||||
}:
|
||||
|
@ -49,6 +50,9 @@ stdenv.mkDerivation rec {
|
|||
done
|
||||
'';
|
||||
|
||||
# Test via TinyWL (the "minimum viable product" Wayland compositor based on wlroots):
|
||||
passthru.tests.tinywl = nixosTests.tinywl;
|
||||
|
||||
meta = with lib; {
|
||||
description = "A modular Wayland compositor library";
|
||||
longDescription = ''
|
||||
|
|
Loading…
Reference in a new issue