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().