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(