test: cover the manual phone entry rules - #8285
Merged
vitormattos merged 1 commit intoSep 7, 2026
Merged
Conversation
Infection on ManualPhonePlugin reported 18 mutants with 5 escaped and a Covered MSI of 72%. Four more mutants were never reached, because no test executed the early return for a context without a raw search or the one for a number the phone number util rejects. The dataset written for the rejected number did not reach it: it passed the normalized value as the search term, so the plugin returned on the empty search before ever calling convertToStandardFormat(). The tests now assert the return value of search(), keep the exact and the wide result sets apart, check the whole payload of the offered entry, and state that neither the configuration nor the phone number util is touched when there is no number to offer. Trimming is covered by a scenario with surrounding whitespace on both the search and the raw search. Ref LibreSign#8053 Assisted-by: Claude Code:claude-opus-5 Signed-off-by: André Maia <andrefnkmm@gmail.com>
vitormattos
approved these changes
Sep 7, 2026
Member
|
/backport to stable35 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related to: #8053
📝 Summary
Infection on
lib/Collaboration/Collaborators/ManualPhonePlugin.phpreported 18 mutants, 5 escaped and a Covered MSI of 72%. Running it with--with-uncoveredshows 22 mutants and 81% mutation code coverage: 4 mutants on lines 43 and 52 were never reached, because no test executed the early return for a context without a raw search, or the one for a number the phone number util rejects.The dataset written for the rejected number did not reach it. It passed the normalized value as the search term, so the plugin returned on the empty search before ever calling
convertToStandardFormat().This PR changes tests only.
What the tests now protect:
search(), which was never asserted;label,shareWithDisplayNameUnique,methodand both values — instead of the share type alone;The single test method became three: the valid number, with a data provider for the national number with a default region, the E164 number without one and the whitespace case; the searches that must not be validated at all, with a data provider for the non-phone method, the empty search, the whitespace-only search and the context without a raw search; and the number rejected by the phone number util.
🧪 How to test
Expected result:
Infection, scoped to this source file:
Expected result:
One thread is needed here for the same reason described in #8230: with more threads the run reports errors instead of real results.
⚙️ API / Back‑end changes
✅ Checklist
php-cs-fixerandphp -lpass on the changed file.🤖 AI (if applicable)