suite: Add support for extra filtering and -testify.r #1748
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
This PR makes 2 changes to the suite package.
-testify.r
to run tests multiple times without rerunning Setup/TeardownSuiteChanges & Motivation
Change 1:
The first change allows tests to be repeated multiple times. Using go test's
-count
option results in the Setup/TeardownSuite also running multiple times. There are cases where this is not desired since the Setup/TeardownSuite may take a long time.Change 2:
The second change allows users of the suite package to "extend" it with their own skip function.
The tests I added show overly simplified implementation, but this allows you to have test registration, and apply this during the collection phase of the testrun.
Additionally, the running of the SetupSuite was moved to outside the loop.
This is to avoid it running unnecessarily when you try to run a specific test that is filtered out but others aren't.
e.g:
go test MySuite/MyTest
MyTest
is skipped by the skip function, but the iteration overmethodFinder.NumMethod()
will still go over the other tests of the suite which are possibly not skipped and will run the SetupSuite. However, because you only specified MyTest, they won't run either. Now the SetupSuite is executed unnecessarily.