[Fix #320] Add cop for test class name #342
Open
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.
Fix test class detection to avoid false positives
Summary
This PR fixes the test class detection logic in
MinitestExplorationHelpersto eliminate false positives and false negatives. The detection now relies solely on the parent class rather than class naming conventions.Problem
The previous implementation had two major issues:
1. False Positives
Classes with "Test" in their name but not inheriting from test frameworks were incorrectly identified as test classes:
This caused RuboCop to run Minitest cops on non-test code.
2. False Negatives
Classes following Minitest's
TestFoonaming convention were not recognized:This caused RuboCop to skip checking legitimate test classes.
Usage Example
Project with custom test base class:
Configuration needed:
Without this configuration,
UserTest < ParentTestwill not be recognized as a test class.Migration guide for users:
If you have custom test base classes like:
And your test classes inherit from them:
Add this to your
.rubocop.yml:Related Issues
Fixes issue mentioned in comments about:
FooTest < ApplicationRecordbeing incorrectly identified as test classesTestFoonaming convention not being recognizedDocumentation
Users should be informed about the
AdditionalTestBaseClassesconfiguration option for custom test base classes.Related to #320
Before submitting the PR make sure the following are checked:
[Fix #issue-number](if the related issue exists).master(if not - rebase it).bundle exec rake default. It executes all tests and runs RuboCop on its own code.{change_type}_{change_description}.mdif the new code introduces user-observable changes. See changelog entry format for details.