Skip to content

Commit

Permalink
Allow test classes with constructor parameters (#982)
Browse files Browse the repository at this point in the history
This PR removes a filter from the test discovery that ignores classes that have parameters in their constructor. I think this is problematic as it is perfectly valid for tests to have constructor parameters depending on the test framework, and so this should be a decision made by the testing framework rather than the build tool.

Here's an example where I encountered this issue recently: disneystreaming/weaver-test#113. After running these tests again with the changes made in this PR the example tests shown in that issue now pass.

I've attempted to verify that these changes are compatible with other test frameworks. With some fairly basic examples uTest and Scalatest both seem to continue to work as expected. I'd be happy to verify the changes against other test frameworks if you have any further suggestions.

Commits:

* Add VS Code to gitignore

* Remove constraint for parameter count

Pull request: #982
  • Loading branch information
RobinJDCox authored Oct 27, 2020
1 parent 7064db4 commit cc0d0fc
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 1 deletion.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ output/
.DS_STORE
.idea_modules
.idea
.vscode/
out/
/.bloop/
/.metals/
Expand Down
2 changes: 1 addition & 1 deletion scalalib/src/Lib.scala
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ object Lib{
else listClassFiles(base).flatMap { path =>
val cls = cl.loadClass(path.stripSuffix(".class").replace('/', '.'))
val publicConstructorCount =
cls.getConstructors.count(c => c.getParameterCount == 0 && Modifier.isPublic(c.getModifiers))
cls.getConstructors.count(c => Modifier.isPublic(c.getModifiers))

if (Modifier.isAbstract(cls.getModifiers) || cls.isInterface || publicConstructorCount > 1) {
None
Expand Down

0 comments on commit cc0d0fc

Please sign in to comment.