summaryrefslogtreecommitdiff
path: root/src/partest-extras/scala/tools/partest/StubErrorMessageTest.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/partest-extras/scala/tools/partest/StubErrorMessageTest.scala')
-rw-r--r--src/partest-extras/scala/tools/partest/StubErrorMessageTest.scala47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/partest-extras/scala/tools/partest/StubErrorMessageTest.scala b/src/partest-extras/scala/tools/partest/StubErrorMessageTest.scala
new file mode 100644
index 0000000000..f713b79e75
--- /dev/null
+++ b/src/partest-extras/scala/tools/partest/StubErrorMessageTest.scala
@@ -0,0 +1,47 @@
+package scala.tools.partest
+
+trait StubErrorMessageTest extends StoreReporterDirectTest {
+ // Stub to feed to partest, unused
+ def code = throw new Error("Use `userCode` instead of `code`.")
+
+ val classpath = List(sys.props("partest.lib"), testOutput.path)
+ .mkString(sys.props("path.separator"))
+
+ def compileCode(codes: String*) = {
+ val global = newCompiler("-cp", classpath, "-d", testOutput.path)
+ val sourceFiles = newSources(codes: _*)
+ withRun(global)(_ compileSources sourceFiles)
+ }
+
+ def removeClasses(inPackage: String, classNames: Seq[String]): Unit = {
+ val pkg = new File(testOutput.path, inPackage)
+ classNames.foreach { className =>
+ val classFile = new File(pkg, s"$className.class")
+ assert(classFile.exists)
+ assert(classFile.delete())
+ }
+ }
+
+ def removeFromClasspath(): Unit
+ def codeA: String
+ def codeB: String
+ def userCode: String
+ def extraUserCode: String = ""
+
+ def show(): Unit = {
+ compileCode(codeA)
+ assert(filteredInfos.isEmpty, filteredInfos)
+
+ compileCode(codeB)
+ assert(filteredInfos.isEmpty, filteredInfos)
+ removeFromClasspath()
+
+ if (extraUserCode == "") compileCode(userCode)
+ else compileCode(userCode, extraUserCode)
+ import scala.reflect.internal.util.Position
+ filteredInfos.map { report =>
+ print(if (report.severity == storeReporter.ERROR) "error: " else "")
+ println(Position.formatMessage(report.pos, report.msg, true))
+ }
+ }
+}