Only run kotlin metadata tests for supported versions
Bug: 203169995
Change-Id: I63463055a65796828aa702c8fecc7f9ad74745bc
diff --git a/src/test/java/com/android/tools/r8/KotlinCompilerTool.java b/src/test/java/com/android/tools/r8/KotlinCompilerTool.java
index 33c5355..3cd4941 100644
--- a/src/test/java/com/android/tools/r8/KotlinCompilerTool.java
+++ b/src/test/java/com/android/tools/r8/KotlinCompilerTool.java
@@ -80,6 +80,15 @@
public KotlinCompiler getCompiler() {
return new KotlinCompiler(this);
}
+
+ public static List<KotlinCompilerVersion> getSupported() {
+ return Arrays.stream(KotlinCompilerVersion.values())
+ .filter(
+ compiler ->
+ compiler.isGreaterThanOrEqualTo(MIN_SUPPORTED_VERSION)
+ && compiler.isLessThanOrEqualTo(MAX_SUPPORTED_VERSION))
+ .collect(Collectors.toList());
+ }
}
public static final class KotlinCompiler {
diff --git a/src/test/java/com/android/tools/r8/KotlinTestParameters.java b/src/test/java/com/android/tools/r8/KotlinTestParameters.java
index 7996dc4..2ac3f87 100644
--- a/src/test/java/com/android/tools/r8/KotlinTestParameters.java
+++ b/src/test/java/com/android/tools/r8/KotlinTestParameters.java
@@ -3,6 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
+import static org.junit.Assume.assumeTrue;
+
import com.android.tools.r8.KotlinCompilerTool.KotlinCompiler;
import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
import com.android.tools.r8.KotlinCompilerTool.KotlinTargetVersion;
@@ -69,6 +71,8 @@
private Predicate<KotlinTargetVersion> targetVersionFilter = t -> false;
private boolean withDevCompiler =
System.getProperty("com.android.tools.r8.kotlincompilerdev") != null;
+ private boolean withOldCompilers =
+ System.getProperty("com.android.tools.r8.kotlincompilerold") != null;
private Builder() {}
@@ -101,6 +105,11 @@
return this;
}
+ public Builder withOldCompilersIfSet() {
+ assumeTrue(withOldCompilers);
+ return this;
+ }
+
public Builder withAllTargetVersions() {
withTargetVersionFilter(t -> t != KotlinTargetVersion.NONE);
return this;
@@ -126,10 +135,16 @@
List<KotlinCompilerVersion> compilerVersions;
if (withDevCompiler) {
compilerVersions = ImmutableList.of(KotlinCompilerVersion.KOTLIN_DEV);
- } else {
+ } else if (withOldCompilers) {
compilerVersions =
Arrays.stream(KotlinCompilerVersion.values())
- .filter(c -> c != KotlinCompilerVersion.KOTLIN_DEV && compilerFilter.test(c))
+ .filter(c -> c.isLessThan(KotlinCompilerVersion.MIN_SUPPORTED_VERSION))
+ .collect(Collectors.toList());
+
+ } else {
+ compilerVersions =
+ KotlinCompilerVersion.getSupported().stream()
+ .filter(c -> compilerFilter.test(c))
.collect(Collectors.toList());
}
for (KotlinCompilerVersion kotlinVersion : compilerVersions) {
diff --git a/src/test/java/com/android/tools/r8/kotlin/KotlinDuplicateAnnotationTest.java b/src/test/java/com/android/tools/r8/kotlin/KotlinDuplicateAnnotationTest.java
index 6169da8..5f6030f 100644
--- a/src/test/java/com/android/tools/r8/kotlin/KotlinDuplicateAnnotationTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/KotlinDuplicateAnnotationTest.java
@@ -9,7 +9,6 @@
import static org.junit.Assume.assumeTrue;
import com.android.tools.r8.CompilationFailedException;
-import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
import com.android.tools.r8.KotlinTestParameters;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.utils.BooleanUtils;
@@ -43,10 +42,7 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withAllRuntimesAndApiLevels().build(),
- getKotlinTestParameters()
- .withCompiler(KotlinCompilerVersion.KOTLINC_1_3_72)
- .withAllTargetVersions()
- .build(),
+ getKotlinTestParameters().withOldCompilersIfSet().withAllTargetVersions().build(),
BooleanUtils.values());
}
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataFirstToLatestTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataFirstToLatestTest.java
index de3e23d..f9381cb 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataFirstToLatestTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataFirstToLatestTest.java
@@ -44,10 +44,7 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters()
- .withCompiler(KotlinCompilerVersion.KOTLINC_1_3_72)
- .withAllTargetVersions()
- .build());
+ getKotlinTestParameters().withOldCompilersIfSet().withAllTargetVersions().build());
}
public MetadataFirstToLatestTest(
@@ -59,7 +56,7 @@
@Test
public void smokeTest() throws Exception {
runTest(
- KotlinCompilerVersion.KOTLINC_1_5_0,
+ KotlinCompilerVersion.MAX_SUPPORTED_VERSION,
libJars.getForConfiguration(kotlinc, targetVersion),
kotlinc.getKotlinStdlibJar());
}
@@ -93,7 +90,7 @@
assertThrows(
AssertionError.class,
() -> {
- runTest(KotlinCompilerVersion.KOTLINC_1_3_72, libJar, stdLibJar);
+ runTest(kotlinParameters.getCompiler().getCompilerVersion(), libJar, stdLibJar);
});
assertThat(
assertionError.getMessage(),
@@ -120,7 +117,7 @@
.assertAllWarningMessagesMatch(
equalTo("Resource 'META-INF/MANIFEST.MF' already exists."))
.writeToZip();
- runTest(KotlinCompilerVersion.KOTLINC_1_5_0, libJar, stdLibJar);
+ runTest(KotlinCompilerVersion.MAX_SUPPORTED_VERSION, libJar, stdLibJar);
}
private void runTest(KotlinCompilerVersion kotlinCompilerVersion, Path libJar, Path stdLibJar)
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataVersionNumberBumpTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataVersionNumberBumpTest.java
index 84139d9..1cd5dea 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataVersionNumberBumpTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataVersionNumberBumpTest.java
@@ -8,7 +8,6 @@
import static org.junit.Assert.fail;
import static org.objectweb.asm.Opcodes.ASM7;
-import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
import com.android.tools.r8.KotlinCompilerTool.KotlinTargetVersion;
import com.android.tools.r8.KotlinTestParameters;
import com.android.tools.r8.R8FullTestBuilder;
@@ -43,7 +42,7 @@
return buildParameters(
getTestParameters().withAllRuntimesAndApiLevels().build(),
getKotlinTestParameters()
- .withCompiler(KotlinCompilerVersion.KOTLINC_1_3_72)
+ .withOldCompilersIfSet()
.withTargetVersion(KotlinTargetVersion.JAVA_8)
.build());
}
diff --git a/tools/test.py b/tools/test.py
index 7235b6e..f5ce159 100755
--- a/tools/test.py
+++ b/tools/test.py
@@ -196,6 +196,9 @@
help='Specify to download a kotlin dev compiler and run '
'tests with that',
default=False, action='store_true')
+ result.add_option('--kotlin-compiler-old',
+ help='Specify to run tests on older kotlin compilers',
+ default=False, action='store_true')
return result.parse_args()
def archive_failures(options):
@@ -283,6 +286,8 @@
gradle_args.append('-Pprint_full_stacktraces')
if options.print_obfuscated_stacktraces:
gradle_args.append('-Pprint_obfuscated_stacktraces')
+ if options.kotlin_compiler_old:
+ gradle_args.append('-Dcom.android.tools.r8.kotlincompilerold=1')
if options.kotlin_compiler_dev:
gradle_args.append('-Dcom.android.tools.r8.kotlincompilerdev=1')
download_kotlin_dev.download_newest()