Revert "More desugared library tests" This reverts commit e05ccee3e8b19dc0ce2e7055f9101af74cd5fe89. Reason for revert: Breaking bots Change-Id: I5048dc7eb185d85b3f30fbd428d1a3355acef329
diff --git a/src/test/java/com/android/tools/r8/D8TestBuilder.java b/src/test/java/com/android/tools/r8/D8TestBuilder.java index 7b53857..e3db7cc 100644 --- a/src/test/java/com/android/tools/r8/D8TestBuilder.java +++ b/src/test/java/com/android/tools/r8/D8TestBuilder.java
@@ -55,7 +55,7 @@ Builder builder, Consumer<InternalOptions> optionsConsumer, Supplier<AndroidApp> app) throws CompilationFailedException { ToolHelper.runD8(builder, optionsConsumer); - return new D8TestCompileResult(getState(), app.get(), getOutputMode(), keepRulesHolder); + return new D8TestCompileResult(getState(), app.get(), getOutputMode()); } public D8TestBuilder setIntermediate(boolean intermediate) {
diff --git a/src/test/java/com/android/tools/r8/D8TestCompileResult.java b/src/test/java/com/android/tools/r8/D8TestCompileResult.java index 02ce637..e4ea07c 100644 --- a/src/test/java/com/android/tools/r8/D8TestCompileResult.java +++ b/src/test/java/com/android/tools/r8/D8TestCompileResult.java
@@ -6,13 +6,10 @@ import com.android.tools.r8.TestBase.Backend; import com.android.tools.r8.ToolHelper.ProcessResult; import com.android.tools.r8.utils.AndroidApp; -import com.android.tools.r8.utils.Box; public class D8TestCompileResult extends TestCompileResult<D8TestCompileResult, D8TestRunResult> { - - D8TestCompileResult( - TestState state, AndroidApp app, OutputMode outputMode, Box<String> keepRulesHolder) { - super(state, app, outputMode, keepRulesHolder); + D8TestCompileResult(TestState state, AndroidApp app, OutputMode outputMode) { + super(state, app, outputMode); assert ToolHelper.verifyValidOutputMode(Backend.DEX, outputMode); }
diff --git a/src/test/java/com/android/tools/r8/R8TestBuilder.java b/src/test/java/com/android/tools/r8/R8TestBuilder.java index 5ab864b..d6d3f5d 100644 --- a/src/test/java/com/android/tools/r8/R8TestBuilder.java +++ b/src/test/java/com/android/tools/r8/R8TestBuilder.java
@@ -98,8 +98,7 @@ box.proguardConfiguration, box.syntheticProguardRules, proguardMapBuilder.toString(), - graphConsumer, - null); + graphConsumer); } public Builder getBuilder() {
diff --git a/src/test/java/com/android/tools/r8/R8TestCompileResult.java b/src/test/java/com/android/tools/r8/R8TestCompileResult.java index 325046b..8e63f34 100644 --- a/src/test/java/com/android/tools/r8/R8TestCompileResult.java +++ b/src/test/java/com/android/tools/r8/R8TestCompileResult.java
@@ -8,7 +8,6 @@ import com.android.tools.r8.shaking.ProguardConfiguration; import com.android.tools.r8.shaking.ProguardConfigurationRule; import com.android.tools.r8.utils.AndroidApp; -import com.android.tools.r8.utils.Box; import com.android.tools.r8.utils.codeinspector.CodeInspector; import com.android.tools.r8.utils.graphinspector.GraphInspector; import java.io.IOException; @@ -30,9 +29,8 @@ ProguardConfiguration proguardConfiguration, List<ProguardConfigurationRule> syntheticProguardRules, String proguardMap, - CollectingGraphConsumer graphConsumer, - Box<String> keepRulesHolder) { - super(state, app, outputMode, keepRulesHolder); + CollectingGraphConsumer graphConsumer) { + super(state, app, outputMode); this.proguardConfiguration = proguardConfiguration; this.syntheticProguardRules = syntheticProguardRules; this.proguardMap = proguardMap;
diff --git a/src/test/java/com/android/tools/r8/TestCompileResult.java b/src/test/java/com/android/tools/r8/TestCompileResult.java index eb2ccc4..31cdf50 100644 --- a/src/test/java/com/android/tools/r8/TestCompileResult.java +++ b/src/test/java/com/android/tools/r8/TestCompileResult.java
@@ -18,7 +18,6 @@ import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.utils.AndroidApiLevel; import com.android.tools.r8.utils.AndroidApp; -import com.android.tools.r8.utils.Box; import com.android.tools.r8.utils.DescriptorUtils; import com.android.tools.r8.utils.TriFunction; import com.android.tools.r8.utils.codeinspector.ClassSubject; @@ -48,18 +47,11 @@ final List<String> vmArguments = new ArrayList<>(); private boolean withArt6Plus64BitsLib = false; private boolean withArtFrameworks = true; - private final String desugaredLibraryKeepRules; TestCompileResult(TestState state, AndroidApp app, OutputMode outputMode) { - this(state, app, outputMode, null); - } - - TestCompileResult( - TestState state, AndroidApp app, OutputMode outputMode, Box<String> keepRulesHolder) { super(state); this.app = app; this.outputMode = outputMode; - this.desugaredLibraryKeepRules = keepRulesHolder == null ? null : keepRulesHolder.get(); } public final CR withArt6Plus64BitsLib() { @@ -72,10 +64,6 @@ return self(); } - public String getDesugaredLibraryKeepRules() { - return desugaredLibraryKeepRules; - } - public final Backend getBackend() { if (outputMode == OutputMode.ClassFile) { return Backend.CF; @@ -188,9 +176,10 @@ public CR addDesugaredCoreLibraryRunClassPath( TriFunction<AndroidApiLevel, String, Boolean, Path> classPathSupplier, AndroidApiLevel minAPILevel, + String keepRules, boolean shrink) { if (minAPILevel.getLevel() < AndroidApiLevel.O.getLevel()) { - addRunClasspathFiles(classPathSupplier.apply(minAPILevel, desugaredLibraryKeepRules, shrink)); + addRunClasspathFiles(classPathSupplier.apply(minAPILevel, keepRules, shrink)); } return self(); }
diff --git a/src/test/java/com/android/tools/r8/TestCompilerBuilder.java b/src/test/java/com/android/tools/r8/TestCompilerBuilder.java index c63c4c7..8498704 100644 --- a/src/test/java/com/android/tools/r8/TestCompilerBuilder.java +++ b/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
@@ -8,7 +8,6 @@ import com.android.tools.r8.utils.AndroidApiLevel; import com.android.tools.r8.utils.AndroidApp; import com.android.tools.r8.utils.AndroidAppConsumers; -import com.android.tools.r8.utils.Box; import com.android.tools.r8.utils.InternalOptions; import com.google.common.base.Suppliers; import java.io.IOException; @@ -44,7 +43,6 @@ private Consumer<InternalOptions> optionsConsumer = DEFAULT_OPTIONS; private PrintStream stdout = null; protected OutputMode outputMode = OutputMode.DexIndexed; - protected Box<String> keepRulesHolder; TestCompilerBuilder(TestState state, B builder, Backend backend) { super(state, builder); @@ -278,11 +276,6 @@ if (minAPILevel.getLevel() < AndroidApiLevel.O.getLevel()) { builder.addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.O)); builder.addSpecialLibraryConfiguration("default"); - keepRulesHolder = new Box<>(""); - this.addOptionsModification( - options -> - options.testing.desugaredLibraryKeepRuleConsumer = - (string, handler) -> this.keepRulesHolder.set(keepRulesHolder.get() + string)); } return self(); }
diff --git a/src/test/java/com/android/tools/r8/desugar/corelib/CustomCollectionTest.java b/src/test/java/com/android/tools/r8/desugar/corelib/CustomCollectionTest.java index 678a395..099c560 100644 --- a/src/test/java/com/android/tools/r8/desugar/corelib/CustomCollectionTest.java +++ b/src/test/java/com/android/tools/r8/desugar/corelib/CustomCollectionTest.java
@@ -48,16 +48,22 @@ @Test public void testCustomCollectionD8() throws Exception { + Box<String> keepRulesHolder = new Box<>(""); D8TestRunResult d8TestRunResult = testForD8() .addInnerClasses(CustomCollectionTest.class) .setMinApi(parameters.getApiLevel()) + .addOptionsModification( + options -> + options.testing.desugaredLibraryKeepRuleConsumer = + (string, handler) -> keepRulesHolder.set(keepRulesHolder.get() + string)) .enableCoreLibraryDesugaring(parameters.getApiLevel()) .compile() .inspect(inspector -> this.assertCustomCollectionCallsCorrect(inspector, false)) .addDesugaredCoreLibraryRunClassPath( this::buildDesugaredLibrary, parameters.getApiLevel(), + keepRulesHolder.get(), shrinkCoreLibrary) .run(parameters.getRuntime(), EXECUTOR) .assertSuccess(); @@ -76,17 +82,23 @@ @Test public void testCustomCollectionR8() throws Exception { + Box<String> keepRulesHolder = new Box<>(""); R8TestRunResult r8TestRunResult = testForR8(Backend.DEX) .addInnerClasses(CustomCollectionTest.class) .setMinApi(parameters.getApiLevel()) .addKeepClassAndMembersRules(Executor.class) + .addOptionsModification( + options -> + options.testing.desugaredLibraryKeepRuleConsumer = + (string, handler) -> keepRulesHolder.set(keepRulesHolder.get() + string)) .enableCoreLibraryDesugaring(parameters.getApiLevel()) .compile() .inspect(inspector -> this.assertCustomCollectionCallsCorrect(inspector, true)) .addDesugaredCoreLibraryRunClassPath( this::buildDesugaredLibrary, parameters.getApiLevel(), + keepRulesHolder.get(), shrinkCoreLibrary) .run(parameters.getRuntime(), EXECUTOR) .assertSuccess();
diff --git a/src/test/java/com/android/tools/r8/desugar/corelib/JavaTimeTest.java b/src/test/java/com/android/tools/r8/desugar/corelib/JavaTimeTest.java index b43523c..fb1c722 100644 --- a/src/test/java/com/android/tools/r8/desugar/corelib/JavaTimeTest.java +++ b/src/test/java/com/android/tools/r8/desugar/corelib/JavaTimeTest.java
@@ -55,15 +55,21 @@ @Test public void testTimeD8() throws Exception { + Box<String> keepRulesHolder = new Box<>(""); testForD8() .addInnerClasses(JavaTimeTest.class) .setMinApi(parameters.getApiLevel()) .enableCoreLibraryDesugaring(parameters.getApiLevel()) + .addOptionsModification( + options -> + options.testing.desugaredLibraryKeepRuleConsumer = + (string, handler) -> keepRulesHolder.set(keepRulesHolder.get() + string)) .compile() .inspect(this::checkRewrittenInvokes) .addDesugaredCoreLibraryRunClassPath( this::buildDesugaredLibrary, parameters.getApiLevel(), + keepRulesHolder.get(), shrinkCoreLibrary) .run(parameters.getRuntime(), TestClass.class) .assertSuccessWithOutput(expectedOutput); @@ -71,16 +77,22 @@ @Test public void testTimeR8() throws Exception { + Box<String> keepRulesHolder = new Box<>(""); testForR8(parameters.getBackend()) .addInnerClasses(JavaTimeTest.class) .addKeepMainRule(TestClass.class) .setMinApi(parameters.getApiLevel()) .enableCoreLibraryDesugaring(parameters.getApiLevel()) + .addOptionsModification( + options -> + options.testing.desugaredLibraryKeepRuleConsumer = + (string, handler) -> keepRulesHolder.set(keepRulesHolder.get() + string)) .compile() .inspect(this::checkRewrittenInvokes) .addDesugaredCoreLibraryRunClassPath( this::buildDesugaredLibrary, parameters.getApiLevel(), + keepRulesHolder.get(), shrinkCoreLibrary) .run(parameters.getRuntime(), TestClass.class) .assertSuccessWithOutput(expectedOutput);
diff --git a/src/test/java/com/android/tools/r8/desugar/corelib/JavaUtilFunctionTest.java b/src/test/java/com/android/tools/r8/desugar/corelib/JavaUtilFunctionTest.java index 81c5c07..74a4efa 100644 --- a/src/test/java/com/android/tools/r8/desugar/corelib/JavaUtilFunctionTest.java +++ b/src/test/java/com/android/tools/r8/desugar/corelib/JavaUtilFunctionTest.java
@@ -8,35 +8,29 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertEquals; -import com.android.tools.r8.NeverInline; import com.android.tools.r8.TestParameters; -import com.android.tools.r8.utils.BooleanUtils; +import com.android.tools.r8.TestParametersCollection; +import com.android.tools.r8.ToolHelper; +import com.android.tools.r8.utils.AndroidApiLevel; import com.android.tools.r8.utils.StringUtils; import com.android.tools.r8.utils.codeinspector.ClassSubject; import com.android.tools.r8.utils.codeinspector.CodeInspector; -import java.util.List; import java.util.function.Function; -import org.junit.Assume; 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 JavaUtilFunctionTest extends CoreLibDesugarTestBase { private final TestParameters parameters; - private final boolean shrinkCoreLibrary; - private static final String expectedOutput = StringUtils.lines("Hello, world", "Hello, world"); - @Parameters(name = "{1}, shrinkCoreLibrary: {0}") - public static List<Object[]> data() { - return buildParameters( - BooleanUtils.values(), getTestParameters().withDexRuntimes().withAllApiLevels().build()); + @Parameterized.Parameters(name = "{0}") + public static TestParametersCollection data() { + return getTestParameters().withDexRuntimes().withAllApiLevels().build(); } - public JavaUtilFunctionTest(boolean shrinkDesugaredLibrary, TestParameters parameters) { - this.shrinkCoreLibrary = shrinkDesugaredLibrary; + public JavaUtilFunctionTest(TestParameters parameters) { this.parameters = parameters; } @@ -59,42 +53,22 @@ } @Test - public void testJavaUtilFunctionD8() throws Exception { + public void testJavaUtilFunction() throws Exception { + String expectedOutput = StringUtils.lines("Hello, world", "Hello, world"); testForD8() .addInnerClasses(JavaUtilFunctionTest.class) + .addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.P)) .setMinApi(parameters.getApiLevel()) - .enableCoreLibraryDesugaring(parameters.getApiLevel()) + .enableCoreLibraryDesugaring() .compile() .inspect(this::checkRewrittenArguments) - .addDesugaredCoreLibraryRunClassPath( - this::buildDesugaredLibrary, parameters.getApiLevel(), shrinkCoreLibrary) - .run(parameters.getRuntime(), TestClass.class) - .assertSuccessWithOutput(expectedOutput); - } - - @Test - public void testJavaUtilFunctionR8() throws Exception { - // TODO(b/139398549): Enable test on API 26+. - Assume.assumeTrue(parameters.getApiLevel().getLevel() < 26); - testForR8(parameters.getBackend()) - // Following two for checkRewrittenArguments. - .enableInliningAnnotations() - .noMinification() - .addKeepMainRule(TestClass.class) - .addInnerClasses(JavaUtilFunctionTest.class) - .setMinApi(parameters.getApiLevel()) - .enableCoreLibraryDesugaring(parameters.getApiLevel()) - .compile() - .inspect(this::checkRewrittenArguments) - .addDesugaredCoreLibraryRunClassPath( - this::buildDesugaredLibrary, parameters.getApiLevel(), shrinkCoreLibrary) + .addRunClasspathFiles(buildDesugaredLibrary(parameters.getApiLevel())) .run(parameters.getRuntime(), TestClass.class) .assertSuccessWithOutput(expectedOutput); } static class TestClass { - @NeverInline private static String applyFunction(Function<String, String> f) { return f.apply("Hello, world"); }
diff --git a/src/test/java/com/android/tools/r8/desugar/corelib/ProgramRewritingTest.java b/src/test/java/com/android/tools/r8/desugar/corelib/ProgramRewritingTest.java index 0d18a6f..8aeddab 100644 --- a/src/test/java/com/android/tools/r8/desugar/corelib/ProgramRewritingTest.java +++ b/src/test/java/com/android/tools/r8/desugar/corelib/ProgramRewritingTest.java
@@ -13,15 +13,14 @@ import static org.hamcrest.core.StringContains.containsString; import static org.junit.Assert.assertFalse; -import com.android.tools.r8.D8TestCompileResult; import com.android.tools.r8.D8TestRunResult; -import com.android.tools.r8.R8TestCompileResult; import com.android.tools.r8.R8TestRunResult; import com.android.tools.r8.TestParameters; import com.android.tools.r8.ToolHelper; import com.android.tools.r8.ToolHelper.DexVm; import com.android.tools.r8.utils.AndroidApiLevel; import com.android.tools.r8.utils.BooleanUtils; +import com.android.tools.r8.utils.Box; import com.android.tools.r8.utils.StringUtils; import com.android.tools.r8.utils.codeinspector.ClassSubject; import com.android.tools.r8.utils.codeinspector.CodeInspector; @@ -57,25 +56,26 @@ @Test public void testProgramD8() throws Exception { Assume.assumeTrue("No desugaring for high API levels", requiresCoreLibDesugaring(parameters)); - D8TestCompileResult d8TestCompileResult = + Box<String> keepRulesHolder = new Box<>(""); + D8TestRunResult d8TestRunResult = testForD8() .addProgramFiles(Paths.get(ToolHelper.EXAMPLES_JAVA9_BUILD_DIR + "stream.jar")) .addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.P)) .setMinApi(parameters.getApiLevel()) + .addOptionsModification( + options -> + options.testing.desugaredLibraryKeepRuleConsumer = + (string, handler) -> keepRulesHolder.set(keepRulesHolder.get() + string)) .enableCoreLibraryDesugaring() .compile() - .inspect(this::checkRewrittenInvokes); - D8TestRunResult d8TestRunResult = - d8TestCompileResult + .inspect(this::checkRewrittenInvokes) .addRunClasspathFiles( buildDesugaredLibrary( - parameters.getApiLevel(), - d8TestCompileResult.getDesugaredLibraryKeepRules(), - shrinkCoreLibrary)) + parameters.getApiLevel(), keepRulesHolder.get(), shrinkCoreLibrary)) .run(parameters.getRuntime(), TEST_CLASS) .assertSuccess(); assertLines2By2Correct(d8TestRunResult.getStdOut()); - assertGeneratedKeepRulesAreCorrect(d8TestCompileResult.getDesugaredLibraryKeepRules()); + assertGeneratedKeepRulesAreCorrect(keepRulesHolder.get()); String stdErr = d8TestRunResult.getStdErr(); if (parameters.getRuntime().asDex().getVm().isOlderThanOrEqual(DexVm.ART_4_4_4_HOST)) { // Flaky: There might be a missing method on lambda deserialization. @@ -91,27 +91,28 @@ public void testProgramR8() throws Exception { Assume.assumeTrue("No desugaring for high API levels", requiresCoreLibDesugaring(parameters)); for (Boolean minifying : BooleanUtils.values()) { - R8TestCompileResult r8TestCompileResult = + Box<String> keepRulesHolder = new Box<>(""); + R8TestRunResult r8TestRunResult = testForR8(parameters.getBackend()) .minification(minifying) .addKeepMainRule(TEST_CLASS) .addProgramFiles(Paths.get(ToolHelper.EXAMPLES_JAVA9_BUILD_DIR + "stream.jar")) .addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.P)) .setMinApi(parameters.getApiLevel()) + .addOptionsModification( + options -> + options.testing.desugaredLibraryKeepRuleConsumer = + (string, handler) -> keepRulesHolder.set(keepRulesHolder.get() + string)) .enableCoreLibraryDesugaring() - .compile(); - R8TestRunResult r8TestRunResult = - r8TestCompileResult + .compile() .inspect(this::checkRewrittenInvokes) .addRunClasspathFiles( buildDesugaredLibrary( - parameters.getApiLevel(), - r8TestCompileResult.getDesugaredLibraryKeepRules(), - shrinkCoreLibrary)) + parameters.getApiLevel(), keepRulesHolder.get(), shrinkCoreLibrary)) .run(parameters.getRuntime(), TEST_CLASS) .assertSuccess(); assertLines2By2Correct(r8TestRunResult.getStdOut()); - assertGeneratedKeepRulesAreCorrect(r8TestCompileResult.getDesugaredLibraryKeepRules()); + assertGeneratedKeepRulesAreCorrect(keepRulesHolder.get()); if (parameters.getRuntime().asDex().getVm().isOlderThanOrEqual(DexVm.ART_4_4_4_HOST)) { // Flaky: There might be a missing method on lambda deserialization. r8TestRunResult.assertStderrMatches(