Skip to content

ci: enable all 14 tests with D-Bus session bus#10

Open
hikaps wants to merge 12 commits intodevelopfrom
ci/enable-all-tests
Open

ci: enable all 14 tests with D-Bus session bus#10
hikaps wants to merge 12 commits intodevelopfrom
ci/enable-all-tests

Conversation

@hikaps
Copy link
Copy Markdown
Owner

@hikaps hikaps commented Apr 19, 2026

Summary

  • Removes the blanket exclusion of 7 tests from CI
  • Adds dbus-daemon and polkit-qt6-1-devel to CI dependencies
  • Wraps ctest with dbus-run-session to provide a D-Bus session bus

Context

Previously 7 of 14 tests were excluded from CI via -E flag. Most were excluded conservatively — they either:

  • Need a D-Bus session bus (test_couchplayhelper — already has MockSystemOps)
  • May already work in a container (device/user/command tests handle empty/missing data gracefully)

Changes to CI

Before After
7/14 tests excluded All 14 tests run
No D-Bus session bus dbus-run-session provides session bus
Missing polkit-qt6-1-devel Added to deps (needed by helper test)

Expected results

Test Expected Reason
test_couchplayhelper ✅ Pass MockSystemOps + session bus
test_gamescopeinstance ✅ Pass Arg building tests don't need real gamescope
test_devicemanager ✅ Pass Guards for empty /proc/bus/input/devices
test_usermanager ✅ Pass Handles missing couchplay group
test_commandverifier ✅ Pass flatpak checks return false gracefully
test_heroicconfigmanager ✅ Pass Already creates mock configs with QTemporaryDir
test_presetmanager_integration ✅ Pass Pure filesystem with QTemporaryDir

If any test fails in CI, targeted QSKIP guards will be added (not blanket exclusions).

Test plan

  • CI passes with all 14 tests green

hikaps and others added 12 commits April 9, 2026 15:10
Replace machinectl shell launch mechanism with systemd-run --uid transient
units for better process lifecycle management. Adds crash monitoring via
systemd D-Bus PropertiesChanged signals, state persistence to
/run/couchplay/state.json with startup reconciliation, and consolidates
app directories to XDG standard paths.

- Launch via systemd-run --uid with -E for environment variables
- Crash monitoring with UnitMonitor helper class
- State persistence with atomic QSaveFile writes
- Removed all overlay mount code in favor of bind mounts
- Profiles moved to ~/.local/share/couchplay/profiles/
- Presets migrated from presets.json to KConfig groups
- KWin scripts moved from /tmp/ to $XDG_RUNTIME_DIR/couchplay/
- Allow deselecting user in player assignment ComboBox
- 13/13 tests passing, build clean
- Fix page navigation stacking (clear+push pattern)
- Fix audio routing: stale ACL cache, dynamic gamescope path, conditional PULSE_SERVER
- Extract validateUserAndAuth() and runCommand() helpers
- Remove dead QProcess code from GamescopeInstance
- Deduplicate AudioManager detection, async pactl calls
- Fix SettingsPage audio UI states
- Remove redundant isValid() checks in CouchPlayHelperClient
- Add AudioManager unit tests (8 tests)
- Update AGENTS.md knowledge base

CI: 14/14 tests pass, build clean
…nce launching (#4)

Introduce configurable grid arrangements for 3-player sessions (3x1
horizontal, 2x2 with gap, left+right split) with visual previews.
Refactor instance launching to sequential order to fix window
positioning
race conditions with KWin. Stop session on positioning timeout instead
of continuing broken.
feat(core): add screensaver inhibition during gaming sessions
…on via curl

- Use COUCHPLAY_VERSION_STRING from ecm_setup_version in main app and helper
- Remove redundant Version() D-Bus method (same binary, same version)
- Show Qt.application.version in SettingsPage instead of hardcoded string
- Install desktop file, icon, and metainfo in curl installer
Add polkit-qt6-1-devel and dbus-daemon to CI dependencies.
Remove blanket test exclusions — wrap ctest with dbus-run-session
to provide a session bus for test_couchplayhelper.
- test_commandverifier: QSKIP when /usr/bin/ls missing (minimal containers)
- test_devicemanager: QSKIP when no /dev/input/event* devices (containers)
- test_heroicconfigmanager: QSKIP when running as root (getpwnam unmockable)
- test_usermanager: QSKIP testDeleteUserRequiresHelper when running as root
- test_couchplayhelper: remove testVersion() for deleted Version() D-Bus method
- test_commandverifier: skip when resolveCommandPath returns empty for
  absolute paths (which may not resolve them in minimal containers)
- test_devicemanager: skip when no device has /dev/input/event path
  (container devices may lack standard input event paths)
getDevicePathsForInstance() includes joyPath which may not start with
/dev/input/event in containers. Check returned paths instead of device map.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant