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);
+    }
   }
 }