Move runtime file path computation logic into DesugarRuleBuilder.

- Dedupe and unify file path calculations.

PiperOrigin-RevId: 293053363
diff --git a/src/test/java/com/google/devtools/build/android/desugar/nest/ClassFileFormatTest.java b/src/test/java/com/google/devtools/build/android/desugar/nest/ClassFileFormatTest.java
index 07701c6..78f0123 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/nest/ClassFileFormatTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/nest/ClassFileFormatTest.java
@@ -18,15 +18,12 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.base.Splitter;
 import com.google.devtools.build.android.desugar.testing.junit.AsmNode;
 import com.google.devtools.build.android.desugar.testing.junit.DesugarRule;
 import com.google.devtools.build.android.desugar.testing.junit.DesugarRunner;
 import com.google.devtools.build.android.desugar.testing.junit.JdkSuppress;
 import com.google.devtools.build.android.desugar.testing.junit.JdkVersion;
 import java.lang.invoke.MethodHandles;
-import java.nio.file.Path;
-import java.nio.file.Paths;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -46,19 +43,13 @@
   @SuppressWarnings("SplitterToStream") // Pending bazel guava update.
   public final DesugarRule desugarRule =
       DesugarRule.builder(this, lookup)
-          .addSourceInputs(getInputSourceFilesFromJvmOption("input_srcs"))
+          .addSourceInputsFromJvmFlag("input_srcs")
           .addJavacOptions("-source 11", "-target 11")
           .setWorkingJavaPackage(
               "com.google.devtools.build.android.desugar.nest.testsrc.simpleunit.classfileformat")
           .addCommandOptions("desugar_nest_based_private_access", "true")
           .build();
 
-  private static Path[] getInputSourceFilesFromJvmOption(String jvmOptionKey) {
-    return Splitter.on(" ").trimResults().splitToList(System.getProperty(jvmOptionKey)).stream()
-        .map(Paths::get)
-        .toArray(Path[]::new);
-  }
-
   @Test
   public void classFileMajorVersions(
       @AsmNode(className = "NestOuterInterfaceA", round = 0) ClassNode beforeDesugarClassNode,
diff --git a/src/test/java/com/google/devtools/build/android/desugar/nest/NestAnalyzerTest.java b/src/test/java/com/google/devtools/build/android/desugar/nest/NestAnalyzerTest.java
index 980992c..b240c67 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/nest/NestAnalyzerTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/nest/NestAnalyzerTest.java
@@ -30,7 +30,6 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.invoke.MethodHandles;
-import java.nio.file.Paths;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 import org.junit.Rule;
@@ -45,7 +44,7 @@
   @Rule
   public final DesugarRule desugarRule =
       DesugarRule.builder(this, MethodHandles.lookup())
-          .addSourceInputs(Paths.get(System.getProperty("input_srcs")))
+          .addSourceInputsFromJvmFlag("input_srcs")
           .addJavacOptions("-source 11", "-target 11")
           .setWorkingJavaPackage(
               "com.google.devtools.build.android.desugar.nest.testsrc.nestanalyzer")
diff --git a/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringComplexCasesTest.java b/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringComplexCasesTest.java
index 62b0adc..7b33a25 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringComplexCasesTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringComplexCasesTest.java
@@ -18,7 +18,6 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.base.Splitter;
 import com.google.devtools.build.android.desugar.testing.junit.AsmNode;
 import com.google.devtools.build.android.desugar.testing.junit.DesugarRule;
 import com.google.devtools.build.android.desugar.testing.junit.DesugarRunner;
@@ -27,8 +26,6 @@
 import com.google.devtools.build.android.desugar.testing.junit.RuntimeMethodHandle;
 import java.lang.invoke.MethodHandle;
 import java.lang.invoke.MethodHandles;
-import java.nio.file.Path;
-import java.nio.file.Paths;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -47,10 +44,7 @@
   @Rule
   public final DesugarRule desugarRule =
       DesugarRule.builder(this, lookup)
-          .addSourceInputs(
-              Splitter.on(" ").trimResults().splitToList(System.getProperty("input_srcs")).stream()
-                  .map(Paths::get)
-                  .toArray(Path[]::new))
+          .addSourceInputsFromJvmFlag("input_srcs")
           .addJavacOptions("-source 11", "-target 11")
           .setWorkingJavaPackage(
               "com.google.devtools.build.android.desugar.nest.testsrc.complexcase")
diff --git a/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringConstructorAccessTest.java b/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringConstructorAccessTest.java
index 304ac73..0e08492 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringConstructorAccessTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringConstructorAccessTest.java
@@ -18,7 +18,6 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.base.Splitter;
 import com.google.devtools.build.android.desugar.testing.junit.AsmNode;
 import com.google.devtools.build.android.desugar.testing.junit.DesugarRule;
 import com.google.devtools.build.android.desugar.testing.junit.DesugarRunner;
@@ -31,8 +30,6 @@
 import java.lang.invoke.MethodHandles.Lookup;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
-import java.nio.file.Path;
-import java.nio.file.Paths;
 import javax.inject.Inject;
 import org.junit.Rule;
 import org.junit.Test;
@@ -50,19 +47,13 @@
   @Rule
   public final DesugarRule desugarRule =
       DesugarRule.builder(this, lookup)
-          .addSourceInputs(getInputSourceFilesFromJvmOption("input_srcs"))
+          .addSourceInputsFromJvmFlag("input_srcs")
           .addJavacOptions("-source 11", "-target 11")
           .setWorkingJavaPackage(
               "com.google.devtools.build.android.desugar.nest.testsrc.simpleunit.constructor")
           .addCommandOptions("desugar_nest_based_private_access", "true")
           .build();
 
-  private static Path[] getInputSourceFilesFromJvmOption(String jvmOptionKey) {
-    return Splitter.on(" ").trimResults().splitToList(System.getProperty(jvmOptionKey)).stream()
-        .map(Paths::get)
-        .toArray(Path[]::new);
-  }
-
   @Inject
   @DynamicClassLiteral("ConstructorNest$ConstructorServiceMate")
   private Class<?> mate;
diff --git a/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringFieldAccessTest.java b/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringFieldAccessTest.java
index bd61940..44010b5 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringFieldAccessTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringFieldAccessTest.java
@@ -29,7 +29,6 @@
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
-import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -51,7 +50,7 @@
   @Rule
   public final DesugarRule desugarRule =
       DesugarRule.builder(this, MethodHandles.lookup())
-          .addSourceInputs(Paths.get(System.getProperty("input_srcs")))
+          .addSourceInputsFromJvmFlag("input_srcs")
           .setWorkingJavaPackage(
               "com.google.devtools.build.android.desugar.nest.testsrc.simpleunit.field")
           .addJavacOptions("-source 11", "-target 11")
diff --git a/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringInterfaceMethodAccessTest.java b/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringInterfaceMethodAccessTest.java
index 48b4618..7307b89 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringInterfaceMethodAccessTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringInterfaceMethodAccessTest.java
@@ -29,7 +29,6 @@
 import java.lang.invoke.MethodHandle;
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.Method;
-import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -48,7 +47,7 @@
   @Rule
   public final DesugarRule desugarRule =
       DesugarRule.builder(this, MethodHandles.lookup())
-          .addSourceInputs(Paths.get(System.getProperty("input_srcs")))
+          .addSourceInputsFromJvmFlag("input_srcs")
           .addJavacOptions("-source 11", "-target 11")
           .setWorkingJavaPackage(
               "com.google.devtools.build.android.desugar.nest.testsrc.simpleunit.interfacemethod")
diff --git a/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringMethodAccessTest.java b/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringMethodAccessTest.java
index 3994726..5411b3d 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringMethodAccessTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/nest/NestDesugaringMethodAccessTest.java
@@ -29,7 +29,6 @@
 import java.lang.invoke.MethodHandle;
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.Method;
-import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -48,7 +47,7 @@
   @Rule
   public final DesugarRule desugarRule =
       DesugarRule.builder(this, MethodHandles.lookup())
-          .addSourceInputs(Paths.get(System.getProperty("input_srcs")))
+          .addSourceInputsFromJvmFlag("input_srcs")
           .addJavacOptions("-source 11", "-target 11")
           .setWorkingJavaPackage(
               "com.google.devtools.build.android.desugar.nest.testsrc.simpleunit.method")
@@ -77,7 +76,6 @@
   }
 
   @Test
-
   public void inputClassFileMajorVersions(
       @AsmNode(className = "MethodNest", round = 0) ClassNode beforeDesugarClassNode,
       @AsmNode(className = "MethodNest", round = 1) ClassNode afterDesugarClassNode) {
diff --git a/src/test/java/com/google/devtools/build/android/desugar/testing/junit/DesugarRuleTest.java b/src/test/java/com/google/devtools/build/android/desugar/testing/junit/DesugarRuleTest.java
index 920a3cf..7f4355a 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/testing/junit/DesugarRuleTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/testing/junit/DesugarRuleTest.java
@@ -43,7 +43,7 @@
   public final DesugarRule desugarRule =
       DesugarRule.builder(this, MethodHandles.lookup())
           .addInputs(Paths.get(System.getProperty("input_jar")))
-          .addSourceInputs(Paths.get(System.getProperty("input_srcs")))
+          .addSourceInputsFromJvmFlag("input_srcs")
           .addJavacOptions("-source 11", "-target 11")
           .enableIterativeTransformation(3)
           .setWorkingJavaPackage("com.google.devtools.build.android.desugar.testing.junit")
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/testing/junit/DesugarRuleBuilder.java b/src/tools/android/java/com/google/devtools/build/android/desugar/testing/junit/DesugarRuleBuilder.java
index 5c37c33..e7005c7 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/testing/junit/DesugarRuleBuilder.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/testing/junit/DesugarRuleBuilder.java
@@ -16,6 +16,7 @@
 
 package com.google.devtools.build.android.desugar.testing.junit;
 
+import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableListMultimap;
@@ -152,6 +153,26 @@
   }
 
   /**
+   * Add JVM-flag-specified Java source files subject to be compiled during test execution. It is
+   * expected the value associated with `jvmFlagKey` to be a space-separated Strings. E.g. on the
+   * command line you would set it like: -Dinput_srcs="path1 path2 path3", and use <code>
+   *  .addSourceInputsFromJvmFlag("input_srcs").</code> in your test class.
+   */
+  public DesugarRuleBuilder addSourceInputsFromJvmFlag(String jvmFlagKey) {
+    return addSourceInputs(getRuntimePathsFromJvmFlag(jvmFlagKey));
+  }
+
+  /**
+   * A helper method that reads file paths into an array from the JVM flag value associated with
+   * {@param jvmFlagKey}.
+   */
+  private static Path[] getRuntimePathsFromJvmFlag(String jvmFlagKey) {
+    return Splitter.on(" ").trimResults().splitToList(System.getProperty(jvmFlagKey)).stream()
+        .map(Paths::get)
+        .toArray(Path[]::new);
+  }
+
+  /**
    * Add javac options used for compilation, with the same support of `javacopts` attribute in
    * java_binary rule.
    */