mirror of https://github.com/sbt/sbt.git
introduce SysProp sbt.testing.legacyreport
either create test reports with legacy file names (legacyreport=true) or with standard file names (legacyreport=false or omitted) but not both as suggested in #4451
This commit is contained in:
parent
b37bad6644
commit
cea516175f
|
|
@ -70,6 +70,7 @@ object SysProp {
|
|||
def client: Boolean = getOrFalse("sbt.client")
|
||||
def ci: Boolean = getOrFalse("sbt.ci")
|
||||
def allowRootDir: Boolean = getOrFalse("sbt.rootdir")
|
||||
def legacyTestReport: Boolean = getOrFalse("sbt.testing.legacyreport")
|
||||
|
||||
def watchMode: String =
|
||||
sys.props.get("sbt.watch.mode").getOrElse("auto")
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ package plugins
|
|||
|
||||
import Def.Setting
|
||||
import Keys._
|
||||
import sbt.internal.SysProp
|
||||
|
||||
/**
|
||||
* An experimental plugin that adds the ability for junit-xml to be generated.
|
||||
|
|
@ -30,6 +31,10 @@ object JUnitXmlReportPlugin extends AutoPlugin {
|
|||
// It might be a good idea to derive this setting into specific test scopes.
|
||||
override lazy val projectSettings: Seq[Setting[_]] =
|
||||
Seq(
|
||||
testListeners += new JUnitXmlTestsListener(target.value.getAbsolutePath, streams.value.log)
|
||||
testListeners += new JUnitXmlTestsListener(
|
||||
target.value.getAbsolutePath,
|
||||
streams.value.log,
|
||||
SysProp.legacyTestReport
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,9 +33,10 @@ import sbt.protocol.testing.TestResult
|
|||
* report format.
|
||||
* @param outputDir path to the dir in which a folder with results is generated
|
||||
*/
|
||||
class JUnitXmlTestsListener(val outputDir: String, logger: Logger) extends TestsListener {
|
||||
class JUnitXmlTestsListener(val outputDir: String, logger: Logger, legacyTestReport: Boolean)
|
||||
extends TestsListener {
|
||||
// This constructor is for binary compatibility with older versions of sbt.
|
||||
def this(outputDir: String) = this(outputDir, null)
|
||||
def this(outputDir: String) = this(outputDir, null, false)
|
||||
|
||||
/**Current hostname so we know which machine executed the tests*/
|
||||
val hostname: String = {
|
||||
|
|
@ -248,14 +249,14 @@ class JUnitXmlTestsListener(val outputDir: String, logger: Logger) extends Tests
|
|||
d.truncatedTo(ChronoUnit.SECONDS).format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
|
||||
|
||||
private def writeSuite(): Unit = {
|
||||
val legacyFile =
|
||||
val file = if (legacyTestReport) {
|
||||
new File(targetDir, s"${normalizeName(withTestSuite(_.name))}.xml").getAbsolutePath
|
||||
val file =
|
||||
} else {
|
||||
new File(targetDir, s"TEST-${normalizeName(withTestSuite(_.name))}.xml").getAbsolutePath
|
||||
}
|
||||
// TODO would be nice to have a logger and log this with level debug
|
||||
// System.err.println("Writing JUnit XML test report: " + file)
|
||||
val testSuiteResult = withTestSuite(_.stop())
|
||||
XML.save(legacyFile, testSuiteResult, "UTF-8", xmlDecl = true, null)
|
||||
XML.save(file, testSuiteResult, "UTF-8", xmlDecl = true, null)
|
||||
testSuite.remove()
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue