From 61f31928cceafcc174feda457fca8adf279c4a67 Mon Sep 17 00:00:00 2001 From: Sophie Winter Date: Tue, 25 Mar 2025 02:29:15 -0700 Subject: [PATCH] Add hacky support for running tests under Sway --- test/layer-tests/test-adapts-to-screen-size.c | 10 ++++----- test/layer-tests/test-uses-widget-size.c | 10 ++++----- test/mock-server/mock-server.c | 4 ++-- test/run-integration-test.py | 21 +++++++++++++++++-- 4 files changed, 31 insertions(+), 14 deletions(-) diff --git a/test/layer-tests/test-adapts-to-screen-size.c b/test/layer-tests/test-adapts-to-screen-size.c index 084094d..b1e156e 100644 --- a/test/layer-tests/test-adapts-to-screen-size.c +++ b/test/layer-tests/test-adapts-to-screen-size.c @@ -4,7 +4,7 @@ static GtkWindow* window; static void callback_0() { EXPECT_MESSAGE(zwlr_layer_surface_v1 .set_size 0 0); - EXPECT_MESSAGE(.create_buffer 1920 1080); // size must match DEFAULT_OUTPUT_WIDTH/DEFAULT_OUTPUT_HEIGHT in common.h + EXPECT_MESSAGE(new id wl_buffer 1920 1080); // size must match DEFAULT_OUTPUT_WIDTH/DEFAULT_OUTPUT_HEIGHT in common.h window = create_default_window(); @@ -21,14 +21,14 @@ static void callback_0() { } static void callback_1() { - EXPECT_MESSAGE(.create_buffer 600 1080); // size must match DEFAULT_OUTPUT_HEIGHT in common.h + EXPECT_MESSAGE(new id wl_buffer 600 1080); // size must match DEFAULT_OUTPUT_HEIGHT in common.h EXPECT_MESSAGE(zwlr_layer_surface_v1 .set_size 600 0); gtk_layer_set_anchor(window, GTK_LAYER_SHELL_EDGE_LEFT, FALSE); } static void callback_2() { - EXPECT_MESSAGE(.create_buffer 600 700); + EXPECT_MESSAGE(new id wl_buffer 600 700); EXPECT_MESSAGE(zwlr_layer_surface_v1 .set_size 600 700); gtk_layer_set_anchor(window, GTK_LAYER_SHELL_EDGE_BOTTOM, FALSE); @@ -36,13 +36,13 @@ static void callback_2() { static void callback_3() { EXPECT_MESSAGE(zwlr_layer_surface_v1 .set_size 0 700); - EXPECT_MESSAGE(.create_buffer 1920 700); + EXPECT_MESSAGE(new id wl_buffer 1920 700); gtk_layer_set_anchor(window, GTK_LAYER_SHELL_EDGE_LEFT, TRUE); } static void callback_4() { - EXPECT_MESSAGE(.create_buffer 1920 300); + EXPECT_MESSAGE(new id wl_buffer 1920 300); EXPECT_MESSAGE(zwlr_layer_surface_v1 .set_size 0 300); gtk_window_set_default_size(window, 200, 300); diff --git a/test/layer-tests/test-uses-widget-size.c b/test/layer-tests/test-uses-widget-size.c index 2d62fa6..17d49eb 100644 --- a/test/layer-tests/test-uses-widget-size.c +++ b/test/layer-tests/test-uses-widget-size.c @@ -4,7 +4,7 @@ static GtkWindow* window; static GtkWidget* child; static void callback_0() { - EXPECT_MESSAGE(.create_buffer 850 940); + EXPECT_MESSAGE(new id wl_buffer 850 940); EXPECT_MESSAGE(zwlr_layer_surface_v1 .set_size 850 940); window = create_default_window(); @@ -16,7 +16,7 @@ static void callback_0() { } static void callback_1() { - EXPECT_MESSAGE(.create_buffer 1001 610); + EXPECT_MESSAGE(new id wl_buffer 1001 610); EXPECT_MESSAGE(zwlr_layer_surface_v1 .set_size 1001 610); gtk_widget_set_size_request(child, 1001, 610); @@ -24,7 +24,7 @@ static void callback_1() { static void callback_2() { EXPECT_MESSAGE(zwlr_layer_surface_v1 .set_size 1001 0); - EXPECT_MESSAGE(.create_buffer 1001 1080); // size must match DEFAULT_OUTPUT_HEIGHT in common.h + EXPECT_MESSAGE(new id wl_buffer 1001 1080); // size must match DEFAULT_OUTPUT_HEIGHT in common.h gtk_layer_set_anchor(window, GTK_LAYER_SHELL_EDGE_TOP, TRUE); gtk_layer_set_anchor(window, GTK_LAYER_SHELL_EDGE_BOTTOM, TRUE); @@ -32,14 +32,14 @@ static void callback_2() { static void callback_3() { EXPECT_MESSAGE(zwlr_layer_surface_v1 .set_size 0 0); - EXPECT_MESSAGE(.create_buffer 1920 1080); + EXPECT_MESSAGE(new id wl_buffer 1920 1080); gtk_layer_set_anchor(window, GTK_LAYER_SHELL_EDGE_LEFT, TRUE); gtk_layer_set_anchor(window, GTK_LAYER_SHELL_EDGE_RIGHT, TRUE); } static void callback_4() { - EXPECT_MESSAGE(.create_buffer 555 777); + EXPECT_MESSAGE(new id wl_buffer 555 777); EXPECT_MESSAGE(zwlr_layer_surface_v1 .set_size 555 777); gtk_widget_set_size_request(child, 555, 777); diff --git a/test/mock-server/mock-server.c b/test/mock-server/mock-server.c index 0aea170..78722eb 100644 --- a/test/mock-server/mock-server.c +++ b/test/mock-server/mock-server.c @@ -3,9 +3,9 @@ struct wl_display* display = NULL; static const char* get_display_name() { - const char* result = getenv("WAYLAND_DISPLAY"); + const char* result = getenv("CREATE_DISPLAY"); if (!result) { - FATAL("WAYLAND_DISPLAY not set"); + FATAL("CREATE_DISPLAY not set"); } return result; } diff --git a/test/run-integration-test.py b/test/run-integration-test.py index 5808285..2d7615d 100755 --- a/test/run-integration-test.py +++ b/test/run-integration-test.py @@ -8,6 +8,7 @@ import shutil import time import subprocess +import signal import threading from typing import List, Dict, Optional, Any @@ -162,11 +163,17 @@ def run_test(name: str, server_args: List[str], client_args: List[str], xdg_runt Runs two processes: a mock server and the test client Does *not* check that client's message assertions pass, this must be done later using the returned output ''' + server_sway = 'sway' in server_args[0] + env = os.environ.copy() env['XDG_RUNTIME_DIR'] = xdg_runtime - env['WAYLAND_DISPLAY'] = wayland_display + env['CREATE_DISPLAY'] = wayland_display env['WAYLAND_DEBUG'] = '1' + if server_sway: + env['SWAYSOCK'] = path.join(xdg_runtime, 'swaysock') + env['WLR_BACKENDS'] = 'headless' + server = Program('server', server_args, env) try: @@ -175,6 +182,13 @@ def run_test(name: str, server_args: List[str], client_args: List[str], xdg_runt server.kill() raise TestError(server.format_output() + '\n\n' + str(e)) + env['WAYLAND_DISPLAY'] = wayland_display + + if server_sway: + swaymsg = Program('swaymsg', ['swaymsg', 'output', '*', 'resolution', '1920x1080'], env) + swaymsg.finish(timeout=1) + swaymsg.check_returncode() + client = Program(name, client_args, env) errors: List[str] = [] @@ -185,6 +199,7 @@ def run_test(name: str, server_args: List[str], client_args: List[str], xdg_runt errors.append(str(e)) try: + server.subprocess.send_signal(signal.SIGINT) server.finish(timeout=1) server.check_returncode() except TestError as e: @@ -257,8 +272,10 @@ def main(): assert os.access(server_bin, os.X_OK), server_bin + ' is not executable' wayland_display = 'wayland-test' xdg_runtime = get_xdg_runtime_dir() + #server_args = [server_bin] + server_args = ['/usr/bin/sway', '--config', '/home/code/gtk4-layer-shell/test/test-sway.conf'] - client_stderr = run_test(name, [server_bin], [client_bin, '--auto'], xdg_runtime, wayland_display) + client_stderr = run_test(name, server_args, [client_bin, '--auto'], xdg_runtime, wayland_display) client_lines = [line.strip() for line in client_stderr.strip().splitlines()] try: