Reproduce record rewriting with repacking without obfuscation
Bug: b/299446046
Change-Id: I7fb63b52efa2d0ac9a21ff2dc05476fd72168ae5
diff --git a/src/test/java/com/android/tools/r8/desugar/records/EmptyRecordTest.java b/src/test/java/com/android/tools/r8/desugar/records/EmptyRecordTest.java
index e60c81f..862728b 100644
--- a/src/test/java/com/android/tools/r8/desugar/records/EmptyRecordTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/records/EmptyRecordTest.java
@@ -4,9 +4,11 @@
package com.android.tools.r8.desugar.records;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeFalse;
import static org.junit.Assume.assumeTrue;
+import com.android.tools.r8.CompilationFailedException;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestRuntime.CfVm;
@@ -34,12 +36,16 @@
public boolean enableMinification;
@Parameter(1)
+ public boolean enableRepackaging;
+
+ @Parameter(2)
public TestParameters parameters;
- @Parameters(name = "{1}, minification: {0}")
+ @Parameters(name = "{2}, minification: {0}, repackage: {1}")
public static List<Object[]> data() {
return buildParameters(
BooleanUtils.values(),
+ BooleanUtils.values(),
getTestParameters()
.withCfRuntimesStartingFromIncluding(CfVm.JDK17)
.withDexRuntimes()
@@ -59,7 +65,7 @@
@Test
public void testD8() throws Exception {
- assumeFalse("Only applicable for R8", enableMinification);
+ assumeFalse("Only applicable for R8", enableMinification || enableRepackaging);
testForD8(parameters.getBackend())
.addProgramClassFileData(PROGRAM_DATA)
.setMinApi(parameters)
@@ -70,25 +76,32 @@
@Test
public void testR8() throws Exception {
- // TODO(b/288360309): Correctly deal with non-identity lenses in R8 record rewriting.
- assumeTrue(parameters.isDexRuntime());
- parameters.assumeR8TestParameters();
- testForR8(parameters.getBackend())
- .addProgramClassFileData(PROGRAM_DATA)
- .addKeepMainRule(MAIN_TYPE)
- .applyIf(
- parameters.isCfRuntime(),
- testBuilder -> testBuilder.addLibraryFiles(RecordTestUtils.getJdk15LibraryFiles(temp)))
- .minification(enableMinification)
- .setMinApi(parameters)
- .compile()
- .applyIf(
- parameters.isCfRuntime(),
- compileResult -> compileResult.inspect(RecordTestUtils::assertRecordsAreRecords))
- .run(parameters.getRuntime(), MAIN_TYPE)
- .assertSuccessWithOutput(
- enableMinification
- ? EXPECTED_RESULT_R8_MINIFICATION
- : EXPECTED_RESULT_R8_NO_MINIFICATION);
+ try {
+ // TODO(b/288360309): Correctly deal with non-identity lenses in R8 record rewriting.
+ assumeTrue(parameters.isDexRuntime());
+ parameters.assumeR8TestParameters();
+ testForR8(parameters.getBackend())
+ .addProgramClassFileData(PROGRAM_DATA)
+ .addKeepMainRule(MAIN_TYPE)
+ .applyIf(
+ parameters.isCfRuntime(),
+ testBuilder ->
+ testBuilder.addLibraryFiles(RecordTestUtils.getJdk15LibraryFiles(temp)))
+ .minification(enableMinification)
+ .applyIf(enableRepackaging, b -> b.addKeepRules("-repackageclasses p"))
+ .setMinApi(parameters)
+ .compile()
+ .applyIf(
+ parameters.isCfRuntime(),
+ compileResult -> compileResult.inspect(RecordTestUtils::assertRecordsAreRecords))
+ .run(parameters.getRuntime(), MAIN_TYPE)
+ .assertSuccessWithOutput(
+ enableMinification
+ ? EXPECTED_RESULT_R8_MINIFICATION
+ : EXPECTED_RESULT_R8_NO_MINIFICATION);
+ assertTrue(!enableRepackaging || enableMinification);
+ } catch (CompilationFailedException e) {
+ assertTrue(enableRepackaging && !enableMinification);
+ }
}
}