Skip to content

To allow/support the implementation of the coverageExclude task #486

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Prev Previous commit
Next Next commit
PR feedback: Adding missing files. Make tests pass (again).
  • Loading branch information
rolandtritsch committed Jul 4, 2022
commit 4110c71013a18d624ce95ed49e6d804b9072be76
2 changes: 1 addition & 1 deletion plugin/src/main/scala/scoverage/ScoveragePlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ class ScoverageInstrumentationComponent(
safeSource(tree) match {
case None =>
reporter.warning(
NoPosition(), s"Could not instrument [${tree.getClass.getSimpleName}/${tree.symbol}]."
NoPosition, s"Could not instrument [${tree.getClass.getSimpleName}/${tree.symbol}]."
)
tree
case Some(source) =>
Expand Down
54 changes: 29 additions & 25 deletions plugin/src/test/scala/scoverage/RegexCoverageFilterTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,50 +4,54 @@ import scala.reflect.internal.util.BatchSourceFile
import scala.reflect.internal.util.NoFile
import scala.reflect.internal.util.SourceFile
import scala.reflect.io.VirtualFile
import scala.tools.nsc.reporters.ConsoleReporter
import scala.tools.nsc.Settings

import munit.FunSuite

class RegexCoverageFilterTest extends FunSuite {

val reporter = new ConsoleReporter(new Settings())

test("isClassIncluded should return true for empty excludes") {
assert(new RegexCoverageFilter(Nil, Nil, Nil).isClassIncluded("x"))
assert(new RegexCoverageFilter(Nil, Nil, Nil, reporter).isClassIncluded("x"))
}

test("should not crash for empty input") {
assert(new RegexCoverageFilter(Nil, Nil, Nil).isClassIncluded(""))
assert(new RegexCoverageFilter(Nil, Nil, Nil, reporter).isClassIncluded(""))
}

test("should exclude scoverage -> scoverage") {
assert(
!new RegexCoverageFilter(Seq("scoverage"), Nil, Nil)
!new RegexCoverageFilter(Seq("scoverage"), Nil, Nil, reporter)
.isClassIncluded("scoverage")
)
}

test("should include scoverage -> scoverageeee") {
assert(
new RegexCoverageFilter(Seq("scoverage"), Nil, Nil)
new RegexCoverageFilter(Seq("scoverage"), Nil, Nil, reporter)
.isClassIncluded("scoverageeee")
)
}

test("should exclude scoverage* -> scoverageeee") {
assert(
!new RegexCoverageFilter(Seq("scoverage*"), Nil, Nil)
!new RegexCoverageFilter(Seq("scoverage*"), Nil, Nil, reporter)
.isClassIncluded("scoverageeee")
)
}

test("should include eee -> scoverageeee") {
assert(
new RegexCoverageFilter(Seq("eee"), Nil, Nil)
new RegexCoverageFilter(Seq("eee"), Nil, Nil, reporter)
.isClassIncluded("scoverageeee")
)
}

test("should exclude .*eee -> scoverageeee") {
assert(
!new RegexCoverageFilter(Seq(".*eee"), Nil, Nil)
!new RegexCoverageFilter(Seq(".*eee"), Nil, Nil, reporter)
.isClassIncluded("scoverageeee")
)
}
Expand All @@ -56,91 +60,91 @@ class RegexCoverageFilterTest extends FunSuite {

test("isFileIncluded should return true for empty excludes") {
val file = new BatchSourceFile(abstractFile, Array.emptyCharArray)
assert(new RegexCoverageFilter(Nil, Nil, Nil).isFileIncluded(file))
assert(new RegexCoverageFilter(Nil, Nil, Nil, reporter).isFileIncluded(file))
}

test("should exclude by filename") {
val file = new BatchSourceFile(abstractFile, Array.emptyCharArray)
assert(
!new RegexCoverageFilter(Nil, Seq("sammy"), Nil)
!new RegexCoverageFilter(Nil, Seq("sammy\\.scala"), Nil, reporter)
.isFileIncluded(file)
)
}

test("should exclude by regex wildcard") {
val file = new BatchSourceFile(abstractFile, Array.emptyCharArray)
assert(
!new RegexCoverageFilter(Nil, Seq("sam.*"), Nil)
!new RegexCoverageFilter(Nil, Seq("sam.*"), Nil, reporter)
.isFileIncluded(file)
)
}

test("should not exclude non matching regex") {
val file = new BatchSourceFile(abstractFile, Array.emptyCharArray)
assert(
new RegexCoverageFilter(Nil, Seq("qweqeqwe"), Nil)
new RegexCoverageFilter(Nil, Seq("qweqeqwe"), Nil, reporter)
.isFileIncluded(file)
)
}

val options = ScoverageOptions.default()

test("isSymbolIncluded should return true for empty excludes") {
assert(new RegexCoverageFilter(Nil, Nil, Nil).isSymbolIncluded("x"))
assert(new RegexCoverageFilter(Nil, Nil, Nil, reporter).isSymbolIncluded("x"))
}

test("should not crash for empty input") {
assert(new RegexCoverageFilter(Nil, Nil, Nil).isSymbolIncluded(""))
assert(new RegexCoverageFilter(Nil, Nil, Nil, reporter).isSymbolIncluded(""))
}

test("should exclude scoverage -> scoverage") {
assert(
!new RegexCoverageFilter(Nil, Nil, Seq("scoverage"))
!new RegexCoverageFilter(Nil, Nil, Seq("scoverage"), reporter)
.isSymbolIncluded("scoverage")
)
}

test("should include scoverage -> scoverageeee") {
assert(
new RegexCoverageFilter(Nil, Nil, Seq("scoverage"))
new RegexCoverageFilter(Nil, Nil, Seq("scoverage"), reporter)
.isSymbolIncluded("scoverageeee")
)
}
test("should exclude scoverage* -> scoverageeee") {
assert(
!new RegexCoverageFilter(Nil, Nil, Seq("scoverage*"))
!new RegexCoverageFilter(Nil, Nil, Seq("scoverage*"), reporter)
.isSymbolIncluded("scoverageeee")
)
}

test("should include eee -> scoverageeee") {
assert(
new RegexCoverageFilter(Nil, Nil, Seq("eee"))
new RegexCoverageFilter(Nil, Nil, Seq("eee"), reporter)
.isSymbolIncluded("scoverageeee")
)
}

test("should exclude .*eee -> scoverageeee") {
assert(
!new RegexCoverageFilter(Nil, Nil, Seq(".*eee"))
!new RegexCoverageFilter(Nil, Nil, Seq(".*eee"), reporter)
.isSymbolIncluded("scoverageeee")
)
}
test("should exclude scala.reflect.api.Exprs.Expr") {
assert(
!new RegexCoverageFilter(Nil, Nil, options.excludedSymbols)
!new RegexCoverageFilter(Nil, Nil, options.excludedSymbols, reporter)
.isSymbolIncluded("scala.reflect.api.Exprs.Expr")
)
}
test("should exclude scala.reflect.macros.Universe.Tree") {
assert(
!new RegexCoverageFilter(Nil, Nil, options.excludedSymbols)
!new RegexCoverageFilter(Nil, Nil, options.excludedSymbols, reporter)
.isSymbolIncluded("scala.reflect.macros.Universe.Tree")
)
}
test("should exclude scala.reflect.api.Trees.Tree") {
assert(
!new RegexCoverageFilter(Nil, Nil, options.excludedSymbols)
!new RegexCoverageFilter(Nil, Nil, options.excludedSymbols, reporter)
.isSymbolIncluded("scala.reflect.api.Trees.Tree")
)
}
Expand All @@ -158,7 +162,7 @@ class RegexCoverageFilterTest extends FunSuite {
|8
""".stripMargin

val numbers = new RegexCoverageFilter(Nil, Nil, Nil)
val numbers = new RegexCoverageFilter(Nil, Nil, Nil, reporter)
.getExcludedLineNumbers(mockSourceFile(file))
assertEquals(numbers, List.empty)
}
Expand All @@ -182,7 +186,7 @@ class RegexCoverageFilterTest extends FunSuite {
|16
""".stripMargin

val numbers = new RegexCoverageFilter(Nil, Nil, Nil)
val numbers = new RegexCoverageFilter(Nil, Nil, Nil, reporter)
.getExcludedLineNumbers(mockSourceFile(file))
assertEquals(numbers, List(Range(4, 9), Range(12, 14)))
}
Expand All @@ -205,7 +209,7 @@ class RegexCoverageFilterTest extends FunSuite {
|15
""".stripMargin

val numbers = new RegexCoverageFilter(Nil, Nil, Nil)
val numbers = new RegexCoverageFilter(Nil, Nil, Nil, reporter)
.getExcludedLineNumbers(mockSourceFile(file))
assertEquals(numbers, List(Range(4, 9), Range(12, 16)))
}
Expand All @@ -228,7 +232,7 @@ class RegexCoverageFilterTest extends FunSuite {
|15
""".stripMargin

val numbers = new RegexCoverageFilter(Nil, Nil, Nil)
val numbers = new RegexCoverageFilter(Nil, Nil, Nil, reporter)
.getExcludedLineNumbers(mockSourceFile(file))
assertEquals(numbers, List(Range(4, 9), Range(12, 16)))
}
Expand Down