Remove the select restrictions API for configurable attributes.
The only use of this was for `--python_version`, so that is now freely usable in sleects (but still shouldn't be used).
PiperOrigin-RevId: 630487069
Change-Id: Ie0e65f2afda22bdc17c4cb74b2efecbed5c18df8
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptionDetails.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptionDetails.java
index 0c6729e..ffae0c5 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptionDetails.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptionDetails.java
@@ -17,7 +17,6 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.analysis.config.FragmentOptions.SelectRestriction;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.common.options.OptionDefinition;
import com.google.devtools.common.options.OptionMetadataTag;
@@ -59,8 +58,6 @@
for (FragmentOptions options : buildOptions) {
ImmutableList<OptionDefinition> optionDefinitions =
OptionsParser.getOptionDefinitions(options.getClass());
- Map<OptionDefinition, SelectRestriction> selectRestrictions =
- options.getSelectRestrictions();
for (OptionDefinition optionDefinition : optionDefinitions) {
if (ImmutableList.copyOf(optionDefinition.getOptionMetadataTags())
@@ -75,11 +72,7 @@
}
map.put(
optionDefinition.getOptionName(),
- new OptionDetails(
- options.getClass(),
- value,
- optionDefinition.allowsMultiple(),
- selectRestrictions.get(optionDefinition)));
+ new OptionDetails(options.getClass(), value, optionDefinition.allowsMultiple()));
}
}
} catch (IllegalAccessException e) {
@@ -92,14 +85,10 @@
private static final class OptionDetails {
private OptionDetails(
- Class<? extends FragmentOptions> optionsClass,
- Object value,
- boolean allowsMultiple,
- @Nullable SelectRestriction selectRestriction) {
+ Class<? extends FragmentOptions> optionsClass, Object value, boolean allowsMultiple) {
this.optionsClass = optionsClass;
this.value = value;
this.allowsMultiple = allowsMultiple;
- this.selectRestriction = selectRestriction;
}
/** The {@link FragmentOptions} class that defines this option. */
@@ -110,12 +99,6 @@
/** Whether or not this option supports multiple values. */
private final boolean allowsMultiple;
-
- /**
- * Information on whether this option is permitted to appear in {@code config_setting}s. Null if
- * there is no such restriction.
- */
- @Nullable private final SelectRestriction selectRestriction;
}
/**
@@ -185,15 +168,4 @@
OptionDetails optionDetails = nativeOptionsMap.get(optionName);
return optionDetails != null && optionDetails.allowsMultiple;
}
-
- /**
- * Returns information about whether an option may appear in a {@code config_setting}.
- *
- * <p>Returns null for unrecognized options or options that have no restriction.
- */
- @Nullable
- public SelectRestriction getSelectRestriction(String optionName) {
- OptionDetails optionDetails = nativeOptionsMap.get(optionName);
- return optionDetails == null ? null : optionDetails.selectRestriction;
- }
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java
index 272c8e4..d4d1f29 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java
@@ -17,13 +17,10 @@
import static com.google.common.collect.ImmutableList.toImmutableList;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.common.options.Option;
-import com.google.devtools.common.options.OptionDefinition;
import com.google.devtools.common.options.Options;
import com.google.devtools.common.options.OptionsBase;
import java.util.List;
-import java.util.Map;
import javax.annotation.Nullable;
/** Command-line build options for a Blaze module. */
@@ -146,28 +143,4 @@
return errorMessage;
}
}
-
- /**
- * Returns a map from options defined by this fragment to restrictions on whether the option may
- * appear in a {@code config_setting}. If an option defined by this fragment is not a key of this
- * map, then it has no restriction.
- *
- * <p>In addition to making options unconditionally non-selectable, this can also be used to gate
- * selectability based on the value of other flags in the same fragment -- for instance,
- * experimental or incompatible change flags.
- *
- * <p>The intended usage pattern is to define, for each flag {@code foo} to have a restriction, a
- * field
- *
- * <pre>{@code
- * private static final OptionDefinition FOO_DEFINITION =
- * OptionsParser.getOptionDefinitionByName(ThisClass.class, "foo");
- * }</pre>
- *
- * This way, if the option is ever renamed (especially common for an experimental flag), if the
- * definition is not updated at the same time it will fail-fast during static initialization.
- */
- public Map<OptionDefinition, SelectRestriction> getSelectRestrictions() {
- return ImmutableMap.of();
- }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java
index 83d8e24..a53ce60 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java
@@ -27,8 +27,6 @@
import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
import com.google.devtools.build.lib.packages.AllowlistChecker;
-import com.google.devtools.build.lib.packages.Attribute.ComputedDefault;
-import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.NonconfigurableAttributeMapper;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.Types;
@@ -138,23 +136,11 @@
/** The name of the attribute that declares constraint_values. */
public static final String CONSTRAINT_VALUES_ATTRIBUTE = "constraint_values";
- /** The name of the tools repository. */
- public static final String TOOLS_REPOSITORY_ATTRIBUTE = "$tools_repository";
-
@Override
public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env) {
return builder
.setIgnoreLicenses()
.requiresConfigurationFragments(PlatformConfiguration.class)
- .add(
- attr(TOOLS_REPOSITORY_ATTRIBUTE, STRING)
- .value(
- new ComputedDefault() {
- @Override
- public Object getDefault(AttributeMap rule) {
- return env.getToolsRepository().getName();
- }
- }))
/* <!-- #BLAZE_RULE(config_setting).ATTRIBUTE(values) -->
The set of configuration values that match this rule (expressed as build flags)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java
index 69a21ad..ce929a2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java
@@ -47,7 +47,6 @@
import com.google.devtools.build.lib.analysis.config.BuildOptionDetails;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
-import com.google.devtools.build.lib.analysis.config.FragmentOptions.SelectRestriction;
import com.google.devtools.build.lib.analysis.platform.ConstraintCollection;
import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
import com.google.devtools.build.lib.analysis.platform.PlatformProviderUtils;
@@ -58,7 +57,6 @@
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.NonconfigurableAttributeMapper;
-import com.google.devtools.build.lib.packages.Type;
import com.google.devtools.build.lib.packages.Types;
import com.google.devtools.build.lib.rules.config.ConfigRuleClasses.ConfigSettingRule;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -236,11 +234,6 @@
.containsAll(constraintValues);
}
- private static RepositoryName getToolsRepository(RuleContext ruleContext) {
- return RepositoryName.createUnvalidated(
- ruleContext.attributes().get(ConfigSettingRule.TOOLS_REPOSITORY_ATTRIBUTE, Type.STRING));
- }
-
/**
* Returns whether the given label falls under the {@code //tools} package (including subpackages)
* of the tools repository.
@@ -312,28 +305,6 @@
continue;
}
- SelectRestriction selectRestriction = options.getSelectRestriction(optionName);
- if (selectRestriction != null) {
- boolean underToolsPackage =
- isUnderToolsPackage(ruleContext.getRule().getLabel(), getToolsRepository(ruleContext));
- if (!(selectRestriction.isVisibleWithinToolsPackage() && underToolsPackage)) {
- String errorMessage =
- String.format("option '%s' cannot be used in a config_setting", optionName);
- if (selectRestriction.isVisibleWithinToolsPackage()) {
- errorMessage +=
- String.format(
- " (it is allowlisted to %s//tools/... only)",
- getToolsRepository(ruleContext).getCanonicalForm());
- }
- if (selectRestriction.getErrorMessage() != null) {
- errorMessage += ". " + selectRestriction.getErrorMessage();
- }
- ruleContext.attributeError(ConfigSettingRule.SETTINGS_ATTRIBUTE, errorMessage);
- foundMismatch = true;
- continue;
- }
- }
-
OptionsParser parser;
try {
parser = OptionsParser.builder().optionsClasses(optionClass).build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PythonOptions.java b/src/main/java/com/google/devtools/build/lib/rules/python/PythonOptions.java
index 5b0855e..9360413 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PythonOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PythonOptions.java
@@ -16,20 +16,16 @@
import com.google.common.base.Ascii;
import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.config.CoreOptionConverters.LabelConverter;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.common.options.Converter;
import com.google.devtools.common.options.Option;
-import com.google.devtools.common.options.OptionDefinition;
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 com.google.devtools.common.options.OptionsParsingException;
import com.google.devtools.common.options.TriState;
-import java.util.Map;
/**
* Python-related command-line options.
@@ -171,9 +167,6 @@
+ "version) so there is usually not much reason to supply this flag.")
public PythonVersion pythonVersion;
- private static final OptionDefinition PYTHON_VERSION_DEFINITION =
- OptionsParser.getOptionDefinitionByName(PythonOptions.class, "python_version");
-
/**
* Deprecated machinery for setting the Python version; will be removed soon.
*
@@ -188,9 +181,6 @@
help = "No-op, will be removed soon.")
public PythonVersion forcePython;
- private static final OptionDefinition FORCE_PYTHON_DEFINITION =
- OptionsParser.getOptionDefinitionByName(PythonOptions.class, "force_python");
-
/**
* This field should be either null (unset), {@code PY2}, or {@code PY3}. Other {@code
* PythonVersion} values do not represent distinct Python versions and are not allowed.
@@ -209,9 +199,6 @@
help = "Overrides the Python version for the exec configuration. Can be \"PY2\" or \"PY3\".")
public PythonVersion hostForcePython;
- private static final OptionDefinition HOST_FORCE_PYTHON_DEFINITION =
- OptionsParser.getOptionDefinitionByName(PythonOptions.class, "host_force_python");
-
// TODO(b/230490091): Delete this flag (see also bazelbuild issue #7741)
@Option(
name = "incompatible_disallow_legacy_py_provider",
@@ -275,29 +262,6 @@
// Helper field to store hostForcePython in exec configuration
private PythonVersion defaultPythonVersion = null;
- @Override
- public Map<OptionDefinition, SelectRestriction> getSelectRestrictions() {
- // TODO(brandjon): Instead of referencing the python_version target, whose path depends on the
- // tools repo name, reference a standalone documentation page instead.
- ImmutableMap.Builder<OptionDefinition, SelectRestriction> restrictions = ImmutableMap.builder();
- restrictions.put(
- PYTHON_VERSION_DEFINITION,
- new SelectRestriction(
- /* visibleWithinToolsPackage= */ true,
- "Use @bazel_tools//python/tools:python_version instead."));
- restrictions.put(
- FORCE_PYTHON_DEFINITION,
- new SelectRestriction(
- /* visibleWithinToolsPackage= */ true,
- "Use @bazel_tools//python/tools:python_version instead."));
- restrictions.put(
- HOST_FORCE_PYTHON_DEFINITION,
- new SelectRestriction(
- /* visibleWithinToolsPackage= */ false,
- "Use @bazel_tools//python/tools:python_version instead."));
- return restrictions.buildOrThrow();
- }
-
/**
* Returns the Python major version ({@code PY2} or {@code PY3}) that targets that do not specify
* a version should be built for.
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionDetailsTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionDetailsTest.java
index 96fa6f5..fa6231b 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionDetailsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionDetailsTest.java
@@ -21,13 +21,11 @@
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.common.options.Converter;
import com.google.devtools.common.options.Option;
-import com.google.devtools.common.options.OptionDefinition;
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.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -112,9 +110,6 @@
metadataTags = {OptionMetadataTag.INTERNAL})
public String internalOption;
- private static final OptionDefinition INTERNAL_OPTION_DEFINITION =
- OptionsParser.getOptionDefinitionByName(Options.class, "internal option");
-
@Option(
name = "internal multi option",
documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
@@ -123,25 +118,6 @@
metadataTags = {OptionMetadataTag.INTERNAL},
allowMultiple = true)
public List<String> internalMultiOption;
-
- @Option(
- name = "nonselectable_option",
- documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
- effectTags = {OptionEffectTag.NO_OP},
- defaultValue = "true")
- public boolean nonselectableOption;
-
- private static final OptionDefinition NONSELECTABLE_OPTION_DEFINITION =
- OptionsParser.getOptionDefinitionByName(Options.class, "nonselectable_option");
-
- @Override
- public Map<OptionDefinition, SelectRestriction> getSelectRestrictions() {
- return ImmutableMap.of(
- NONSELECTABLE_OPTION_DEFINITION,
- new SelectRestriction(/*visibleWithinToolsPackage=*/ false, /*errorMessage=*/ null),
- INTERNAL_OPTION_DEFINITION,
- new SelectRestriction(/*visibleWithinToolsPackage=*/ false, /*errorMessage=*/ null));
- }
}
/** Additional options class for testing options lookup. */
@@ -322,36 +298,6 @@
}
@Test
- public void getSelectRestrictions_ReturnsNullByDefault() throws Exception {
- // This is also a test of the default behavior of FragmentOptions#getSelectRestrictions.
- BuildOptionDetails details =
- BuildOptionDetails.forOptionsForTesting(
- parseOptions(ImmutableList.of(MoreOptions.class)));
- assertThat(details.getSelectRestriction("other_option")).isNull();
- }
-
- @Test
- public void getSelectRestriction_RetrievesRestrictionObject() throws Exception {
- BuildOptionDetails details =
- BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class)));
- assertThat(details.getSelectRestriction("nonselectable_option")).isNotNull();
- }
-
- @Test
- public void getSelectRestriction_ReturnsNullForUndefinedOption() throws Exception {
- BuildOptionDetails details =
- BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class)));
- assertThat(details.getSelectRestriction("undefined_option")).isNull();
- }
-
- @Test
- public void isSelectable_ReturnsNullForInternalOption() throws Exception {
- BuildOptionDetails details =
- BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class)));
- assertThat(details.getSelectRestriction("internal option")).isNull();
- }
-
- @Test
public void starlarkOptions() throws Exception {
BuildOptionDetails details =
BuildOptionDetails.forOptions(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java
index 5039253..8fdc690 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java
@@ -15,7 +15,6 @@
import static com.google.common.truth.Truth.assertThat;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
@@ -29,19 +28,15 @@
import com.google.devtools.build.lib.packages.License.LicenseType;
import com.google.devtools.build.lib.packages.RawAttributeMapper;
import com.google.devtools.build.lib.packages.Rule;
-import com.google.devtools.build.lib.testutil.TestConstants;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import com.google.devtools.common.options.Converters.CommaSeparatedOptionListConverter;
import com.google.devtools.common.options.Option;
-import com.google.devtools.common.options.OptionDefinition;
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 com.google.testing.junit.testparameterinjector.TestParameterInjector;
import com.google.testing.junit.testparameterinjector.TestParameters;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -63,51 +58,6 @@
public String internalOption;
@Option(
- name = "nonselectable_option",
- documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
- effectTags = {OptionEffectTag.NO_OP},
- defaultValue = "true")
- public boolean nonselectableOption;
-
- private static final OptionDefinition NONSELECTABLE_OPTION_DEFINITION =
- OptionsParser.getOptionDefinitionByName(DummyTestOptions.class, "nonselectable_option");
-
- @Option(
- name = "nonselectable_allowlisted_option",
- documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
- effectTags = {OptionEffectTag.NO_OP},
- defaultValue = "true")
- public boolean nonselectableAllowlistedOption;
-
- private static final OptionDefinition NONSELECTABLE_ALLOWLISTED_OPTION_DEFINITION =
- OptionsParser.getOptionDefinitionByName(
- DummyTestOptions.class, "nonselectable_allowlisted_option");
-
- @Option(
- name = "nonselectable_custom_message_option",
- documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
- effectTags = {OptionEffectTag.NO_OP},
- defaultValue = "true")
- public boolean nonselectableCustomMessageOption;
-
- private static final OptionDefinition NONSELECTABLE_CUSTOM_MESSAGE_OPTION_DEFINITION =
- OptionsParser.getOptionDefinitionByName(
- DummyTestOptions.class, "nonselectable_custom_message_option");
-
- @Override
- public Map<OptionDefinition, SelectRestriction> getSelectRestrictions() {
- return ImmutableMap.of(
- NONSELECTABLE_OPTION_DEFINITION,
- new SelectRestriction(/*visibleWithinToolsPackage=*/ false, /*errorMessage=*/ null),
- NONSELECTABLE_ALLOWLISTED_OPTION_DEFINITION,
- new SelectRestriction(/*visibleWithinToolsPackage=*/ true, /*errorMessage=*/ null),
- NONSELECTABLE_CUSTOM_MESSAGE_OPTION_DEFINITION,
- new SelectRestriction(
- /*visibleWithinToolsPackage=*/ false,
- /*errorMessage=*/ "For very important reasons."));
- }
-
- @Option(
name = "allow_multiple_option",
defaultValue = "null",
converter = CommaSeparatedOptionListConverter.class,
@@ -290,71 +240,6 @@
" })");
}
- /** Tests that analysis fails on non-selectable options. */
- @Test
- public void nonselectableOption() throws Exception {
- checkError(
- "foo",
- "badoption",
- "option 'nonselectable_option' cannot be used in a config_setting",
- "config_setting(",
- " name = 'badoption',",
- " values = {",
- " 'nonselectable_option': 'true',",
- " },",
- ")");
- }
-
- /**
- * Tests that allowlisted non-selectable options can't be accessed outside of the tools package.
- */
- @Test
- public void nonselectableAllowlistedOption_OutOfToolsPackage() throws Exception {
- checkError(
- "foo",
- "badoption",
- String.format(
- "option 'nonselectable_allowlisted_option' cannot be used in a config_setting (it is "
- + "allowlisted to %s//tools/... only)",
- TestConstants.TOOLS_REPOSITORY.getCanonicalForm()),
- "config_setting(",
- " name = 'badoption',",
- " values = {",
- " 'nonselectable_allowlisted_option': 'true',",
- " },",
- ")");
- }
-
- /** Tests that allowlisted non-selectable options can be accessed within the tools package. */
- @Test
- public void nonselectableAllowlistedOption_InToolsPackage() throws Exception {
- scratch.file(
- TestConstants.TOOLS_REPOSITORY_SCRATCH + "tools/pkg/BUILD",
- "config_setting(",
- " name = 'foo',",
- " values = {",
- " 'nonselectable_allowlisted_option': 'true',",
- " })");
- String fooLabel = TestConstants.TOOLS_REPOSITORY + "//tools/pkg:foo";
- assertThat(getConfigMatchingProviderResultAsBoolean(fooLabel)).isTrue();
- }
-
- /** Tests that custom error messages are displayed for non-selectable options. */
- @Test
- public void nonselectableCustomMessageOption() throws Exception {
- checkError(
- "foo",
- "badoption",
- "option 'nonselectable_custom_message_option' cannot be used in a config_setting. "
- + "For very important reasons.",
- "config_setting(",
- " name = 'badoption',",
- " values = {",
- " 'nonselectable_custom_message_option': 'true',",
- " },",
- ")");
- }
-
/** Tests that None is not specifiable for a key's value. */
@Test
public void noneValueInSetting() throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/rules/python/PythonVersionSelectTest.java b/src/test/java/com/google/devtools/build/lib/rules/python/PythonVersionSelectTest.java
index cdbe595..49f9fc0 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/python/PythonVersionSelectTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/python/PythonVersionSelectTest.java
@@ -32,59 +32,6 @@
@RunWith(JUnit4.class)
public class PythonVersionSelectTest extends BuildViewTestCase {
- private static String join(String... args) {
- return String.join("\n", args);
- }
-
- /**
- * Returns the lines of a BUILD file that defines a target {@code foo} that {@code select()}s on
- * the given native flag.
- */
- private static String makeFooThatSelectsOnFlag(String flagName, String flagValue) {
- return join(
- "config_setting(",
- " name = 'cfgsetting',",
- " values = {'" + flagName + "': '" + flagValue + "'},",
- ")",
- "sh_binary(",
- " name = 'foo',",
- " srcs = select({",
- " ':cfgsetting': ['main.sh'],",
- " '//conditions:default': ['main.sh'],",
- " }),",
- ")");
- }
-
- @Test
- public void cannotSelectOnNativePythonVersionFlag() throws Exception {
- checkError(
- "pkg",
- "foo",
- // error:
- "option 'python_version' cannot be used in a config_setting",
- // build file:
- makeFooThatSelectsOnFlag("python_version", "PY2"));
- }
-
- // TODO(brandjon): Delete this test case when we delete these flags.
- @Test
- public void cannotSelectOnForcePythonFlags() throws Exception {
- checkError(
- "fp",
- "foo",
- // error:
- "option 'force_python' cannot be used in a config_setting",
- // build file:
- makeFooThatSelectsOnFlag("force_python", "PY2"));
- checkError(
- "hfp",
- "foo",
- // error:
- "option 'host_force_python' cannot be used in a config_setting",
- // build file:
- makeFooThatSelectsOnFlag("host_force_python", "PY2"));
- }
-
/**
* Tests the python_version selectable target, which is the canonical way of determining the
* Python version from within a select().