Convert desugared library test
Bug: b:231287675
Change-Id: Icec76d7972028d51f323436c03aff2eb9d444438
diff --git a/src/test/java/com/android/tools/r8/L8TestBuilder.java b/src/test/java/com/android/tools/r8/L8TestBuilder.java
index 3663677..7b84c77 100644
--- a/src/test/java/com/android/tools/r8/L8TestBuilder.java
+++ b/src/test/java/com/android/tools/r8/L8TestBuilder.java
@@ -44,6 +44,7 @@
StringResource.fromFile(ToolHelper.getDesugarLibJsonForTesting());
private List<Path> libraryFiles = new ArrayList<>();
private ProgramConsumer programConsumer;
+ private boolean finalPrefixVerification = true;
private L8TestBuilder(AndroidApiLevel apiLevel, Backend backend, TestState state) {
this.apiLevel = apiLevel;
@@ -55,6 +56,11 @@
return new L8TestBuilder(apiLevel, backend, state);
}
+ public L8TestBuilder ignoreFinalPrefixVerification() {
+ finalPrefixVerification = false;
+ return this;
+ }
+
public L8TestBuilder addProgramFiles(Collection<Path> programFiles) {
this.additionalProgramFiles.addAll(programFiles);
return this;
@@ -216,13 +222,16 @@
mapping,
state,
backend.isCf() ? OutputMode.ClassFile : OutputMode.DexIndexed)
- .inspect(
- inspector ->
- inspector.forAllClasses(
- clazz ->
- assertTrue(
- clazz.getFinalName().startsWith("j$.")
- || clazz.getFinalName().startsWith("java."))));
+ .applyIf(
+ finalPrefixVerification,
+ compileResult ->
+ compileResult.inspect(
+ inspector ->
+ inspector.forAllClasses(
+ clazz ->
+ assertTrue(
+ clazz.getFinalName().startsWith("j$.")
+ || clazz.getFinalName().startsWith("java.")))));
}
private Collection<Path> getProgramFiles() {
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ReleasedVersionsSmokeTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ReleasedVersionsSmokeTest.java
index 44625b1..a343168 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ReleasedVersionsSmokeTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ReleasedVersionsSmokeTest.java
@@ -4,12 +4,18 @@
package com.android.tools.r8.desugar.desugaredlibrary;
-import com.android.tools.r8.CompilationMode;
-import com.android.tools.r8.LibraryDesugaringTestConfiguration;
-import com.android.tools.r8.LibraryDesugaringTestConfiguration.Configuration;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification.DEFAULT_SPECIFICATIONS;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.JDK11;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.JDK11_LEGACY;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.JDK11_PATH;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.JDK8;
+
import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification;
+import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.StringUtils;
+import com.google.common.collect.ImmutableList;
import java.time.Clock;
import java.time.Duration;
import java.time.ZoneId;
@@ -22,73 +28,60 @@
@RunWith(Parameterized.class)
public class ReleasedVersionsSmokeTest extends DesugaredLibraryTestBase {
+ private static final String EXPECTED_OUTPUT =
+ StringUtils.lines(
+ "true",
+ "Caught java.time.format.DateTimeParseException",
+ "true",
+ "1970-01-02T10:17:36.789Z",
+ "GMT",
+ "GMT",
+ "1000",
+ "Hello, world");
+ private static final String EXPECTED_OUTPUT_1_0_9 =
+ StringUtils.lines(
+ "true",
+ "Caught java.time.format.DateTimeParseException",
+ "true",
+ "1970-01-02T10:17:36.789Z",
+ "1000",
+ "Hello, world");
+
private final TestParameters parameters;
- private final Configuration configuration;
- private static final String expectedOutput =
- StringUtils.lines(
- "true",
- "Caught java.time.format.DateTimeParseException",
- "true",
- "1970-01-02T10:17:36.789Z",
- "GMT",
- "GMT",
- "1000",
- "Hello, world");
- private static final String expectedOutput_1_0_9 =
- StringUtils.lines(
- "true",
- "Caught java.time.format.DateTimeParseException",
- "true",
- "1970-01-02T10:17:36.789Z",
- "1000",
- "Hello, world");
+ private final CompilationSpecification compilationSpecification;
+ private final LibraryDesugaringSpecification libraryDesugaringSpecification;
- @Parameters(name = "{0}, {1}")
+ @Parameters(name = "{0}, spec: {1}, {2}")
public static List<Object[]> data() {
+ ImmutableList.Builder<LibraryDesugaringSpecification> builder = ImmutableList.builder();
+ builder.addAll(LibraryDesugaringSpecification.getReleased());
+ builder.add(JDK8, JDK11, JDK11_LEGACY, JDK11_PATH);
return buildParameters(
- Configuration.getReleased(),
- getTestParameters().withDexRuntimes().withApiLevel(AndroidApiLevel.B).build());
+ getTestParameters().withDexRuntimes().withApiLevel(AndroidApiLevel.B).build(),
+ builder.build(),
+ DEFAULT_SPECIFICATIONS);
}
- public ReleasedVersionsSmokeTest(Configuration configuration, TestParameters parameters) {
- this.configuration = configuration;
+ public ReleasedVersionsSmokeTest(
+ TestParameters parameters,
+ LibraryDesugaringSpecification libraryDesugaringSpecification,
+ CompilationSpecification compilationSpecification) {
this.parameters = parameters;
+ this.compilationSpecification = compilationSpecification;
+ this.libraryDesugaringSpecification = libraryDesugaringSpecification;
}
@Test
- public void testD8() throws Exception {
- testForD8()
- .addLibraryFiles(getLibraryFile())
- .addInnerClasses(ReleasedVersionsSmokeTest.class)
- .setMinApi(parameters.getApiLevel())
- .enableCoreLibraryDesugaring(
- LibraryDesugaringTestConfiguration.builder()
- .setMinApi(parameters.getApiLevel())
- .setConfiguration(configuration)
- .withKeepRuleConsumer()
- .setMode(CompilationMode.DEBUG)
- .build())
- .run(parameters.getRuntime(), TestClass.class, configuration.name())
- .assertSuccessWithOutput(
- configuration != Configuration.RELEASED_1_0_9 ? expectedOutput : expectedOutput_1_0_9);
- }
-
- @Test
- public void testR8() throws Exception {
- testForR8(parameters.getBackend())
- .addLibraryFiles(getLibraryFile())
- .addInnerClasses(ReleasedVersionsSmokeTest.class)
+ public void testSmoke() throws Throwable {
+ testForDesugaredLibrary(parameters, libraryDesugaringSpecification, compilationSpecification)
+ .addInnerClasses(getClass())
.addKeepMainRule(TestClass.class)
- .setMinApi(parameters.getApiLevel())
- .enableCoreLibraryDesugaring(
- LibraryDesugaringTestConfiguration.builder()
- .setMinApi(parameters.getApiLevel())
- .withKeepRuleConsumer()
- .setMode(CompilationMode.RELEASE)
- .build())
- .run(parameters.getRuntime(), TestClass.class, configuration.name())
+ .ignoreL8FinalPrefixVerification()
+ .run(parameters.getRuntime(), TestClass.class, libraryDesugaringSpecification.toString())
.assertSuccessWithOutput(
- configuration != Configuration.RELEASED_1_0_9 ? expectedOutput : expectedOutput_1_0_9);
+ libraryDesugaringSpecification != LibraryDesugaringSpecification.RELEASED_1_0_9
+ ? EXPECTED_OUTPUT
+ : EXPECTED_OUTPUT_1_0_9);
}
static class TestClass {
@@ -106,7 +99,7 @@
java.util.Date.from(new java.util.Date(123456789).toInstant()).toInstant());
// Support for this was added in 1.0.10.
- if (!configurationVersion.equals("RELEASED_1_0_9")) {
+ if (!configurationVersion.equals("RELEASED_1.0.9")) {
java.util.TimeZone timeZone = java.util.TimeZone.getTimeZone(ZoneId.of("GMT"));
System.out.println(timeZone.getID());
System.out.println(timeZone.toZoneId().getId());
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/RequiredNonNullWithSupplierTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/RequiredNonNullWithSupplierTest.java
index 5780701..6a957ef 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/RequiredNonNullWithSupplierTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/RequiredNonNullWithSupplierTest.java
@@ -4,8 +4,12 @@
package com.android.tools.r8.desugar.desugaredlibrary;
+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.utils.BooleanUtils;
+import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification;
+import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
import com.android.tools.r8.utils.StringUtils;
import java.util.List;
import java.util.Objects;
@@ -13,6 +17,7 @@
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 RequiredNonNullWithSupplierTest extends DesugaredLibraryTestBase {
@@ -20,41 +25,31 @@
private static final String EXPECTED_OUTPUT = StringUtils.lines("SuppliedString2", "OK");
private final TestParameters parameters;
- private final boolean shrinkDesugaredLibrary;
+ private final CompilationSpecification compilationSpecification;
+ private final LibraryDesugaringSpecification libraryDesugaringSpecification;
- @Parameterized.Parameters(name = "{1}, shrinkDesugaredLibrary: {0}")
+ @Parameters(name = "{0}, spec: {1}, {2}")
public static List<Object[]> data() {
return buildParameters(
- BooleanUtils.values(), getTestParameters().withAllRuntimesAndApiLevels().build());
+ getTestParameters().withAllRuntimes().withAllApiLevelsAlsoForCf().build(),
+ getJdk8Jdk11(),
+ DEFAULT_SPECIFICATIONS);
}
public RequiredNonNullWithSupplierTest(
- boolean shrinkDesugaredLibrary, TestParameters parameters) {
- this.shrinkDesugaredLibrary = shrinkDesugaredLibrary;
+ TestParameters parameters,
+ LibraryDesugaringSpecification libraryDesugaringSpecification,
+ CompilationSpecification compilationSpecification) {
this.parameters = parameters;
+ this.compilationSpecification = compilationSpecification;
+ this.libraryDesugaringSpecification = libraryDesugaringSpecification;
}
@Test
- public void testRequiredNonNullWithSupplierTest() throws Exception {
- if (parameters.isCfRuntime()) {
- testForJvm()
- .addInnerClasses(RequiredNonNullWithSupplierTest.class)
- .run(parameters.getRuntime(), Executor.class)
- .assertSuccessWithOutput(EXPECTED_OUTPUT);
- return;
- }
- KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
- testForD8()
- .addLibraryFiles(getLibraryFile())
- .addInnerClasses(RequiredNonNullWithSupplierTest.class)
- .enableCoreLibraryDesugaring(parameters.getApiLevel(), keepRuleConsumer)
- .setMinApi(parameters.getApiLevel())
- .compile()
- .addDesugaredCoreLibraryRunClassPath(
- this::buildDesugaredLibrary,
- parameters.getApiLevel(),
- keepRuleConsumer.get(),
- shrinkDesugaredLibrary)
+ public void testRequireNonNull() throws Throwable {
+ testForDesugaredLibrary(parameters, libraryDesugaringSpecification, compilationSpecification)
+ .addInnerClasses(getClass())
+ .addKeepMainRule(Executor.class)
.run(parameters.getRuntime(), Executor.class)
.assertSuccessWithOutput(EXPECTED_OUTPUT);
}
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/RetargetAndBackportTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/RetargetAndBackportTest.java
index 50f2ce7..6d0d72f 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/RetargetAndBackportTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/RetargetAndBackportTest.java
@@ -7,6 +7,9 @@
import static org.junit.Assert.assertTrue;
import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestRuntime.CfVm;
+import com.android.tools.r8.ToolHelper;
+import com.android.tools.r8.ToolHelper.DexVm.Version;
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;
@@ -27,15 +30,16 @@
@RunWith(Parameterized.class)
public class RetargetAndBackportTest extends DesugaredLibraryTestBase implements Opcodes {
- Backend backend;
+ private final TestParameters parameters;
@Parameters(name = "{0} {1}")
public static List<Object[]> data() {
- return buildParameters(getTestParameters().withNoneRuntime().build(), Backend.values());
+ return buildParameters(
+ getTestParameters().withDexRuntime(Version.DEFAULT).withCfRuntime(CfVm.JDK11).build());
}
- public RetargetAndBackportTest(TestParameters parameters, Backend backend) {
- this.backend = backend;
+ public RetargetAndBackportTest(TestParameters parameters) {
+ this.parameters = parameters;
}
/**
@@ -60,10 +64,10 @@
@Test
public void test() throws Exception {
- testForL8(AndroidApiLevel.B, backend)
+ testForL8(AndroidApiLevel.B, parameters.getBackend())
.noDefaultDesugarJDKLibs()
.addProgramClassFileData(dump())
- .addLibraryFiles(getLibraryFile())
+ .addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.P.getLevel()))
.addOptionsModifier(RetargetAndBackportTest::specifyDesugaredLibrary)
.compile()
.inspect(
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/RetargetOverrideTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/RetargetOverrideTest.java
index 5d9cf31..10f3ada 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/RetargetOverrideTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/RetargetOverrideTest.java
@@ -4,9 +4,12 @@
package com.android.tools.r8.desugar.desugaredlibrary;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification.SPECIFICATIONS_WITH_CF2CF;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.getJdk8Jdk11;
+
import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.utils.BooleanUtils;
-import java.nio.file.Path;
+import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification;
+import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
import java.time.Instant;
import java.time.ZonedDateTime;
import java.util.Date;
@@ -14,7 +17,6 @@
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.IntUnaryOperator;
-import org.junit.Assume;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -24,119 +26,33 @@
public class RetargetOverrideTest extends DesugaredLibraryTestBase {
private final TestParameters parameters;
- private final boolean shrinkDesugaredLibrary;
+ private final CompilationSpecification compilationSpecification;
+ private final LibraryDesugaringSpecification libraryDesugaringSpecification;
- @Parameters(name = "{1}, shrink: {0}")
+ @Parameters(name = "{0}, spec: {1}, {2}")
public static List<Object[]> data() {
return buildParameters(
- BooleanUtils.values(),
- getTestParameters().withAllRuntimes().withAllApiLevelsAlsoForCf().build());
+ getTestParameters().withAllRuntimes().withAllApiLevelsAlsoForCf().build(),
+ getJdk8Jdk11(),
+ SPECIFICATIONS_WITH_CF2CF);
}
- public RetargetOverrideTest(boolean shrinkDesugaredLibrary, TestParameters parameters) {
- this.shrinkDesugaredLibrary = shrinkDesugaredLibrary;
+ public RetargetOverrideTest(
+ TestParameters parameters,
+ LibraryDesugaringSpecification libraryDesugaringSpecification,
+ CompilationSpecification compilationSpecification) {
this.parameters = parameters;
+ this.compilationSpecification = compilationSpecification;
+ this.libraryDesugaringSpecification = libraryDesugaringSpecification;
}
@Test
- public void testRetargetOverrideCf() throws Exception {
- KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
- Path desugaredTwice =
- testForD8(Backend.CF)
- .addLibraryFiles(getLibraryFile())
- .addProgramFiles(
- testForD8(Backend.CF)
- .addLibraryFiles(getLibraryFile())
- .addInnerClasses(RetargetOverrideTest.class)
- .enableCoreLibraryDesugaring(parameters.getApiLevel(), keepRuleConsumer)
- .setMinApi(parameters.getApiLevel())
- .compile()
- .writeToZip())
- .enableCoreLibraryDesugaring(parameters.getApiLevel(), keepRuleConsumer)
- .setMinApi(parameters.getApiLevel())
- .addOptionsModification(
- options -> options.desugarSpecificOptions().allowAllDesugaredInput = true)
- .compile()
- .writeToZip();
-
- String stdout;
- if (parameters.getRuntime().isDex()) {
- // Convert to DEX without desugaring and run.
- stdout =
- testForD8(Backend.DEX)
- .addProgramFiles(desugaredTwice)
- .setMinApi(parameters.getApiLevel())
- .disableDesugaring()
- .compile()
- .addDesugaredCoreLibraryRunClassPath(
- this::buildDesugaredLibrary,
- parameters.getApiLevel(),
- keepRuleConsumer.get(),
- shrinkDesugaredLibrary)
- .run(
- parameters.getRuntime(),
- Executor.class,
- Boolean.toString(parameters.getRuntime().isCf()))
- .assertSuccess()
- .getStdOut();
- } else {
- // Run on the JVM with desugared library on classpath.
- stdout =
- testForJvm()
- .addProgramFiles(desugaredTwice)
- .addRunClasspathFiles(buildDesugaredLibraryClassFile(parameters.getApiLevel()))
- .run(
- parameters.getRuntime(),
- Executor.class,
- Boolean.toString(parameters.getRuntime().isCf()))
- .assertSuccess()
- .getStdOut();
- }
- assertLines2By2Correct(stdout);
- }
-
- @Test
- public void testRetargetOverrideD8() throws Exception {
- Assume.assumeTrue(parameters.getRuntime().isDex());
- KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
+ public void testRetargetOverride() throws Throwable {
String stdout =
- testForD8()
- .addLibraryFiles(getLibraryFile())
- .addInnerClasses(RetargetOverrideTest.class)
- .enableCoreLibraryDesugaring(parameters.getApiLevel(), keepRuleConsumer)
- .setMinApi(parameters.getApiLevel())
- .compile()
- .addDesugaredCoreLibraryRunClassPath(
- this::buildDesugaredLibrary,
- parameters.getApiLevel(),
- keepRuleConsumer.get(),
- shrinkDesugaredLibrary)
- .run(
- parameters.getRuntime(),
- Executor.class,
- Boolean.toString(parameters.getRuntime().isCf()))
- .assertSuccess()
- .getStdOut();
- assertLines2By2Correct(stdout);
- }
-
- @Test
- public void testRetargetOverrideR8() throws Exception {
- Assume.assumeTrue(parameters.getRuntime().isDex());
- KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
- String stdout =
- testForR8(Backend.DEX)
- .addLibraryFiles(getLibraryFile())
+ testForDesugaredLibrary(
+ parameters, libraryDesugaringSpecification, compilationSpecification)
+ .addInnerClasses(getClass())
.addKeepMainRule(Executor.class)
- .addInnerClasses(RetargetOverrideTest.class)
- .enableCoreLibraryDesugaring(parameters.getApiLevel(), keepRuleConsumer)
- .setMinApi(parameters.getApiLevel())
- .compile()
- .addDesugaredCoreLibraryRunClassPath(
- this::buildDesugaredLibrary,
- parameters.getApiLevel(),
- keepRuleConsumer.get(),
- shrinkDesugaredLibrary)
.run(
parameters.getRuntime(),
Executor.class,
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java
index 7f0f151..c202629 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java
@@ -7,6 +7,7 @@
import com.android.tools.r8.CompilationFailedException;
import com.android.tools.r8.D8TestCompileResult;
import com.android.tools.r8.FeatureSplit;
+import com.android.tools.r8.L8TestBuilder;
import com.android.tools.r8.L8TestCompileResult;
import com.android.tools.r8.LibraryDesugaringTestConfiguration;
import com.android.tools.r8.R8TestBuilder;
@@ -21,7 +22,6 @@
import com.android.tools.r8.TestShrinkerBuilder;
import com.android.tools.r8.desugar.desugaredlibrary.DesugaredLibraryTestBase;
import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibrarySpecificationParser;
-import com.android.tools.r8.utils.ConsumerUtils;
import com.android.tools.r8.utils.InternalOptions;
import java.io.IOException;
import java.nio.file.Path;
@@ -37,9 +37,9 @@
private final LibraryDesugaringSpecification libraryDesugaringSpecification;
private final CompilationSpecification compilationSpecification;
private final TestCompilerBuilder<?, ?, ?, ? extends SingleTestRunResult<?>, ?> builder;
+ private final L8TestBuilder l8Builder;
private CustomLibrarySpecification customLibrarySpecification = null;
- private Consumer<InternalOptions> l8OptionModifier = ConsumerUtils.emptyConsumer();
private TestingKeepRuleConsumer keepRuleConsumer = null;
public DesugaredLibraryTestBuilder(
@@ -52,6 +52,7 @@
this.libraryDesugaringSpecification = libraryDesugaringSpecification;
this.compilationSpecification = runSpecification;
this.builder = generateBuilder();
+ this.l8Builder = generateL8Builder();
setUp();
}
@@ -85,6 +86,10 @@
return test.testForD8(Backend.DEX);
}
+ private L8TestBuilder generateL8Builder() {
+ return test.testForL8(parameters.getApiLevel(), parameters.getBackend());
+ }
+
public DesugaredLibraryTestBuilder<T> setCustomLibrarySpecification(
CustomLibrarySpecification customLibrarySpecification) {
this.customLibrarySpecification = customLibrarySpecification;
@@ -94,7 +99,7 @@
public DesugaredLibraryTestBuilder<T> addL8OptionsModification(
Consumer<InternalOptions> optionModifier) {
- l8OptionModifier = l8OptionModifier.andThen(optionModifier);
+ l8Builder.addOptionsModifier(optionModifier);
return this;
}
@@ -136,6 +141,11 @@
return this;
}
+ public DesugaredLibraryTestBuilder<T> ignoreL8FinalPrefixVerification() {
+ l8Builder.ignoreFinalPrefixVerification();
+ return this;
+ }
+
public DesugaredLibraryTestBuilder<T> addProgramClassFileData(
Collection<byte[]> programClassFileData) {
builder.addProgramClassFileData(programClassFileData);
@@ -229,7 +239,7 @@
}
public DesugaredLibraryTestBuilder<T> disableL8AnnotationRemoval() {
- l8OptionModifier = l8OptionModifier.andThen(opt -> opt.disableL8AnnotationRemoval = true);
+ l8Builder.setDisableL8AnnotationRemoval(true);
return this;
}
@@ -271,12 +281,11 @@
}
private L8TestCompileResult compileDesugaredLibrary(String keepRule) throws Exception {
- return test.testForL8(parameters.getApiLevel(), parameters.getBackend())
+ return l8Builder
.apply(
b ->
libraryDesugaringSpecification.configureL8TestBuilder(
b, compilationSpecification.isL8Shrink(), keepRule))
- .addOptionsModifier(l8OptionModifier)
.compile();
}
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 badd572..d4e8e32 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
@@ -1,7 +1,6 @@
// Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-
package com.android.tools.r8.desugar.desugaredlibrary.test;
import static com.android.tools.r8.ToolHelper.DESUGARED_JDK_8_LIB_JAR;
@@ -28,7 +27,7 @@
// Main head specifications.
public static LibraryDesugaringSpecification JDK8 =
new LibraryDesugaringSpecification(
- "JDK8", false, DESUGARED_JDK_8_LIB_JAR, "desugar_jdk_libs.json", AndroidApiLevel.P);
+ "JDK8", DESUGARED_JDK_8_LIB_JAR, "desugar_jdk_libs.json", AndroidApiLevel.P);
public static LibraryDesugaringSpecification JDK11 =
new LibraryDesugaringSpecification(
"JDK11", UNDESUGARED_JDK_11_LIB_JAR, "jdk11/desugar_jdk_libs.json", AndroidApiLevel.R);
@@ -65,43 +64,26 @@
Paths.get("third_party/openjdk/desugar_jdk_libs_11/desugar_jdk_libs.jar"),
"jdk11/desugar_jdk_libs_legacy.json",
AndroidApiLevel.R);
- private static final LibraryDesugaringSpecification RELEASED_1_0_9 =
- new LibraryDesugaringSpecification("1.0.9", true, AndroidApiLevel.P);
- private static final LibraryDesugaringSpecification RELEASED_1_0_10 =
- new LibraryDesugaringSpecification("1.0.10", true, AndroidApiLevel.P);
- private static final LibraryDesugaringSpecification RELEASED_1_1_0 =
- new LibraryDesugaringSpecification("1.1.0", true, AndroidApiLevel.P);
- private static final LibraryDesugaringSpecification RELEASED_1_1_1 =
- new LibraryDesugaringSpecification("1.1.1", true, AndroidApiLevel.P);
- private static final LibraryDesugaringSpecification RELEASED_1_1_5 =
- new LibraryDesugaringSpecification("1.1.5", true, AndroidApiLevel.P);
-
+ public static final LibraryDesugaringSpecification RELEASED_1_0_9 =
+ new LibraryDesugaringSpecification("1.0.9", AndroidApiLevel.P);
+ public static final LibraryDesugaringSpecification RELEASED_1_0_10 =
+ new LibraryDesugaringSpecification("1.0.10", AndroidApiLevel.P);
+ public static final LibraryDesugaringSpecification RELEASED_1_1_0 =
+ new LibraryDesugaringSpecification("1.1.0", AndroidApiLevel.P);
+ public static final LibraryDesugaringSpecification RELEASED_1_1_1 =
+ new LibraryDesugaringSpecification("1.1.1", AndroidApiLevel.P);
+ public static final LibraryDesugaringSpecification RELEASED_1_1_5 =
+ new LibraryDesugaringSpecification("1.1.5", AndroidApiLevel.P);
private final String name;
- private final boolean isJdk11Based;
private final Set<Path> desugarJdkLibs;
private final Path specification;
private final Set<Path> libraryFiles;
private final String extraKeepRules;
private LibraryDesugaringSpecification(
- String name,
- boolean isJdk11Based,
- Path desugarJdkLibs,
- String specificationPath,
- AndroidApiLevel androidJarLevel) {
- this(
- name,
- isJdk11Based,
- ImmutableSet.of(desugarJdkLibs, ToolHelper.DESUGAR_LIB_CONVERSIONS),
- Paths.get("src/library_desugar/" + specificationPath),
- ToolHelper.getAndroidJar(androidJarLevel));
- }
-
- private LibraryDesugaringSpecification(
String name, Path desugarJdkLibs, String specificationPath, AndroidApiLevel androidJarLevel) {
this(
name,
- true,
ImmutableSet.of(desugarJdkLibs, ToolHelper.DESUGAR_LIB_CONVERSIONS),
Paths.get("src/library_desugar/" + specificationPath),
ToolHelper.getAndroidJar(androidJarLevel));
@@ -109,16 +91,6 @@
// This can be used to build custom specifications for testing purposes.
public LibraryDesugaringSpecification(
- String name,
- boolean isJdk11Based,
- Set<Path> desugarJdkLibs,
- Path specification,
- Path androidJar) {
- this(name, isJdk11Based, desugarJdkLibs, specification, ImmutableSet.of(androidJar), "");
- }
-
- // This can be used to build custom specifications for testing purposes.
- public LibraryDesugaringSpecification(
String name, Set<Path> desugarJdkLibs, Path specification, Path androidJar) {
this(name, desugarJdkLibs, specification, ImmutableSet.of(androidJar), "");
}
@@ -130,30 +102,16 @@
Path specification,
Set<Path> libraryFiles,
String extraKeepRules) {
- this(name, false, desugarJdkLibs, specification, libraryFiles, extraKeepRules);
- }
-
- // This can be used to build custom specifications for testing purposes.
- public LibraryDesugaringSpecification(
- String name,
- boolean isJdk11Based,
- Set<Path> desugarJdkLibs,
- Path specification,
- Set<Path> libraryFiles,
- String extraKeepRules) {
this.name = name;
- this.isJdk11Based = isJdk11Based;
this.desugarJdkLibs = desugarJdkLibs;
this.specification = specification;
this.libraryFiles = libraryFiles;
this.extraKeepRules = extraKeepRules;
}
- private LibraryDesugaringSpecification(
- String version, boolean isJdk11Based, AndroidApiLevel androidJarLevel) {
+ private LibraryDesugaringSpecification(String version, AndroidApiLevel androidJarLevel) {
this(
- "Release_" + version,
- isJdk11Based,
+ "RELEASED_" + version,
ImmutableSet.of(
Paths.get(DESUGARED_LIB_RELEASES_DIR, version, "desugar_jdk_libs.jar"),
Paths.get(DESUGARED_LIB_RELEASES_DIR, version, "desugar_jdk_libs_configuration.jar")),
@@ -166,10 +124,6 @@
return name;
}
- public boolean isJdk11Based() {
- return isJdk11Based;
- }
-
public Set<Path> getDesugarJdkLibs() {
return desugarJdkLibs;
}