Reduce boilerplate in CompileKotlinAgainstCustomBinariesTest

Check against output.txt in compileKotlin; adapt test data of some tests
This commit is contained in:
Alexander Udalov
2017-05-25 18:37:41 +03:00
parent 0899eb9924
commit dae414854d
6 changed files with 35 additions and 75 deletions
@@ -3,7 +3,7 @@ package test
public class A {
inline public fun test(s: () -> Unit) {
s()
}
}
@@ -0,0 +1,3 @@
public interface JavaInterface {
void foo(int javaName);
}
@@ -1,3 +0,0 @@
interface JavaInterface {
void foo(int javaName);
}
@@ -1,2 +1 @@
OK
OK
@@ -66,7 +66,7 @@ class CompileKotlinAgainstCustomBinariesTest : TestCaseWithTmpdir() {
additionalOptions: List<String> = emptyList(),
vararg extraClassPath: File
): File {
val output = compileKotlin(sourcePath, destination, extraClassPath.toList(), compiler, additionalOptions)
val output = compileKotlin(sourcePath, destination, extraClassPath.toList(), compiler, additionalOptions, expectedFileName = null)
assertEquals(normalizeOutput("" to ExitCode.OK), normalizeOutput(output))
return destination
}
@@ -116,7 +116,8 @@ class CompileKotlinAgainstCustomBinariesTest : TestCaseWithTmpdir() {
output: File,
classpath: List<File> = emptyList(),
compiler: CLICompiler<*> = K2JVMCompiler(),
additionalOptions: List<String> = emptyList()
additionalOptions: List<String> = emptyList(),
expectedFileName: String? = "output.txt"
): Pair<String, ExitCode> {
val args = mutableListOf<String>()
val sourceFile = File(testDataDirectory, fileName)
@@ -146,23 +147,24 @@ class CompileKotlinAgainstCustomBinariesTest : TestCaseWithTmpdir() {
args.addAll(additionalOptions)
return AbstractCliTest.executeCompilerGrabOutput(compiler, args)
val result = AbstractCliTest.executeCompilerGrabOutput(compiler, args)
if (expectedFileName != null) {
KotlinTestUtils.assertEqualsToFile(File(testDataDirectory, expectedFileName), normalizeOutput(result))
}
return result
}
private fun doTestBrokenJavaLibrary(libraryName: String, vararg pathsToDelete: String) {
// This function compiles a Java library, then deletes one class file and attempts to compile a Kotlin source against
// this broken library. The expected result is an error message from the compiler
val library = deletePaths(compileJava(libraryName), *pathsToDelete)
val output = compileKotlin("source.kt", tmpdir, listOf(library))
KotlinTestUtils.assertEqualsToFile(File(testDataDirectory, "output.txt"), normalizeOutput(output))
compileKotlin("source.kt", tmpdir, listOf(library))
}
private fun doTestBrokenKotlinLibrary(libraryName: String, vararg pathsToDelete: String) {
// Analogous to doTestBrokenJavaLibrary, but with a Kotlin library compiled to a JAR file
val library = copyJarFileWithoutEntry(compileLibrary(libraryName), *pathsToDelete)
val output = compileKotlin("source.kt", tmpdir, listOf(library))
KotlinTestUtils.assertEqualsToFile(File(testDataDirectory, "output.txt"), normalizeOutput(output))
compileKotlin("source.kt", tmpdir, listOf(library))
}
private fun doTestKotlinLibraryWithWrongMetadataVersion(
@@ -180,8 +182,7 @@ class CompileKotlinAgainstCustomBinariesTest : TestCaseWithTmpdir() {
}
}
)
val output = compileKotlin("source.kt", tmpdir, listOf(library), K2JVMCompiler(), additionalOptions.toList())
KotlinTestUtils.assertEqualsToFile(File(testDataDirectory, "output.txt"), normalizeOutput(output))
compileKotlin("source.kt", tmpdir, listOf(library), K2JVMCompiler(), additionalOptions.toList())
}
private fun doTestKotlinLibraryWithWrongMetadataVersionJs(libraryName: String, vararg additionalOptions: String) {
@@ -193,8 +194,7 @@ class CompileKotlinAgainstCustomBinariesTest : TestCaseWithTmpdir() {
"(" + JsMetadataVersion(42, 0, 0).toInteger() + ", "
), Charsets.UTF_8)
val output = compileKotlin("source.kt", File(tmpdir, "usage.js"), listOf(library), K2JSCompiler(), additionalOptions.toList())
KotlinTestUtils.assertEqualsToFile(File(testDataDirectory, "output.txt"), normalizeOutput(output))
compileKotlin("source.kt", File(tmpdir, "usage.js"), listOf(library), K2JSCompiler(), additionalOptions.toList())
}
private fun doTestPreReleaseKotlinLibrary(
@@ -215,33 +215,21 @@ class CompileKotlinAgainstCustomBinariesTest : TestCaseWithTmpdir() {
System.clearProperty(TEST_IS_PRE_RELEASE_SYSTEM_PROPERTY)
}
val output: Pair<String, ExitCode>
try {
System.setProperty(TEST_IS_PRE_RELEASE_SYSTEM_PROPERTY, "false")
output = compileKotlin("source.kt", usageDestination, listOf(result), compiler, additionalOptions.toList())
compileKotlin("source.kt", usageDestination, listOf(result), compiler, additionalOptions.toList())
}
finally {
System.clearProperty(TEST_IS_PRE_RELEASE_SYSTEM_PROPERTY)
}
KotlinTestUtils.assertEqualsToFile(File(testDataDirectory, "output.txt"), normalizeOutput(output))
}
// ------------------------------------------------------------------------------
fun testRawTypes() {
KotlinTestUtils.compileJavaFiles(
listOf(File(testDataDirectory.toString() + "/library/test/A.java")),
listOf("-d", tmpdir.path)
)
val outputLib = compileKotlin("library/test/lib.kt", tmpdir, listOf(tmpdir))
val outputMain = compileKotlin("main.kt", tmpdir, listOf(tmpdir))
KotlinTestUtils.assertEqualsToFile(
File(testDataDirectory, "output.txt"), normalizeOutput(outputLib) + "\n" + normalizeOutput(outputMain)
)
val libraryOutput = compileJava("library")
compileKotlin("library", libraryOutput, listOf(libraryOutput))
compileKotlin("main.kt", tmpdir, listOf(libraryOutput))
}
fun testDuplicateObjectInBinaryAndSources() {
@@ -271,12 +259,8 @@ class CompileKotlinAgainstCustomBinariesTest : TestCaseWithTmpdir() {
// This test checks that there are no PARAMETER_NAME_CHANGED_ON_OVERRIDE or DIFFERENT_NAMES_FOR_THE_SAME_PARAMETER_IN_SUPERTYPES
// warnings when subclassing in Kotlin from Java binaries (in case when no parameter names are available for Java classes)
KotlinTestUtils.compileJavaFiles(
listOf(getTestDataFileWithExtension("java")),
listOf("-d", tmpdir.path)
)
val environment = createEnvironment(listOf(tmpdir))
val libraryOutput = compileJava("library")
val environment = createEnvironment(listOf(libraryOutput))
val ktFile = KotlinTestUtils.loadJetFile(environment.project, getTestDataFileWithExtension("kt"))
val result = JvmResolveUtil.analyze(ktFile, environment)
@@ -315,8 +299,7 @@ class CompileKotlinAgainstCustomBinariesTest : TestCaseWithTmpdir() {
"a/A.class", "a/A\$Inner.class", "a/AA.class", "a/AA\$Inner.class")
val library2 = copyJarFileWithoutEntry(compileLibrary("library2"),
"a/A.class", "a/A\$Inner.class", "a/AA.class", "a/AA\$Inner.class")
val output = compileKotlin("source.kt", tmpdir, listOf(library1, library2))
KotlinTestUtils.assertEqualsToFile(File(testDataDirectory, "output.txt"), normalizeOutput(output))
compileKotlin("source.kt", tmpdir, listOf(library1, library2))
}
fun testMissingDependencyJava() {
@@ -326,8 +309,7 @@ class CompileKotlinAgainstCustomBinariesTest : TestCaseWithTmpdir() {
fun testMissingDependencyJavaConflictingLibraries() {
val library1 = deletePaths(compileJava("library1"), "test/A.class", "test/A\$Inner.class")
val library2 = deletePaths(compileJava("library2"), "test/A.class", "test/A\$Inner.class")
val output = compileKotlin("source.kt", tmpdir, listOf(library1, library2))
KotlinTestUtils.assertEqualsToFile(File(testDataDirectory, "output.txt"), normalizeOutput(output))
compileKotlin("source.kt", tmpdir, listOf(library1, library2))
}
fun testMissingDependencyJavaNestedAnnotation() {
@@ -457,36 +439,20 @@ class CompileKotlinAgainstCustomBinariesTest : TestCaseWithTmpdir() {
fun testProhibitNestedClassesByDollarName() {
val library = compileLibrary("library")
KotlinTestUtils.compileJavaFiles(
listOf(File(testDataDirectory.toString() + "/library/test/JavaOuter.java")),
listOf("-d", tmpdir.path)
)
val outputMain = compileKotlin("main.kt", tmpdir, listOf(tmpdir, library))
KotlinTestUtils.assertEqualsToFile(
File(testDataDirectory, "output.txt"), normalizeOutput(outputMain)
)
val javaLibraryOutput = compileJava("library")
compileKotlin("main.kt", tmpdir, listOf(javaLibraryOutput, library))
}
fun testTypeAliasesAreInvisibleInCompatibilityMode() {
compileKotlin("typeAliases.kt", tmpdir)
val outputMain = compileKotlin("main.kt", tmpdir, listOf(tmpdir), K2JVMCompiler(), listOf("-language-version", "1.0"))
KotlinTestUtils.assertEqualsToFile(
File(testDataDirectory, "output.txt"), normalizeOutput(outputMain)
)
val library = compileLibrary("typeAliases.kt")
compileKotlin("main.kt", tmpdir, listOf(library), K2JVMCompiler(), listOf("-language-version", "1.0"))
}
fun testInnerClassPackageConflict() {
compileJava("library")
File(testDataDirectory, "library/test/Foo/x.txt").copyTo(File(tmpdir, "library/test/Foo/x.txt"))
MockLibraryUtil.createJarFile(tmpdir, File(tmpdir, "library"), null, "library", false)
val jarPath = File(tmpdir, "library.jar")
val output = compileKotlin("source.kt", tmpdir, listOf(jarPath))
KotlinTestUtils.assertEqualsToFile(File(testDataDirectory, "output.txt"), normalizeOutput(output))
val output = compileJava("library")
File(testDataDirectory, "library/test/Foo/x.txt").copyTo(File(output, "test/Foo/x.txt"))
MockLibraryUtil.createJarFile(tmpdir, output, null, "library", false)
compileKotlin("source.kt", tmpdir, listOf(File(tmpdir, "library.jar")))
}
fun testInnerClassPackageConflict2() {
@@ -505,18 +471,12 @@ class CompileKotlinAgainstCustomBinariesTest : TestCaseWithTmpdir() {
true
}
val output = compileKotlin("source.kt", tmpdir, listOf(library1))
KotlinTestUtils.assertEqualsToFile(File(testDataDirectory, "output.txt"), normalizeOutput(output))
compileKotlin("source.kt", tmpdir, listOf(library1))
}
fun testWrongInlineTarget() {
val library = compileLibrary("library", additionalOptions = listOf("-jvm-target", "1.8"))
val outputMain = compileKotlin("source.kt", tmpdir, listOf(library))
KotlinTestUtils.assertEqualsToFile(
File(testDataDirectory, "output.txt"), normalizeOutput(outputMain)
)
compileKotlin("source.kt", tmpdir, listOf(library))
}
companion object {