Introduce base class for codegen and diagnostic tests

Extract base TestFile and TestModule classes.
 Move coroutinePackage related logic to base class
This commit is contained in:
Mikhael Bogdanov
2020-02-20 17:01:07 +01:00
parent b031706ea9
commit a795c38eb7
29 changed files with 257 additions and 188 deletions
@@ -27,24 +27,22 @@ abstract class AbstractBlackBoxCodegenTestSpec : AbstractBlackBoxCodegenTest() {
private fun addPackageDirectiveToHelperFile(helperContent: String, packageName: String?) =
helperContent.replace(HELPERS_PACKAGE_VARIABLE, if (packageName == null) "" else "package $packageName")
private fun includeHelpers(wholeFile: File, files: MutableList<TestFile>, specTest: AbstractSpecTest) {
if (specTest.helpers == null) return
private fun includeHelpers(wholeFile: File, files: List<TestFile>, specTest: AbstractSpecTest): List<TestFile> {
if (specTest.helpers == null) return files
val fileContent = FileUtil.loadFile(wholeFile, true)
val packageName = packagePattern.matcher(fileContent).let {
if (it.find()) it.group("packageName") else null
}
specTest.helpers.forEach {
return files + specTest.helpers.map {
val filename = "$it.kt"
val helperContent = FileUtil.loadFile(File("$HELPERS_PATH/$filename"), true)
files.add(
TestFile(filename, addPackageDirectiveToHelperFile(helperContent, packageName))
)
TestFile(filename, addPackageDirectiveToHelperFile(helperContent, packageName))
}
}
override fun doMultiFileTest(wholeFile: File, files: MutableList<TestFile>) {
override fun doMultiFileTest(wholeFile: File, files: List<TestFile>) {
val (specTest, testLinkedType) = CommonParser.parseSpecTest(
wholeFile.canonicalPath,
mapOf("main.kt" to FileUtil.loadFile(wholeFile, true))
@@ -60,9 +58,9 @@ abstract class AbstractBlackBoxCodegenTestSpec : AbstractBlackBoxCodegenTest() {
println(specTest)
includeHelpers(wholeFile, files, specTest)
val filesWithHelpers = includeHelpers(wholeFile, files, specTest)
val runTest = { super.doMultiFileTest(wholeFile, files, specTest.unexpectedBehavior) }
val runTest = { super.doMultiFileTest(wholeFile, filesWithHelpers, specTest.unexpectedBehavior) }
if (specTest.exception == null) {
runTest()