Skip to content

refactor(greeter): make key methods virtual for testability#1093

Open
deepin-wm wants to merge 4 commits into
linuxdeepin:masterfrom
deepin-wm:refactor/greeter-virtual-methods
Open

refactor(greeter): make key methods virtual for testability#1093
deepin-wm wants to merge 4 commits into
linuxdeepin:masterfrom
deepin-wm:refactor/greeter-virtual-methods

Conversation

@deepin-wm

Copy link
Copy Markdown
Contributor

Make isLocked(), showShutdownView(), setShowShutdownView(), lock(), and switchUser() virtual to allow test subclasses to override behavior without requiring a running DDM connection.

Extracted from #1046. Ref: WM-29

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @deepin-wm, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@deepin-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: deepin-wm

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@deepin-wm deepin-wm force-pushed the refactor/greeter-virtual-methods branch from f7d498e to 28e77aa Compare July 2, 2026 11:25
deepin-wm added 2 commits July 2, 2026 19:26
Add testability support and unit tests for treeland core modules:
- CMakePresets: add excludeLabel for testability
- lockscreen: add primaryOutputName() getter
- output: make constrainToValidArea public static
- xresource: add splitXResourceLine public static
- xsettings: add testMode constructor and expose protected methods
- backlight: add basePath parameter for test injection
- greeterproxy: add testMode constructor, virtual methods, and null guards
- rootsurfacecontainer, shellhandler, helper, workspace: add TODO(unit-test)
- surfacewrapper: add TODO(unit-test) comment
- Add 14 test directories covering core modules
Qt signals cannot be declared virtual — MOC generates non-virtual
implementations, so adding virtual to a signal causes undefined
behavior when a mock tries to override it (SEGFAULT in test_lockscreen).
@deepin-wm deepin-wm force-pushed the refactor/greeter-virtual-methods branch from 28e77aa to 8789080 Compare July 2, 2026 12:13
deepin-wm added 2 commits July 2, 2026 20:32
Since switchUser() is no longer virtual (signals cannot be virtual),
MockGreeterProxy::switchUser() override causes a compile error.
Replace with QSignalSpy to observe the base class signal emission.
When SurfaceContainer is constructed with a null parent,
ensureQmlContext() would dereference a null pointer from
parentContainer(). Add early return for null.

Also update test_lockscreen to pass a non-null parent
SurfaceContainer (via QQuickItem constructor path) to
avoid triggering ensureQmlContext() with a null parent.

Also value-initialize WallpaperWorkspaceConfig in test_wallpaperconfig
to silence -Werror=maybe-uninitialized on the Deepin deb build.
@deepin-wm deepin-wm force-pushed the refactor/greeter-virtual-methods branch from 785f4da to 4cff91e Compare July 2, 2026 14:00
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.

2 participants