Add PlatformMappingFunctionTests for list flags

PiperOrigin-RevId: 627705485
Change-Id: Ib400d5be12745de640e0c4555a868a6f1af1198c
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/config/PlatformMappingFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/config/PlatformMappingFunctionTest.java
index d840700..ff09e6a 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/config/PlatformMappingFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/config/PlatformMappingFunctionTest.java
@@ -35,11 +35,13 @@
 import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.skyframe.EvaluationResult;
+import com.google.devtools.common.options.Converters.CommaSeparatedOptionListConverter;
 import com.google.devtools.common.options.Option;
 import com.google.devtools.common.options.OptionDocumentationCategory;
 import com.google.devtools.common.options.OptionEffectTag;
 import com.google.devtools.common.options.OptionMetadataTag;
 import com.google.devtools.common.options.OptionsParser;
+import java.util.List;
 import java.util.Optional;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -76,6 +78,14 @@
         defaultValue = "super secret",
         metadataTags = {OptionMetadataTag.INTERNAL})
     public String internalOption;
+
+    @Option(
+        name = "list",
+        converter = CommaSeparatedOptionListConverter.class,
+        documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
+        effectTags = {OptionEffectTag.NO_OP},
+        defaultValue = "null")
+    public List<String> list;
   }
 
   private static final ImmutableList<Class<? extends FragmentOptions>> BUILD_CONFIG_OPTIONS =
@@ -323,6 +333,29 @@
   }
 
   @Test
+  public void mapFromPlatform_listFlag_overridesConfig() throws Exception {
+    scratch.file(
+        "my_mapping_file",
+        """
+        platforms:
+          //platforms:one
+            --list=from_mapping
+        """);
+
+    PlatformMappingValue platformMappingValue =
+        executeFunction(PlatformMappingValue.Key.create(PathFragment.create("my_mapping_file")));
+
+    BuildOptions modifiedOptions = createBuildOptions();
+    modifiedOptions.get(DummyTestOptions.class).list = ImmutableList.of("from_config");
+    modifiedOptions.get(PlatformOptions.class).platforms = ImmutableList.of(PLATFORM1);
+
+    BuildOptions mapped = platformMappingValue.map(modifiedOptions);
+
+    // The mapping should completely replace the list, because it is not accumulating.
+    assertThat(mapped.get(DummyTestOptions.class).list).containsExactly("from_mapping");
+  }
+
+  @Test
   public void mapFromPlatform_badStarlarkFlag() throws Exception {
     scratch.file("test/BUILD"); // Set up a valid package but invalid flag.
     scratch.file(