diff --git a/autotests/integration/CMakeLists.txt b/autotests/integration/CMakeLists.txt index 294043bd0e..d8fe8ae600 100644 --- a/autotests/integration/CMakeLists.txt +++ b/autotests/integration/CMakeLists.txt @@ -6,46 +6,53 @@ add_library(KWinIntegrationTestFramework STATIC kwin_wayland_test.cpp test_helpe target_link_libraries(KWinIntegrationTestFramework kwin Qt5::Test) function(integrationTest) + set(optionArgs WAYLAND_ONLY) set(oneValueArgs NAME) set(multiValueArgs SRCS LIBS) - cmake_parse_arguments(ARGS "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + cmake_parse_arguments(ARGS "${optionArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) add_executable(${ARGS_NAME} ${ARGS_SRCS}) target_link_libraries(${ARGS_NAME} KWinIntegrationTestFramework kwin Qt5::Test ${ARGS_LIBS}) add_test(NAME kwin-${ARGS_NAME} COMMAND dbus-run-session ${CMAKE_CURRENT_BINARY_DIR}/${ARGS_NAME}) + if (${ARGS_WAYLAND_ONLY}) + add_executable(${ARGS_NAME}_waylandonly ${ARGS_SRCS}) + set_target_properties(${ARGS_NAME}_waylandonly PROPERTIES COMPILE_DEFINITIONS "NO_XWAYLAND") + target_link_libraries(${ARGS_NAME}_waylandonly KWinIntegrationTestFramework kwin Qt5::Test ${ARGS_LIBS}) + add_test(NAME kwin-${ARGS_NAME}-waylandonly COMMAND dbus-run-session ${CMAKE_CURRENT_BINARY_DIR}/${ARGS_NAME}_waylandonly) + endif() endfunction() -integrationTest(NAME testStart SRCS start_test.cpp) -integrationTest(NAME testTransientNoInput SRCS transient_no_input_test.cpp) +integrationTest(WAYLAND_ONLY NAME testStart SRCS start_test.cpp) +integrationTest(WAYLAND_ONLY NAME testTransientNoInput SRCS transient_no_input_test.cpp) integrationTest(NAME testDontCrashGlxgears SRCS dont_crash_glxgears.cpp) integrationTest(NAME testLockScreen SRCS lockscreen.cpp) -integrationTest(NAME testDecorationInput SRCS decoration_input_test.cpp) -integrationTest(NAME testInternalWindow SRCS internal_window.cpp) -integrationTest(NAME testTouchInput SRCS touch_input_test.cpp) -integrationTest(NAME testInputStackingOrder SRCS input_stacking_order.cpp) +integrationTest(WAYLAND_ONLY NAME testDecorationInput SRCS decoration_input_test.cpp) +integrationTest(WAYLAND_ONLY NAME testInternalWindow SRCS internal_window.cpp) +integrationTest(WAYLAND_ONLY NAME testTouchInput SRCS touch_input_test.cpp) +integrationTest(WAYLAND_ONLY NAME testInputStackingOrder SRCS input_stacking_order.cpp) integrationTest(NAME testPointerInput SRCS pointer_input.cpp) integrationTest(NAME testPlatformCursor SRCS platformcursor.cpp) -integrationTest(NAME testDontCrashCancelAnimation SRCS dont_crash_cancel_animation.cpp) -integrationTest(NAME testTransientPlacmenet SRCS transient_placement.cpp) +integrationTest(WAYLAND_ONLY NAME testDontCrashCancelAnimation SRCS dont_crash_cancel_animation.cpp) +integrationTest(WAYLAND_ONLY NAME testTransientPlacmenet SRCS transient_placement.cpp) integrationTest(NAME testDebugConsole SRCS debug_console_test.cpp) integrationTest(NAME testDontCrashEmptyDeco SRCS dont_crash_empty_deco.cpp) -integrationTest(NAME testPlasmaSurface SRCS plasma_surface_test.cpp) -integrationTest(NAME testMaximized SRCS maximize_test.cpp) -integrationTest(NAME testShellClient SRCS shell_client_test.cpp) -integrationTest(NAME testDontCrashNoBorder SRCS dont_crash_no_border.cpp) +integrationTest(WAYLAND_ONLY NAME testPlasmaSurface SRCS plasma_surface_test.cpp) +integrationTest(WAYLAND_ONLY NAME testMaximized SRCS maximize_test.cpp) +integrationTest(WAYLAND_ONLY NAME testShellClient SRCS shell_client_test.cpp) +integrationTest(WAYLAND_ONLY NAME testDontCrashNoBorder SRCS dont_crash_no_border.cpp) integrationTest(NAME testXClipboardSync SRCS xclipboardsync_test.cpp) -integrationTest(NAME testSceneOpenGL SRCS scene_opengl_test.cpp generic_scene_opengl_test.cpp) -integrationTest(NAME testSceneOpenGLES SRCS scene_opengl_es_test.cpp generic_scene_opengl_test.cpp) -integrationTest(NAME testNoXdgRuntimeDir SRCS no_xdg_runtime_dir_test.cpp) -integrationTest(NAME testScreenChanges SRCS screen_changes_test.cpp) +integrationTest(WAYLAND_ONLY NAME testSceneOpenGL SRCS scene_opengl_test.cpp generic_scene_opengl_test.cpp) +integrationTest(WAYLAND_ONLY NAME testSceneOpenGLES SRCS scene_opengl_es_test.cpp generic_scene_opengl_test.cpp) +integrationTest(WAYLAND_ONLY NAME testNoXdgRuntimeDir SRCS no_xdg_runtime_dir_test.cpp) +integrationTest(WAYLAND_ONLY NAME testScreenChanges SRCS screen_changes_test.cpp) integrationTest(NAME testModiferOnlyShortcut SRCS modifier_only_shortcut_test.cpp) -integrationTest(NAME testTabBox SRCS tabbox_test.cpp) -integrationTest(NAME testWindowSelection SRCS window_selection_test.cpp) -integrationTest(NAME testPointerConstraints SRCS pointer_constraints_test.cpp) -integrationTest(NAME testKeyboardLayout SRCS keyboard_layout_test.cpp) -integrationTest(NAME testKeymapCreationFailure SRCS keymap_creation_failure_test.cpp) -integrationTest(NAME testShowingDesktop SRCS showing_desktop_test.cpp) +integrationTest(WAYLAND_ONLY NAME testTabBox SRCS tabbox_test.cpp) +integrationTest(WAYLAND_ONLY NAME testWindowSelection SRCS window_selection_test.cpp) +integrationTest(WAYLAND_ONLY NAME testPointerConstraints SRCS pointer_constraints_test.cpp) +integrationTest(WAYLAND_ONLY NAME testKeyboardLayout SRCS keyboard_layout_test.cpp) +integrationTest(WAYLAND_ONLY NAME testKeymapCreationFailure SRCS keymap_creation_failure_test.cpp) +integrationTest(WAYLAND_ONLY NAME testShowingDesktop SRCS showing_desktop_test.cpp) integrationTest(NAME testDontCrashUseractionsMenu SRCS dont_crash_useractions_menu.cpp) -integrationTest(NAME testKWinBindings SRCS kwinbindings_test.cpp) +integrationTest(WAYLAND_ONLY NAME testKWinBindings SRCS kwinbindings_test.cpp) if (XCB_ICCCM_FOUND) integrationTest(NAME testMoveResize SRCS move_resize_window_test.cpp LIBS XCB::ICCCM) diff --git a/autotests/integration/kwin_wayland_test.cpp b/autotests/integration/kwin_wayland_test.cpp index d2aa6d05db..1af5c065f8 100644 --- a/autotests/integration/kwin_wayland_test.cpp +++ b/autotests/integration/kwin_wayland_test.cpp @@ -44,8 +44,8 @@ namespace KWin static void readDisplay(int pipe); -WaylandTestApplication::WaylandTestApplication(int &argc, char **argv) - : Application(OperationModeXwayland, argc, argv) +WaylandTestApplication::WaylandTestApplication(OperationMode mode, int &argc, char **argv) + : Application(mode, argc, argv) { QStandardPaths::setTestModeEnabled(true); #ifdef KWIN_BUILD_ACTIVITIES @@ -117,6 +117,15 @@ void WaylandTestApplication::continueStartupWithScreens() disconnect(kwinApp()->platform(), &Platform::screensQueried, this, &WaylandTestApplication::continueStartupWithScreens); createScreens(); + if (operationMode() == OperationModeWaylandOnly) { + createCompositor(); + connect(Compositor::self(), &Compositor::sceneCreated, this, + [this] { + createWorkspace(); + } + ); + return; + } createCompositor(); connect(Compositor::self(), &Compositor::sceneCreated, this, &WaylandTestApplication::startXwaylandServer); } diff --git a/autotests/integration/kwin_wayland_test.h b/autotests/integration/kwin_wayland_test.h index 4051b91312..2a27962eb6 100644 --- a/autotests/integration/kwin_wayland_test.h +++ b/autotests/integration/kwin_wayland_test.h @@ -54,7 +54,7 @@ class WaylandTestApplication : public Application { Q_OBJECT public: - WaylandTestApplication(int &argc, char **argv); + WaylandTestApplication(OperationMode mode, int &argc, char **argv); virtual ~WaylandTestApplication(); protected: @@ -171,19 +171,23 @@ bool unlockScreen(); Q_DECLARE_OPERATORS_FOR_FLAGS(KWin::Test::AdditionalWaylandInterfaces) Q_DECLARE_METATYPE(KWin::Test::ShellSurfaceType) -#define WAYLANDTEST_MAIN_HELPER(TestObject, DPI) \ +#define WAYLANDTEST_MAIN_HELPER(TestObject, DPI, OperationMode) \ int main(int argc, char *argv[]) \ { \ setenv("QT_QPA_PLATFORM", "wayland-org.kde.kwin.qpa", true); \ setenv("QT_QPA_PLATFORM_PLUGIN_PATH", KWINQPAPATH, true); \ setenv("KWIN_FORCE_OWN_QPA", "1", true); \ DPI; \ - KWin::WaylandTestApplication app(argc, argv); \ + KWin::WaylandTestApplication app(OperationMode, argc, argv); \ app.setAttribute(Qt::AA_Use96Dpi, true); \ TestObject tc; \ return QTest::qExec(&tc, argc, argv); \ } -#define WAYLANDTEST_MAIN(TestObject) WAYLANDTEST_MAIN_HELPER(TestObject, QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling) ) +#ifdef NO_XWAYLAND +#define WAYLANDTEST_MAIN(TestObject) WAYLANDTEST_MAIN_HELPER(TestObject, QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling), KWin::Application::OperationModeWaylandOnly) +#else +#define WAYLANDTEST_MAIN(TestObject) WAYLANDTEST_MAIN_HELPER(TestObject, QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling), KWin::Application::OperationModeXwayland) +#endif #endif