Skip to content

fix: preserve original pattern in matchers for consistent matching and generation#2337

Merged
joelrosario merged 4 commits intomainfrom
fix_matcher_support
Mar 16, 2026
Merged

fix: preserve original pattern in matchers for consistent matching and generation#2337
joelrosario merged 4 commits intomainfrom
fix_matcher_support

Conversation

@yogeshnikam671
Copy link
Copy Markdown
Contributor

@yogeshnikam671 yogeshnikam671 commented Mar 12, 2026

Reason for change -
Matchers did not retain enough information about the original pattern when trying to derive a pattern from them.
With this change, each matcher derives a concrete pattern from its own kind using the original pattern, so the same pattern can be used consistently for both matching and generation of values.

Trigger for change -
RegexMatcher was supported on the test side, but it did not behave correctly on the mock side.
Investigation showed that the pattern being derived from RegexMatcher was incorrect, which caused mock-side handling to fail.

@github-actions
Copy link
Copy Markdown

Summary

Line coverage Branch coverage

Assembly Line coverage Branch coverage
application 64.9% 58.6%
application/backwardCompatibility 79.5% 65.1%
application/mcp 84.7% 76.9%
application/validate 1.2% 2.5%
io/specmatic/conversions 93.3% 78.4%
io/specmatic/conversions/lenient 97.6% 77.4%
io/specmatic/core 81.2% 62.8%
io/specmatic/core/azure 0% 0%
io/specmatic/core/config 61.6% 39.4%
io/specmatic/core/config/v1 97.9% 25%
io/specmatic/core/config/v2 91.9% 78.8%
io/specmatic/core/config/v3 56.7% 30.1%
io/specmatic/core/config/v3/components 78.9% 40%
io/specmatic/core/config/v3/components/runOptions 75.4% 47.5%
io/specmatic/core/config/v3/components/services 89.4% 59.6%
io/specmatic/core/config/v3/components/settings 100% 63.8%
io/specmatic/core/config/v3/components/sources 83.8% 61.5%
io/specmatic/core/config/v3/specmatic 57.6% 25%
io/specmatic/core/discriminator 52.6% 50%
io/specmatic/core/examples/module 45.7% 28.9%
io/specmatic/core/examples/server 73.8% 36.8%
io/specmatic/core/examples/source 91.6% 60%
io/specmatic/core/filters 83.9% 71.9%
io/specmatic/core/fuzzy 97.3% 93.8%
io/specmatic/core/git 9% 10.8%
io/specmatic/core/jsonoperator 68.8% 69.5%
io/specmatic/core/jsonoperator/value 86.2% 74.4%
io/specmatic/core/lifecycle 0% ****
io/specmatic/core/log 76.2% 62.3%
io/specmatic/core/matchers 86.9% 76.9%
io/specmatic/core/overlay 87.3% 58.8%
io/specmatic/core/pattern 87.5% 77.1%
io/specmatic/core/pattern/config 100% ****
io/specmatic/core/pattern/regex 94.5% 87.5%
io/specmatic/core/report 97.5% 91.6%
io/specmatic/core/route/modules 95% 87.5%
io/specmatic/core/utilities 69.5% 61%
io/specmatic/core/value 82.4% 69.2%
io/specmatic/core/wsdl/parser 81.4% 41%
io/specmatic/core/wsdl/parser/message 90% 72%
io/specmatic/core/wsdl/parser/operation 100% 100%
io/specmatic/core/wsdl/payload 81.1% 50%
io/specmatic/junit5/support 0% ****
io/specmatic/loader 84.6% 53.5%
io/specmatic/mcp/constants 0% ****
io/specmatic/mcp/report 0% 0%
io/specmatic/mcp/test 0% 0%
io/specmatic/mcp/test/client 0% 0%
io/specmatic/mcp/test/client/model 0% 0%
io/specmatic/mock 61.7% 56.5%
io/specmatic/proxy 67% 52%
io/specmatic/specmatic/core 100% ****
io/specmatic/specmatic/executable 100% ****
io/specmatic/specmatic/mcp 0% ****
io/specmatic/stub 78.9% 68.5%
io/specmatic/stub/listener 100% 100%
io/specmatic/stub/report 100% 77%
io/specmatic/test 73.6% 63.2%
io/specmatic/test/asserts 95.2% 86.6%
io/specmatic/test/handlers 89.7% 63.3%
io/specmatic/test/listeners 86.4% 53.2%
io/specmatic/test/reports 60% 33.3%
io/specmatic/test/reports/coverage 97.2% 54.9%
io/specmatic/test/reports/coverage/console 90.2% 84%
io/specmatic/test/reports/coverage/html 0% 0%
io/specmatic/test/reports/renderers 21.8% 24.1%
io/specmatic/test/utils 92.3% 80%

…ad which makes of the original pattern to build the pattern based off the matcher
Copy link
Copy Markdown
Contributor

@StarKhan6368 StarKhan6368 left a comment

Choose a reason for hiding this comment

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

Looks good to me

@yogeshnikam671 yogeshnikam671 changed the title fix: remove toPatternSimplied from matchers and use patternFrom instead which makes of the original pattern to build the pattern based off the matcher fix: generate patterns from matcher tokens using original pattern associated with that key Mar 16, 2026
@yogeshnikam671 yogeshnikam671 changed the title fix: generate patterns from matcher tokens using original pattern associated with that key fix: preserve original pattern in matchers for consistent matching and generation Mar 16, 2026
@joelrosario joelrosario merged commit 5f6ab3b into main Mar 16, 2026
3 checks passed
@joelrosario joelrosario deleted the fix_matcher_support branch March 16, 2026 15:37
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.

3 participants