summaryrefslogtreecommitdiff
path: root/hyprtester/src/tests/main/workspaces.cpp
Commit message (Collapse)AuthorAgeFilesLines
* desktop/workspace: fix visibility criteria matching (#14349)Vaxry2026-05-081-0/+40
| | | ref https://github.com/hyprwm/Hyprland/discussions/14233
* hyprtester: minor refactoring/restructure (#14154)Nikolai Nechaev2026-04-281-153/+129
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * hyprtester: Minor misc fixes - Use `std::filesystem::path` instead of `std::string` in some places; - Use `std::ranges::sort`, as suggested by clang-tidy; - Reset colors at the end of every log line; - Give more specific error messages in main. * hyprtester: Fix a bug in `hyprlandAlive()` Successful standard library calls are permitted to (and do) modify the value of `errno` arbitrarily. Checking the value of `errno` only makes sense when the library function returns an error. So, the correct condition of a successful signal delivery is that the call to `kill` returns 0. Btw, given the possible other error values of `kill(2)`, should we even consider `errno` at all? * hyprtester: Restructure main Split main's `main()` into multiple functions, separate responsibilities more cleanly. Add default values for cmd-line options to the help message. * hyprtester: Remove redundant path canonicalization * hyprtester: Run unified clean up code before every test * tests: Use RAII for clients in client tests Turn clients in client tests into classes. Constructors initialize, destructors deinitialize. Not only is it better design when entities (clients) are modeled as classes, keeping all the methods connected, this also ensures the tests perform their custom cleanup. This will be especially important when we introduce early termination on failure into the tests. * hyprtester: Rewrite the testing framework! - Implement a new test definition system used via the `TEST_CASE` and `SUBTEST` macros. - Adds `ASSERT*` and reimplements `EXPECT*` macros. The former now terminate the test immediately. Also add some new macros, such as `FAIL_TEST`. - Move existing tests to the new system. For trivial cases, break existing test functions down to multiple test cases. - For non-trivial cases and a few other possible improvements, leave TODOs. * tests: Use `EXPECT*` instead of `ASSERT*` in some places `ASSERT*` macros terminate the test as soon as they fail. They are appropriate to use when, if something fails, the rest of the test does not make sense and more error messages from failing checks will just pollute the output. `EXPECT*` macros mark the test as failed but its execution continues. It makes sense to use them when error messages from the following checks in the test may be useful for someone who will be reading the log. I changed some uses of `ASSERT*` in main tests to `EXPECT*`. But I was not reading tests very carefully, so maybe I was wrong in some places. My rule of thumb was: - Checks that ensure that a kitty opens / a certain set/number of windows exists are fatal; - A series of checks, especially on the same string returned by `Hyprland`, are non-fatal; - Checks in tests with tightly coupled steps (i.e., do this, check, do this with the result of the previous step, check, etc) are fatal.
* config/lua: init lua config manager, use lua if available (#13817)Vaxry2026-04-261-131/+131
| | | Adds a new lua config manager, which will automatically be used if there is a lua config present.
* desktop/workspaceHistory: small refactor to work better with multi monitor ↵Mr-Stoneman2026-03-261-0/+30
| | | | setups (#13632)
* hyprctl: fix workspace dynamic effect reloading (#13537)Vaxry2026-03-031-1/+19
| | | ref https://github.com/hyprwm/Hyprland/discussions/12806
* tests/workspace: fix one test case failingVaxry2026-03-031-1/+1
|
* layout/algos: use binds:window_direction_monitor_fallback for moves (#13508)Vaxry2026-03-021-0/+121
| | | ref https://github.com/hyprwm/Hyprland/discussions/13473
* desktop/workspaceHistory: fix tracking for multiple monitors (#12979)Vaxry2026-01-151-3/+67
|
* fix: handle fullscreen windows on special workspaces (#12851)John Mylchreest2026-01-081-0/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fix: handle fullscreen windows on special workspaces inFullscreenMode() only checked m_activeWorkspace, missing fullscreen windows on special workspaces. This caused crashes and incorrect behavior when fullscreen windows were on special workspaces. Changes: - inFullscreenMode() now checks special workspace first since it renders on top of regular workspaces - Added getFullscreenWindow() helper to safely get fullscreen window from either active or special workspace - Updated callers (shouldSkipScheduleFrameOnMouseEvent, Renderer, getFSImageDescription) to use the new helper - Reset m_aboveFullscreen for layer surfaces when opening, closing, or stealing special workspaces between monitors * test: add special workspace fullscreen detection tests Add tests for the new special workspace fullscreen handling introduced in the previous commit. The tests cover: 1. Fullscreen detection on special workspace - verifies that a window made fullscreen on a special workspace is correctly detected 2. Special workspace fullscreen precedence - verifies that when both regular and special workspaces have fullscreen windows, the special workspace window can be focused when the special workspace is opened 3. Toggle special workspace behavior - verifies that toggling the special workspace off properly hides it and returns focus to the regular workspace's fullscreen window These tests exercise the key code paths modified in the fix: - inFullscreenMode() checking special workspace first - getFullscreenWindow() helper returning correct window - Layer surface m_aboveFullscreen reset on special workspace toggle
* desktop: rewrite reserved area handling + improve tests (#12383)Vaxry2025-12-051-0/+92
|
* dwindle: Revert rework split logic to be fully gap-aware (#12047)Vaxry2025-11-181-91/+0
| | | | | | This reverts commit 151b5f69783b111831e8c5dc062904a221799d7b. Fixes #12380
* windowrules: rewrite completely (#12269)Vaxry2025-11-171-1/+1
| | | | | | | Reworks the window rule syntax completely --------- Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
* dwindle: rework split logic to be fully gap-aware (#12047)crossatko2025-10-241-0/+91
|
* workspaces: fix persistence with no monitor specified (#11807)Vaxry2025-09-231-0/+10
|
* ci: correct tar command for xz compression & fix typos (#11213)xqso2025-07-251-1/+1
|
* tests: add a few more workspace testsVaxry2025-07-231-0/+7
|
* tester: simplify adding test filesVaxry2025-06-271-1/+3
|
* Core: Add a test suite (#9297)Vaxry2025-06-261-0/+349
Adds a test suite for testing hyprland's features with a runtime tester --------- Co-authored-by: Mihai Fufezan <mihai@fufexan.net>