Convert desugared library tests
Bug: b:231287675
Change-Id: I287559144a0a3d87f467ac1f6a00e9948c447e5d
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/BufferedReaderTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/BufferedReaderTest.java
index dbeeb15..9e25257 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/BufferedReaderTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/BufferedReaderTest.java
@@ -4,6 +4,8 @@
package com.android.tools.r8.desugar.desugaredlibrary;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification.SPECIFICATIONS_WITH_CF2CF;
+
import com.android.tools.r8.NeverInline;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification;
@@ -36,7 +38,7 @@
.withApiLevel(AndroidApiLevel.N)
.build(),
ImmutableList.of(LibraryDesugaringSpecification.JDK11),
- CompilationSpecification.SPECIFICATIONS_WITH_CF2CF);
+ SPECIFICATIONS_WITH_CF2CF);
}
public BufferedReaderTest(
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionFinalClassTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionFinalClassTest.java
index 7abed46..d7ddfb5 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionFinalClassTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionFinalClassTest.java
@@ -4,70 +4,62 @@
package com.android.tools.r8.desugar.desugaredlibrary.conversiontests;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification.D8_L8DEBUG;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification.D8_L8SHRINK;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.getJdk8Jdk11;
import static junit.framework.TestCase.assertTrue;
import static org.hamcrest.core.StringContains.containsString;
import com.android.tools.r8.TestDiagnosticMessages;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.desugar.desugaredlibrary.DesugaredLibraryTestBase;
+import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification;
+import com.android.tools.r8.desugar.desugaredlibrary.test.CustomLibrarySpecification;
+import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
import com.android.tools.r8.utils.AndroidApiLevel;
-import com.android.tools.r8.utils.BooleanUtils;
-import java.nio.file.Path;
+import com.google.common.collect.ImmutableList;
import java.time.Year;
import java.util.List;
-import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class APIConversionFinalClassTest extends DesugaredLibraryTestBase {
private final TestParameters parameters;
- private final boolean shrinkDesugaredLibrary;
+ private final LibraryDesugaringSpecification libraryDesugaringSpecification;
+ private final CompilationSpecification compilationSpecification;
private static final AndroidApiLevel MIN_SUPPORTED = AndroidApiLevel.O;
- private static Path customLib;
-
- @Parameterized.Parameters(name = "{0}, shrinkDesugaredLibrary: {1}")
+ @Parameters(name = "{0}, spec: {1}, {2}")
public static List<Object[]> data() {
return buildParameters(
- getConversionParametersUpToExcluding(MIN_SUPPORTED), BooleanUtils.values());
+ getConversionParametersUpToExcluding(MIN_SUPPORTED),
+ getJdk8Jdk11(),
+ ImmutableList.of(D8_L8DEBUG, D8_L8SHRINK));
}
- public APIConversionFinalClassTest(TestParameters parameters, boolean shrinkDesugaredLibrary) {
- this.shrinkDesugaredLibrary = shrinkDesugaredLibrary;
+ public APIConversionFinalClassTest(
+ TestParameters parameters,
+ LibraryDesugaringSpecification libraryDesugaringSpecification,
+ CompilationSpecification compilationSpecification) {
this.parameters = parameters;
- }
-
- @BeforeClass
- public static void compileCustomLib() throws Exception {
- customLib =
- testForD8(getStaticTemp())
- .addProgramClasses(CustomLibClass.class)
- .setMinApi(MIN_SUPPORTED)
- .compile()
- .writeToZip();
+ this.libraryDesugaringSpecification = libraryDesugaringSpecification;
+ this.compilationSpecification = compilationSpecification;
}
@Test
- public void testFinalMethod() throws Exception {
- KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
- testForD8()
- .setMinApi(AndroidApiLevel.B)
+ public void test() throws Exception {
+ testForDesugaredLibrary(parameters, libraryDesugaringSpecification, compilationSpecification)
.addProgramClasses(Executor.class)
- .addLibraryClasses(CustomLibClass.class)
- .addLibraryFiles(getLibraryFile())
- .enableCoreLibraryDesugaring(parameters.getApiLevel(), keepRuleConsumer)
+ .setCustomLibrarySpecification(
+ new CustomLibrarySpecification(CustomLibClass.class, MIN_SUPPORTED))
+ .addKeepMainRule(Executor.class)
.compile()
- .addDesugaredCoreLibraryRunClassPath(
- this::buildDesugaredLibrary,
- parameters.getApiLevel(),
- keepRuleConsumer.get(),
- shrinkDesugaredLibrary)
.inspectDiagnosticMessages(this::assertDiagnosis)
- .addRunClasspathFiles(customLib)
.run(parameters.getRuntime(), Executor.class)
.assertFailureWithErrorThatMatches(containsString("NoSuchMethodError"));
}
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/AccessModeConversionTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/AccessModeConversionTest.java
index e34de1d..80aeee3 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/AccessModeConversionTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/AccessModeConversionTest.java
@@ -4,22 +4,19 @@
package com.android.tools.r8.desugar.desugaredlibrary.conversiontests;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification.DEFAULT_SPECIFICATIONS;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.JDK11_PATH;
+
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.desugar.desugaredlibrary.DesugaredLibraryTestBase;
-import com.android.tools.r8.ir.desugar.desugaredlibrary.legacyspecification.LegacyDesugaredLibrarySpecification;
-import com.android.tools.r8.ir.desugar.desugaredlibrary.legacyspecification.LegacyRewritingFlags;
-import com.android.tools.r8.ir.desugar.desugaredlibrary.legacyspecification.LegacyTopLevelFlags;
-import com.android.tools.r8.origin.Origin;
+import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification;
+import com.android.tools.r8.desugar.desugaredlibrary.test.CustomLibrarySpecification;
+import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
import com.android.tools.r8.utils.AndroidApiLevel;
-import com.android.tools.r8.utils.BooleanUtils;
-import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.StringUtils;
import com.google.common.collect.ImmutableList;
import java.nio.file.AccessMode;
-import java.nio.file.Path;
import java.util.List;
-import org.junit.Assume;
-import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -29,100 +26,38 @@
public class AccessModeConversionTest extends DesugaredLibraryTestBase {
private final TestParameters parameters;
- private final boolean shrinkDesugaredLibrary;
+ private final LibraryDesugaringSpecification libraryDesugaringSpecification;
+ private final CompilationSpecification compilationSpecification;
private static final AndroidApiLevel MIN_SUPPORTED = AndroidApiLevel.O;
private static final String EXPECTED_RESULT =
StringUtils.lines("READ", "WRITE", "READ", "WRITE", "EXECUTE");
- private static Path CUSTOM_LIB;
-
- @Parameters(name = "{0}, shrinkDesugaredLibrary: {1}")
+ @Parameters(name = "{0}, spec: {1}, {2}")
public static List<Object[]> data() {
return buildParameters(
- getConversionParametersUpToExcluding(MIN_SUPPORTED), BooleanUtils.values());
+ getConversionParametersUpToExcluding(MIN_SUPPORTED),
+ // There are enums to convert only in the Path library.
+ ImmutableList.of(JDK11_PATH),
+ DEFAULT_SPECIFICATIONS);
}
- public AccessModeConversionTest(TestParameters parameters, boolean shrinkDesugaredLibrary) {
- this.shrinkDesugaredLibrary = shrinkDesugaredLibrary;
+ public AccessModeConversionTest(
+ TestParameters parameters,
+ LibraryDesugaringSpecification libraryDesugaringSpecification,
+ CompilationSpecification compilationSpecification) {
this.parameters = parameters;
- }
-
- @BeforeClass
- public static void compileCustomLib() throws Exception {
- CUSTOM_LIB =
- testForD8(getStaticTemp())
- .addProgramClasses(CustomLibClass.class)
- .setMinApi(MIN_SUPPORTED)
- .compile()
- .writeToZip();
- }
-
- private void configureDesugaredLibrary(InternalOptions options, boolean l8Compilation) {
- LegacyRewritingFlags rewritingFlags =
- LegacyRewritingFlags.builder(options.itemFactory, options.reporter, Origin.unknown())
- .putRewritePrefix("java.nio.file.AccessMode", "j$.nio.file.AccessMode")
- .addWrapperConversion("java.nio.file.AccessMode")
- .build();
- LegacyDesugaredLibrarySpecification specification =
- new LegacyDesugaredLibrarySpecification(
- LegacyTopLevelFlags.testing(), rewritingFlags, l8Compilation);
- setDesugaredLibrarySpecificationForTesting(options, specification);
+ this.libraryDesugaringSpecification = libraryDesugaringSpecification;
+ this.compilationSpecification = compilationSpecification;
}
@Test
- public void testD8() throws Exception {
- Assume.assumeTrue(isJDK11DesugaredLibrary());
- KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
- testForD8()
- .addLibraryFiles(getLibraryFile())
- .setMinApi(parameters.getApiLevel())
+ public void test() throws Exception {
+ testForDesugaredLibrary(parameters, libraryDesugaringSpecification, compilationSpecification)
.addProgramClasses(Executor.class)
- .addLibraryClasses(CustomLibClass.class)
- .addOptionsModification(opt -> opt.desugaredLibraryKeepRuleConsumer = keepRuleConsumer)
- .addOptionsModification(opt -> this.configureDesugaredLibrary(opt, false))
- .compile()
- .addDesugaredCoreLibraryRunClassPath(
- (apiLevel, keepRules, shrink) ->
- this.buildDesugaredLibrary(
- apiLevel,
- keepRules,
- shrink,
- ImmutableList.of(),
- opt -> this.configureDesugaredLibrary(opt, true)),
- parameters.getApiLevel(),
- keepRuleConsumer.get(),
- shrinkDesugaredLibrary)
- .addRunClasspathFiles(CUSTOM_LIB)
- .run(parameters.getRuntime(), Executor.class)
- .assertSuccessWithOutput(EXPECTED_RESULT);
- }
-
- @Test
- public void testR8() throws Exception {
- Assume.assumeTrue(isJDK11DesugaredLibrary());
- KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
- testForR8(parameters.getBackend())
- .addLibraryFiles(getLibraryFile())
- .setMinApi(parameters.getApiLevel())
+ .setCustomLibrarySpecification(
+ new CustomLibrarySpecification(CustomLibClass.class, MIN_SUPPORTED))
.addKeepMainRule(Executor.class)
- .addProgramClasses(Executor.class)
- .addLibraryClasses(CustomLibClass.class)
- .addOptionsModification(opt -> opt.desugaredLibraryKeepRuleConsumer = keepRuleConsumer)
- .addOptionsModification(opt -> this.configureDesugaredLibrary(opt, false))
- .compile()
- .addDesugaredCoreLibraryRunClassPath(
- (apiLevel, keepRules, shrink) ->
- this.buildDesugaredLibrary(
- apiLevel,
- keepRules,
- shrink,
- ImmutableList.of(),
- opt -> this.configureDesugaredLibrary(opt, true)),
- parameters.getApiLevel(),
- keepRuleConsumer.get(),
- shrinkDesugaredLibrary)
- .addRunClasspathFiles(CUSTOM_LIB)
.run(parameters.getRuntime(), Executor.class)
.assertSuccessWithOutput(EXPECTED_RESULT);
}
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/AllOptionalConversionTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/AllOptionalConversionTest.java
index 87720a2..6ac59c5 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/AllOptionalConversionTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/AllOptionalConversionTest.java
@@ -4,18 +4,21 @@
package com.android.tools.r8.desugar.desugaredlibrary.conversiontests;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification.DEFAULT_SPECIFICATIONS;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.getJdk8Jdk11;
+
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.desugar.desugaredlibrary.DesugaredLibraryTestBase;
+import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification;
+import com.android.tools.r8.desugar.desugaredlibrary.test.CustomLibrarySpecification;
+import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
import com.android.tools.r8.utils.AndroidApiLevel;
-import com.android.tools.r8.utils.BooleanUtils;
import com.android.tools.r8.utils.StringUtils;
-import java.nio.file.Path;
import java.util.List;
import java.util.Optional;
import java.util.OptionalDouble;
import java.util.OptionalInt;
import java.util.OptionalLong;
-import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -25,7 +28,8 @@
public class AllOptionalConversionTest extends DesugaredLibraryTestBase {
private final TestParameters parameters;
- private final boolean shrinkDesugaredLibrary;
+ private final LibraryDesugaringSpecification libraryDesugaringSpecification;
+ private final CompilationSpecification compilationSpecification;
private static final AndroidApiLevel MIN_SUPPORTED = AndroidApiLevel.N;
private static final String EXPECTED_RESULT =
@@ -37,66 +41,30 @@
"Optional[value]",
"value");
- private static Path CUSTOM_LIB;
-
- @Parameters(name = "{0}, shrinkDesugaredLibrary: {1}")
+ @Parameters(name = "{0}, spec: {1}, {2}")
public static List<Object[]> data() {
return buildParameters(
- getConversionParametersUpToExcluding(MIN_SUPPORTED), BooleanUtils.values());
+ getConversionParametersUpToExcluding(MIN_SUPPORTED),
+ getJdk8Jdk11(),
+ DEFAULT_SPECIFICATIONS);
}
- public AllOptionalConversionTest(TestParameters parameters, boolean shrinkDesugaredLibrary) {
- this.shrinkDesugaredLibrary = shrinkDesugaredLibrary;
+ public AllOptionalConversionTest(
+ TestParameters parameters,
+ LibraryDesugaringSpecification libraryDesugaringSpecification,
+ CompilationSpecification compilationSpecification) {
this.parameters = parameters;
- }
-
- @BeforeClass
- public static void compileCustomLib() throws Exception {
- CUSTOM_LIB =
- testForD8(getStaticTemp())
- .addProgramClasses(CustomLibClass.class)
- .setMinApi(MIN_SUPPORTED)
- .compile()
- .writeToZip();
+ this.libraryDesugaringSpecification = libraryDesugaringSpecification;
+ this.compilationSpecification = compilationSpecification;
}
@Test
- public void testRewrittenAPICallsD8() throws Exception {
- KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
- testForD8()
- .addLibraryFiles(getLibraryFile())
- .setMinApi(parameters.getApiLevel())
+ public void test() throws Exception {
+ testForDesugaredLibrary(parameters, libraryDesugaringSpecification, compilationSpecification)
.addProgramClasses(Executor.class)
- .addLibraryClasses(CustomLibClass.class)
- .enableCoreLibraryDesugaring(parameters.getApiLevel(), keepRuleConsumer)
- .compile()
- .addDesugaredCoreLibraryRunClassPath(
- this::buildDesugaredLibrary,
- parameters.getApiLevel(),
- keepRuleConsumer.get(),
- shrinkDesugaredLibrary)
- .addRunClasspathFiles(CUSTOM_LIB)
- .run(parameters.getRuntime(), Executor.class)
- .assertSuccessWithOutput(EXPECTED_RESULT);
- }
-
- @Test
- public void testRewrittenAPICallsR8() throws Exception {
- KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
- testForR8(parameters.getBackend())
- .addLibraryFiles(getLibraryFile())
- .setMinApi(parameters.getApiLevel())
+ .setCustomLibrarySpecification(
+ new CustomLibrarySpecification(CustomLibClass.class, MIN_SUPPORTED))
.addKeepMainRule(Executor.class)
- .addProgramClasses(Executor.class)
- .addLibraryClasses(CustomLibClass.class)
- .enableCoreLibraryDesugaring(parameters.getApiLevel(), keepRuleConsumer)
- .compile()
- .addDesugaredCoreLibraryRunClassPath(
- this::buildDesugaredLibrary,
- parameters.getApiLevel(),
- keepRuleConsumer.get(),
- shrinkDesugaredLibrary)
- .addRunClasspathFiles(CUSTOM_LIB)
.run(parameters.getRuntime(), Executor.class)
.assertSuccessWithOutput(EXPECTED_RESULT);
}
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/AllTimeConversionTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/AllTimeConversionTest.java
index 585daa3..86d1ef1 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/AllTimeConversionTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/AllTimeConversionTest.java
@@ -4,6 +4,8 @@
package com.android.tools.r8.desugar.desugaredlibrary.conversiontests;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification.DEFAULT_SPECIFICATIONS;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.getJdk8Jdk11;
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.fail;
@@ -50,8 +52,8 @@
public static List<Object[]> data() {
return buildParameters(
getConversionParametersUpToExcluding(MIN_SUPPORTED),
- LibraryDesugaringSpecification.getJdk8Jdk11(),
- CompilationSpecification.DEFAULT_SPECIFICATIONS);
+ getJdk8Jdk11(),
+ DEFAULT_SPECIFICATIONS);
}
public AllTimeConversionTest(
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/CompilationSpecification.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/CompilationSpecification.java
index 02196e6..0efcc59 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/CompilationSpecification.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/CompilationSpecification.java
@@ -14,17 +14,17 @@
public enum CompilationSpecification {
D8_L8DEBUG(false, false, false, DEBUG),
D8_L8SHRINK(false, true, false, RELEASE),
- // In theory no build system uses R8L8DEBUG, for local debugging only.
+ // In theory no build system uses R8_L8DEBUG, for local debugging only.
R8_L8DEBUG(true, false, false, RELEASE),
R8_L8SHRINK(true, true, false, RELEASE),
// The D8CFTOCF specifications can run either in CF or be dexed afterwards.
D8CF2CF_L8DEBUG(false, false, true, DEBUG),
- // D8CFTOCFL8SHRINK is to be implemented (Only the dex back-end outputs the keep rule).
+ // D8CF2CF_L8SHRINK is to be implemented (Only the dex back-end outputs the keep rule).
D8CF2CF_L8SHRINK(false, true, true, RELEASE);
public static Set<CompilationSpecification> DEFAULT_SPECIFICATIONS =
ImmutableSet.of(D8_L8DEBUG, D8_L8SHRINK, R8_L8SHRINK);
- // Add D8CFTOCFL8SHRINK when tracereference is supported.
+ // Add D8CF2CF_L8SHRINK when tracereference is supported.
public static Set<CompilationSpecification> SPECIFICATIONS_WITH_CF2CF =
ImmutableSet.of(D8_L8DEBUG, D8_L8SHRINK, R8_L8SHRINK, D8CF2CF_L8DEBUG);
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/LibraryDesugaringSpecification.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/LibraryDesugaringSpecification.java
index 5d60b71..81415f7 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/LibraryDesugaringSpecification.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/LibraryDesugaringSpecification.java
@@ -69,17 +69,21 @@
private final Set<Path> desugarJdkLibs;
private final Path specification;
- public LibraryDesugaringSpecification(String name, Path desugarJdkLibs, Path specification) {
+ LibraryDesugaringSpecification(String name, Path desugarJdkLibs, Path specification) {
this(name, ImmutableSet.of(desugarJdkLibs, ToolHelper.DESUGAR_LIB_CONVERSIONS), specification);
}
+ public LibraryDesugaringSpecification(String name, Path specification) {
+ this(name, DESUGARED_JDK_11_LIB_JAR, specification);
+ }
+
public LibraryDesugaringSpecification(String name, Set<Path> desugarJdkLibs, Path specification) {
this.name = name;
this.desugarJdkLibs = desugarJdkLibs;
this.specification = specification;
}
- public LibraryDesugaringSpecification(String version) {
+ LibraryDesugaringSpecification(String version) {
this(
"Release_" + version,
ImmutableSet.of(