Cache command method discovery in convention tests#142
Merged
Conversation
Add Lazy<MethodInfo[]> field to cache discovered command methods for shared use across tests. Update documentation to reflect the pattern. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR optimizes convention test performance by introducing a caching mechanism for command method discovery. Instead of running reflection separately for each test, methods are discovered once and shared across all convention tests through a thread-safe lazy initialization pattern.
Changes:
- Added a
Lazy<MethodInfo[]>field to cache discovered command methods with thread-safe initialization - Refactored existing convention tests to use the cached value instead of calling
DiscoverCommandMethods()directly - Updated documentation to explain the caching pattern for future contributors
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| tests/Keystone.Cli.UnitTests/Presentation/Cocona/CoconaCommandMethodConventionsTests.cs | Introduced cached lazy field and updated two test methods to consume it |
| docs/how-to/how-to-convention-tests.md | Updated documentation to reference the new caching pattern and guide contributors to use LazyCommandMethods.Value |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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.
Summary
Improve convention test efficiency by caching discovered command methods. Reflection now runs once and is shared across all convention tests, making the pattern clearer for contributors adding new tests.
Related Issues
Fixes #141
Changes
Lazy<MethodInfo[]>field to cache discovered command methods