Turn on Bzlmod for all `BuildViewTestCase`s

Notable changes:

- No more injected PrecomputedValue boilerplate to enable Bzlmod; it's all built into BuildViewTestCase
- All "mocked" repos are turned into builtin modules

PiperOrigin-RevId: 573163786
Change-Id: I952bfa8b1cc964c2de4e90e58fb97140cd2475fd
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunction.java
index 5591c8c..a23e2a7 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunction.java
@@ -26,6 +26,7 @@
 import com.google.devtools.build.lib.cmdline.RepositoryName;
 import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException;
 import com.google.devtools.build.lib.packages.Package;
+import com.google.devtools.build.lib.packages.RuleClassProvider;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import com.google.devtools.build.skyframe.SkyFunction;
 import com.google.devtools.build.skyframe.SkyFunctionException;
@@ -40,6 +41,11 @@
 
 /** {@link SkyFunction} for {@link RepositoryMappingValue}s. */
 public class RepositoryMappingFunction implements SkyFunction {
+  private final RuleClassProvider ruleClassProvider;
+
+  public RepositoryMappingFunction(RuleClassProvider ruleClassProvider) {
+    this.ruleClassProvider = ruleClassProvider;
+  }
 
   @Nullable
   @Override
@@ -58,7 +64,10 @@
         // such as @platforms.
         RepositoryMappingValue bazelToolsMapping =
             (RepositoryMappingValue)
-                env.getValue(RepositoryMappingValue.key(RepositoryName.BAZEL_TOOLS));
+                env.getValue(
+                    RepositoryMappingValue.Key.create(
+                        ruleClassProvider.getToolsRepository(),
+                        /* rootModuleShouldSeeWorkspaceRepos= */ false));
         if (bazelToolsMapping == null) {
           return null;
         }
@@ -76,7 +85,9 @@
                         RepositoryName.MAIN),
                     StarlarkBuiltinsValue.BUILTINS_REPO)
                 .withAdditionalMappings(bazelToolsMapping.getRepositoryMapping()),
-            "bazel_tools",
+            // The "associated module" doesn't exist here (@_builtins doesn't come from a module),
+            // so we just supply dummy values.
+            "",
             Version.EMPTY);
       }
 
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index 88a0e83..44f904a 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -714,7 +714,7 @@
     map.put(SkyFunctions.REGISTERED_TOOLCHAINS, new RegisteredToolchainsFunction());
     map.put(SkyFunctions.SINGLE_TOOLCHAIN_RESOLUTION, new SingleToolchainResolutionFunction());
     map.put(SkyFunctions.TOOLCHAIN_RESOLUTION, new ToolchainResolutionFunction());
-    map.put(SkyFunctions.REPOSITORY_MAPPING, new RepositoryMappingFunction());
+    map.put(SkyFunctions.REPOSITORY_MAPPING, new RepositoryMappingFunction(ruleClassProvider));
     map.put(SkyFunctions.RESOLVED_FILE, new ResolvedFileFunction());
     map.put(
         SkyFunctions.PLATFORM_MAPPING,
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
index 73a3ea6..54a9fbe 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
@@ -505,7 +505,7 @@
         .put(
             BzlmodRepoRuleValue.BZLMOD_REPO_RULE,
             new BzlmodRepoRuleFunction(ruleClassProvider, directories))
-        .put(SkyFunctions.REPOSITORY_MAPPING, new RepositoryMappingFunction())
+        .put(SkyFunctions.REPOSITORY_MAPPING, new RepositoryMappingFunction(ruleClassProvider))
         .put(
             SkyFunctions.PACKAGE,
             new PackageFunction(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AutoExecGroupsTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AutoExecGroupsTest.java
index 4279b3f..93ae96b 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AutoExecGroupsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AutoExecGroupsTest.java
@@ -1830,8 +1830,8 @@
             mockToolsConfig,
             CcToolchainConfig.builder()
                 .withFeatures(CppRuleClasses.THIN_LTO, CppRuleClasses.SUPPORTS_START_END_LIB)
-                .withToolchainTargetConstraints("@//platforms:constraint_1")
-                .withToolchainExecConstraints("@//platforms:constraint_1"));
+                .withToolchainTargetConstraints("@@//platforms:constraint_1")
+                .withToolchainExecConstraints("@@//platforms:constraint_1"));
 
     ImmutableList<Action> actions = getActions("//test:custom_rule_name", CppLinkAction.class);
     ImmutableList<Action> cppLTOActions =
@@ -2006,8 +2006,8 @@
             mockToolsConfig,
             CcToolchainConfig.builder()
                 .withFeatures(MockCcSupport.HEADER_MODULES_FEATURES)
-                .withToolchainTargetConstraints("@//platforms:constraint_1")
-                .withToolchainExecConstraints("@//platforms:constraint_1"));
+                .withToolchainTargetConstraints("@@//platforms:constraint_1")
+                .withToolchainExecConstraints("@@//platforms:constraint_1"));
 
     ImmutableList<Action> cppCompileActions =
         getActions("//bazel_internal/test_rules/cc:custom_rule_name", CppCompileAction.class);
@@ -2077,8 +2077,8 @@
             mockToolsConfig,
             CcToolchainConfig.builder()
                 .withFeatures(MockCcSupport.HEADER_MODULES_FEATURES)
-                .withToolchainTargetConstraints("@//platforms:constraint_1")
-                .withToolchainExecConstraints("@//platforms:constraint_1"));
+                .withToolchainTargetConstraints("@@//platforms:constraint_1")
+                .withToolchainExecConstraints("@@//platforms:constraint_1"));
 
     ImmutableList<Action> cppCompileActions =
         getActions("//bazel_internal/test_rules/cc:custom_rule_name", CppCompileAction.class);
@@ -2143,8 +2143,8 @@
             mockToolsConfig,
             CcToolchainConfig.builder()
                 .withFeatures(CppRuleClasses.PARSE_HEADERS)
-                .withToolchainTargetConstraints("@//platforms:constraint_1")
-                .withToolchainExecConstraints("@//platforms:constraint_1"));
+                .withToolchainTargetConstraints("@@//platforms:constraint_1")
+                .withToolchainExecConstraints("@@//platforms:constraint_1"));
 
     ImmutableList<Action> cppCompileActions =
         getActions("//bazel_internal/test_rules/cc:custom_rule_name", CppCompileAction.class);
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/LocationExpanderIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/analysis/LocationExpanderIntegrationTest.java
index 7a31156..951f810 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/LocationExpanderIntegrationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/LocationExpanderIntegrationTest.java
@@ -17,7 +17,6 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
-import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.ModifiedFileSet;
 import com.google.devtools.build.lib.vfs.Root;
@@ -138,21 +137,21 @@
     assertThat(expander.expand("foo $(rootpaths :foo) bar"))
         .matches("foo expansion/foo.txt bar");
     assertThat(expander.expand("foo $(rlocationpath :foo) bar"))
-        .isEqualTo("foo workspace/expansion/foo.txt bar");
+        .isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
     assertThat(expander.expand("foo $(rlocationpaths :foo) bar"))
-        .isEqualTo("foo workspace/expansion/foo.txt bar");
+        .isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
     assertThat(expander.expand("foo $(rlocationpath //expansion:foo) bar"))
-        .isEqualTo("foo workspace/expansion/foo.txt bar");
+        .isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
     assertThat(expander.expand("foo $(rlocationpaths //expansion:foo) bar"))
-        .isEqualTo("foo workspace/expansion/foo.txt bar");
+        .isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
     assertThat(expander.expand("foo $(rlocationpath @//expansion:foo) bar"))
-        .isEqualTo("foo workspace/expansion/foo.txt bar");
+        .isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
     assertThat(expander.expand("foo $(rlocationpaths @//expansion:foo) bar"))
-        .isEqualTo("foo workspace/expansion/foo.txt bar");
+        .isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
     assertThat(expander.expand("foo $(rlocationpath @workspace//expansion:foo) bar"))
-        .isEqualTo("foo workspace/expansion/foo.txt bar");
+        .isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
     assertThat(expander.expand("foo $(rlocationpaths @workspace//expansion:foo) bar"))
-        .isEqualTo("foo workspace/expansion/foo.txt bar");
+        .isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
   }
 
   @Test
@@ -262,6 +261,6 @@
     assertThat(expander.expand("foo $(rlocationpaths :foo) bar"))
         .isEqualTo(
             "foo __main__/expansion/bar.txt __main__/expansion/foo.txt bar"
-                .replace("__main__", TestConstants.WORKSPACE_NAME));
+                .replace("__main__", ruleClassProvider.getRunfilesPrefix()));
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/RunfilesRepoMappingManifestTest.java b/src/test/java/com/google/devtools/build/lib/analysis/RunfilesRepoMappingManifestTest.java
index 4517be1..e7949eb 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/RunfilesRepoMappingManifestTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/RunfilesRepoMappingManifestTest.java
@@ -22,20 +22,9 @@
 import com.google.devtools.build.lib.actions.Action;
 import com.google.devtools.build.lib.actions.CommandLineExpansionException;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.FakeRegistry;
-import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.BazelCompatibilityMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.CheckDirectDepsMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.LockfileMode;
 import com.google.devtools.build.lib.rules.repository.RepositoryDirectoryDirtinessChecker;
-import com.google.devtools.build.lib.skyframe.PrecomputedValue;
-import com.google.devtools.build.lib.skyframe.PrecomputedValue.Injected;
 import com.google.devtools.build.lib.skyframe.SkyframeExecutorRepositoryHelpersHolder;
 import com.google.devtools.build.lib.util.Fingerprint;
-import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import java.util.Map.Entry;
 import net.starlark.java.eval.EvalException;
@@ -48,25 +37,6 @@
 /** Tests that the repo mapping manifest file is properly generated for runfiles. */
 @RunWith(JUnit4.class)
 public class RunfilesRepoMappingManifestTest extends BuildViewTestCase {
-  private Path moduleRoot;
-  private FakeRegistry registry;
-
-  @Override
-  protected ImmutableList<Injected> extraPrecomputedValues() throws Exception {
-    moduleRoot = scratch.dir("modules");
-    registry = FakeRegistry.DEFAULT_FACTORY.newFakeRegistry(moduleRoot.getPathString());
-    return ImmutableList.of(
-        PrecomputedValue.injected(
-            ModuleFileFunction.REGISTRIES, ImmutableList.of(registry.getUrl())),
-        PrecomputedValue.injected(ModuleFileFunction.IGNORE_DEV_DEPS, false),
-        PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.CHECK_DIRECT_DEPENDENCIES, CheckDirectDepsMode.WARNING),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.BAZEL_COMPATIBILITY_MODE, BazelCompatibilityMode.ERROR),
-        PrecomputedValue.injected(BazelLockFileFunction.LOCKFILE_MODE, LockfileMode.UPDATE),
-        PrecomputedValue.injected(YankedVersionsUtil.ALLOWED_YANKED_VERSIONS, ImmutableList.of()));
-  }
 
   @Override
   protected SkyframeExecutorRepositoryHelpersHolder getRepositoryHelpersHolder() {
@@ -76,11 +46,6 @@
         new RepositoryDirectoryDirtinessChecker());
   }
 
-  @Before
-  public void enableBzlmod() throws Exception {
-    setBuildLanguageOptions("--enable_bzlmod");
-  }
-
   /**
    * Sets up a Bazel module bare_rule@1.0, which provides a bare_binary rule that passes along
    * runfiles in the data attribute, and does nothing else.
@@ -269,6 +234,7 @@
         "bazel_dep(name='bare_rule',version='1.0')");
     scratch.overwriteFile(
         "BUILD", "load('@bare_rule//:defs.bzl', 'bare_binary')", "bare_binary(name='aaa')");
+    invalidatePackages();
 
     RepoMappingManifestAction actionBeforeChange = getRepoMappingManifestActionForTarget("//:aaa");
 
@@ -288,6 +254,7 @@
         "bazel_dep(name='bare_rule',version='1.0')");
     scratch.overwriteFile(
         "BUILD", "load('@bare_rule//:defs.bzl', 'bare_binary')", "bare_binary(name='aaa')");
+    invalidatePackages();
 
     RepoMappingManifestAction actionBeforeChange = getRepoMappingManifestActionForTarget("//:aaa");
 
@@ -320,6 +287,7 @@
     scratch.overwriteFile(moduleRoot.getRelative("bbb~1.0").getRelative("BUILD").getPathString());
     scratch.overwriteFile(
         moduleRoot.getRelative("bbb~1.0").getRelative("def.bzl").getPathString(), "BBB = '1'");
+    invalidatePackages();
 
     RepoMappingManifestAction actionBeforeChange = getRepoMappingManifestActionForTarget("//:aaa");
 
@@ -391,6 +359,7 @@
         moduleRoot.getRelative("ddd~1.0/BUILD").getPathString(),
         "load('@bare_rule//:defs.bzl', 'bare_binary')",
         "bare_binary(name='ddd')");
+    invalidatePackages();
 
     RunfilesSupport runfilesSupport = getRunfilesSupport("@aaa~1.0//:aaa");
     ImmutableList<String> runfilesPaths =
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java
index efead04..d5cc1a2 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java
@@ -617,7 +617,7 @@
         "settings_under_test = {",
         "  '//command_line_option:cpu': 'armeabi-v7a',",
         "  '//command_line_option:compilation_mode': 'dbg',",
-        "  '//command_line_option:crosstool_top': '@//android/crosstool:everything',",
+        "  '//command_line_option:crosstool_top': '@@//android/crosstool:everything',",
         "  '//command_line_option:platform_suffix': 'my-platform-suffix',",
         "}",
         "def set_options_transition_func(settings, attr):",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java
index c52d316..48920e7 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java
@@ -27,21 +27,11 @@
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
 import com.google.devtools.build.lib.analysis.util.DummyTestFragment;
 import com.google.devtools.build.lib.analysis.util.DummyTestFragment.DummyTestOptions;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.FakeRegistry;
-import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.BazelCompatibilityMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.CheckDirectDepsMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.LockfileMode;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.Rule;
 import com.google.devtools.build.lib.packages.RuleTransitionData;
 import com.google.devtools.build.lib.rules.cpp.CppOptions;
 import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
-import com.google.devtools.build.lib.skyframe.PrecomputedValue;
-import com.google.devtools.build.lib.skyframe.PrecomputedValue.Injected;
 import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.vfs.ModifiedFileSet;
@@ -49,7 +39,6 @@
 import com.google.devtools.build.lib.vfs.Root;
 import com.google.testing.junit.testparameterinjector.TestParameterInjector;
 import com.google.testing.junit.testparameterinjector.TestParameters;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -60,28 +49,6 @@
 /** Tests for StarlarkRuleTransitionProvider. */
 @RunWith(TestParameterInjector.class)
 public final class StarlarkRuleTransitionProviderTest extends BuildViewTestCase {
-  private FakeRegistry registry;
-
-  @Override
-  protected ImmutableList<Injected> extraPrecomputedValues() {
-    try {
-      registry =
-          FakeRegistry.DEFAULT_FACTORY.newFakeRegistry(scratch.dir("modules").getPathString());
-    } catch (IOException e) {
-      throw new IllegalStateException(e);
-    }
-    return ImmutableList.of(
-        PrecomputedValue.injected(
-            ModuleFileFunction.REGISTRIES, ImmutableList.of(registry.getUrl())),
-        PrecomputedValue.injected(ModuleFileFunction.IGNORE_DEV_DEPS, false),
-        PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()),
-        PrecomputedValue.injected(YankedVersionsUtil.ALLOWED_YANKED_VERSIONS, ImmutableList.of()),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.CHECK_DIRECT_DEPENDENCIES, CheckDirectDepsMode.WARNING),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.BAZEL_COMPATIBILITY_MODE, BazelCompatibilityMode.ERROR),
-        PrecomputedValue.injected(BazelLockFileFunction.LOCKFILE_MODE, LockfileMode.UPDATE));
-  }
 
   @Override
   protected ConfiguredRuleClassProvider createRuleClassProvider() {
@@ -1320,7 +1287,7 @@
 
   @Test
   public void successfulTypeConversionOfNativeListOption_unambiguousLabels() throws Exception {
-    setBuildLanguageOptions("--enable_bzlmod", "--incompatible_unambiguous_label_stringification");
+    setBuildLanguageOptions("--incompatible_unambiguous_label_stringification");
 
     scratch.overwriteFile("MODULE.bazel", "bazel_dep(name='rules_x',version='1.0')");
     registry.addModule(createModuleKey("rules_x", "1.0"), "module(name='rules_x', version='1.0')");
@@ -1358,6 +1325,8 @@
         "platform(name = 'my_platform')",
         "my_rule(name = 'test')");
 
+    invalidatePackages();
+
     getConfiguredTarget("//test");
     assertNoEvents();
   }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index 740ac5f..fec50b1 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -13,6 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.analysis.mock;
 
+import static com.google.common.collect.ImmutableMap.toImmutableMap;
 import static java.nio.charset.StandardCharsets.UTF_8;
 
 import com.google.common.collect.ImmutableList;
@@ -46,6 +47,7 @@
 import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 
 /** Subclass of {@link AnalysisMock} using Bazel-specific semantics. */
 public final class BazelAnalysisMock extends AnalysisMock {
@@ -126,13 +128,16 @@
   @Override
   public void setupMockClient(MockToolsConfig config, List<String> workspaceContents)
       throws IOException {
+    config.create("local_config_xcode_workspace/WORKSPACE");
     config.create("local_config_xcode_workspace/BUILD", "xcode_config(name = 'host_xcodes')");
     config.create(
+        "local_config_xcode_workspace/MODULE.bazel", "module(name = 'local_config_xcode')");
+    config.create(
         "protobuf_workspace/BUILD",
         "licenses(['notice'])",
         "exports_files(['protoc', 'cc_toolchain'])");
-    config.create("local_config_xcode_workspace/WORKSPACE");
     config.create("protobuf_workspace/WORKSPACE");
+    config.create("protobuf_workspace/MODULE.bazel", "module(name='com_google_protobuf')");
     config.overwrite("WORKSPACE", workspaceContents.toArray(new String[0]));
     /* The rest of platforms is initialized in {@link MockPlatformSupport}. */
     config.create("platforms_workspace/WORKSPACE", "workspace(name = 'platforms')");
@@ -142,6 +147,8 @@
     config.create(
         "local_config_platform_workspace/MODULE.bazel", "module(name = 'local_config_platform')");
     config.create("build_bazel_apple_support/WORKSPACE", "workspace(name = 'apple_support')");
+    config.create(
+        "build_bazel_apple_support/MODULE.bazel", "module(name = 'build_bazel_apple_support')");
     config.create("embedded_tools/WORKSPACE", "workspace(name = 'bazel_tools')");
     Runfiles runfiles = Runfiles.create();
     for (String filename :
@@ -401,11 +408,11 @@
         "embedded_tools/tools/allowlists/config_feature_flag/BUILD",
         "package_group(",
         "    name='config_feature_flag',",
-        "    includes=['@//tools/allowlists/config_feature_flag'],",
+        "    includes=['@@//tools/allowlists/config_feature_flag'],",
         ")",
         "package_group(",
         "    name='config_feature_flag_setter',",
-        "    includes=['@//tools/allowlists/config_feature_flag:config_feature_flag_setter'],",
+        "    includes=['@@//tools/allowlists/config_feature_flag:config_feature_flag_setter'],",
         ")");
 
     config.create(
@@ -506,6 +513,9 @@
         "    toolchain_type = '@rules_java//java/toolchains/javac:toolchain_type',",
         "    )");
 
+    config.create("third_party/bazel_rules/rules_proto/WORKSPACE");
+    config.create("third_party/bazel_rules/rules_proto/MODULE.bazel", "module(name='rules_proto')");
+
     MockPlatformSupport.setup(config);
     ccSupport().setup(config);
     pySupport().setup(config);
@@ -681,24 +691,28 @@
   }
 
   @Override
-  protected ImmutableMap<String, NonRegistryOverride> getBuiltinModules(
-      BlazeDirectories directories) {
-    return ImmutableMap.of(
-        "bazel_tools",
-        LocalPathOverride.create(
-            directories.getEmbeddedBinariesRoot().getRelative("embedded_tools").getPathString()),
-        "platforms",
-        LocalPathOverride.create(
-            directories
-                .getEmbeddedBinariesRoot()
-                .getRelative("platforms_workspace")
-                .getPathString()),
-        "rules_java",
-        LocalPathOverride.create(
-            directories
-                .getEmbeddedBinariesRoot()
-                .getRelative("rules_java_workspace")
-                .getPathString()));
+  public ImmutableMap<String, NonRegistryOverride> getBuiltinModules(BlazeDirectories directories) {
+    ImmutableMap<String, String> moduleNameToPath =
+        ImmutableMap.<String, String>builder()
+            .put("bazel_tools", "embedded_tools")
+            .put("platforms", "platforms_workspace")
+            .put("local_config_platform", "local_config_platform_workspace")
+            .put("rules_java", "rules_java_workspace")
+            .put("com_google_protobuf", "protobuf_workspace")
+            .put("rules_proto", "third_party/bazel_rules/rules_proto")
+            .put("build_bazel_apple_support", "build_bazel_apple_support")
+            .put("local_config_xcode", "local_config_xcode_workspace")
+            .buildOrThrow();
+    return moduleNameToPath.entrySet().stream()
+        .collect(
+            toImmutableMap(
+                Map.Entry::getKey,
+                e ->
+                    LocalPathOverride.create(
+                        directories
+                            .getWorkingDirectory()
+                            .getRelative(e.getValue())
+                            .getPathString())));
   }
 
   @Override
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/starlark/StarlarkSubruleTest.java b/src/test/java/com/google/devtools/build/lib/analysis/starlark/StarlarkSubruleTest.java
index 746efbe..2e9fa56 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/starlark/StarlarkSubruleTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/starlark/StarlarkSubruleTest.java
@@ -249,7 +249,7 @@
         getProvider("//subrule_testing:foo", "//subrule_testing:myrule.bzl", "MyInfo");
 
     assertThat(provider).isNotNull();
-    assertThat(provider.getValue("result")).isEqualTo("called in: @//subrule_testing:foo");
+    assertThat(provider.getValue("result")).isEqualTo("called in: @@//subrule_testing:foo");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/test/TestActionBuilderTest.java b/src/test/java/com/google/devtools/build/lib/analysis/test/TestActionBuilderTest.java
index fc61e3f..943aa82 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/test/TestActionBuilderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/test/TestActionBuilderTest.java
@@ -330,7 +330,7 @@
         new StarlarkProvider.Key(Label.parseCanonicalUnchecked("//:aspect.bzl"), "StructImpl");
     StructImpl info = (StructImpl) aspectValue.get(key);
     assertThat(((Depset) info.getValue("labels")).getSet(String.class).toList())
-        .containsExactly("@//:suite", "@//:test_a", "@//:test_b");
+        .containsExactly("@@//:suite", "@@//:test_a", "@@//:test_b");
   }
 
   @Test
@@ -363,7 +363,7 @@
         new StarlarkProvider.Key(Label.parseCanonicalUnchecked("//:aspect.bzl"), "StructImpl");
     StructImpl info = (StructImpl) aspectValue.get(key);
     assertThat(((Depset) info.getValue("labels")).getSet(String.class).toList())
-        .containsExactly("@//:suite", "@//:test_b");
+        .containsExactly("@@//:suite", "@@//:test_b");
   }
 
   @Test
@@ -396,7 +396,7 @@
       StructImpl info = (StructImpl) a.get(key);
       labels.addAll(((Depset) info.getValue("labels")).getSet(String.class).toList());
     }
-    assertThat(labels).containsExactly("@//:test_a", "@//:test_b");
+    assertThat(labels).containsExactly("@@//:test_a", "@@//:test_b");
   }
 
   private void writeLabelCollectionAspect() throws IOException {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
index 977c8c8..fdcfa58 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
@@ -15,6 +15,7 @@
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
 import com.google.devtools.build.lib.bazel.bzlmod.BazelDepGraphFunction;
@@ -24,6 +25,10 @@
 import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
 import com.google.devtools.build.lib.bazel.bzlmod.NonRegistryOverride;
 import com.google.devtools.build.lib.bazel.bzlmod.RepoSpecFunction;
+import com.google.devtools.build.lib.bazel.bzlmod.SingleExtensionEvalFunction;
+import com.google.devtools.build.lib.bazel.bzlmod.SingleExtensionUsagesFunction;
+import com.google.devtools.build.lib.bazel.repository.downloader.DownloadManager;
+import com.google.devtools.build.lib.bazel.repository.starlark.StarlarkRepositoryFunction;
 import com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryFunction;
 import com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryRule;
 import com.google.devtools.build.lib.bazel.rules.android.AndroidSdkRepositoryFunction;
@@ -49,6 +54,7 @@
 import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
+import org.mockito.Mockito;
 
 /** Create a mock client for the analysis phase, as well as a configuration factory. */
 public abstract class AnalysisMock extends LoadingMock {
@@ -127,30 +133,36 @@
 
     addExtraRepositoryFunctions(repositoryHandlers);
 
-    return ImmutableMap.of(
-        SkyFunctions.REPOSITORY_DIRECTORY,
-        new RepositoryDelegatorFunction(
-            repositoryHandlers.build(),
-            null,
-            new AtomicBoolean(true),
-            ImmutableMap::of,
-            directories,
-            BazelSkyframeExecutorConstants.EXTERNAL_PACKAGE_HELPER),
-        SkyFunctions.MODULE_FILE,
-        new ModuleFileFunction(
-            FakeRegistry.DEFAULT_FACTORY,
-            directories.getWorkspace(),
-            getBuiltinModules(directories)),
-        SkyFunctions.BAZEL_DEP_GRAPH,
-        new BazelDepGraphFunction(),
-        SkyFunctions.BAZEL_LOCK_FILE,
-        new BazelLockFileFunction(directories.getWorkspace()),
-        SkyFunctions.BAZEL_MODULE_RESOLUTION,
-        new BazelModuleResolutionFunction(),
-        SkyFunctions.REPO_SPEC,
-        new RepoSpecFunction(FakeRegistry.DEFAULT_FACTORY),
-        SkyFunctions.CLIENT_ENVIRONMENT_VARIABLE,
-        new ClientEnvironmentFunction(new AtomicReference<>(ImmutableMap.of())));
+    DownloadManager downloadManager = Mockito.mock(DownloadManager.class);
+
+    return ImmutableMap.<SkyFunctionName, SkyFunction>builder()
+        .put(
+            SkyFunctions.REPOSITORY_DIRECTORY,
+            new RepositoryDelegatorFunction(
+                repositoryHandlers.buildKeepingLast(),
+                new StarlarkRepositoryFunction(downloadManager),
+                new AtomicBoolean(true),
+                ImmutableMap::of,
+                directories,
+                BazelSkyframeExecutorConstants.EXTERNAL_PACKAGE_HELPER))
+        .put(
+            SkyFunctions.MODULE_FILE,
+            new ModuleFileFunction(
+                FakeRegistry.DEFAULT_FACTORY,
+                directories.getWorkspace(),
+                getBuiltinModules(directories)))
+        .put(SkyFunctions.BAZEL_DEP_GRAPH, new BazelDepGraphFunction())
+        .put(SkyFunctions.BAZEL_LOCK_FILE, new BazelLockFileFunction(directories.getWorkspace()))
+        .put(SkyFunctions.BAZEL_MODULE_RESOLUTION, new BazelModuleResolutionFunction())
+        .put(
+            SkyFunctions.SINGLE_EXTENSION_EVAL,
+            new SingleExtensionEvalFunction(directories, ImmutableMap::of, downloadManager))
+        .put(SkyFunctions.SINGLE_EXTENSION_USAGES, new SingleExtensionUsagesFunction())
+        .put(SkyFunctions.REPO_SPEC, new RepoSpecFunction(FakeRegistry.DEFAULT_FACTORY))
+        .put(
+            SkyFunctions.CLIENT_ENVIRONMENT_VARIABLE,
+            new ClientEnvironmentFunction(new AtomicReference<>(ImmutableMap.of())))
+        .buildOrThrow();
   }
 
   // Allow subclasses to add extra repository functions.
@@ -158,7 +170,7 @@
       ImmutableMap.Builder<String, RepositoryFunction> repositoryHandlers);
 
   /** Returns the built-in modules. */
-  protected abstract ImmutableMap<String, NonRegistryOverride> getBuiltinModules(
+  public abstract ImmutableMap<String, NonRegistryOverride> getBuiltinModules(
       BlazeDirectories directories);
 
   /**
@@ -222,11 +234,22 @@
     @Override
     public ImmutableMap<SkyFunctionName, SkyFunction> getSkyFunctions(
         BlazeDirectories directories) {
-      return delegate.getSkyFunctions(directories);
+      return ImmutableMap.<SkyFunctionName, SkyFunction>builder()
+          .putAll(
+              Maps.filterKeys(
+                  super.getSkyFunctions(directories),
+                  fnName -> !fnName.equals(SkyFunctions.MODULE_FILE)))
+          .put(
+              SkyFunctions.MODULE_FILE,
+              new ModuleFileFunction(
+                  FakeRegistry.DEFAULT_FACTORY,
+                  directories.getWorkspace(),
+                  getBuiltinModules(directories)))
+          .buildOrThrow();
     }
 
     @Override
-    protected ImmutableMap<String, NonRegistryOverride> getBuiltinModules(
+    public ImmutableMap<String, NonRegistryOverride> getBuiltinModules(
         BlazeDirectories directories) {
       return delegate.getBuiltinModules(directories);
     }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
index 792e1a3..b5d6f3c 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
@@ -195,7 +195,6 @@
             analysisMock.getProductName());
     workspaceStatusActionFactory = new AnalysisTestUtil.DummyWorkspaceStatusActionFactory();
 
-    scratch.file(rootDirectory.getRelative("MODULE.bazel").getPathString(), "");
     moduleRoot = scratch.dir("modules");
     registry = FakeRegistry.DEFAULT_FACTORY.newFakeRegistry(moduleRoot.getPathString());
 
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD
index f3d85dd..f37bec1 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD
@@ -82,6 +82,8 @@
         "//src/main/java/com/google/devtools/build/lib/bazel/bzlmod:resolution",
         "//src/main/java/com/google/devtools/build/lib/bazel/bzlmod:resolution_impl",
         "//src/main/java/com/google/devtools/build/lib/bazel/repository:repository_options",
+        "//src/main/java/com/google/devtools/build/lib/bazel/repository/downloader",
+        "//src/main/java/com/google/devtools/build/lib/bazel/repository/starlark",
         "//src/main/java/com/google/devtools/build/lib/bazel/rules/android",
         "//src/main/java/com/google/devtools/build/lib/bugreport",
         "//src/main/java/com/google/devtools/build/lib/clock",
@@ -139,6 +141,7 @@
         "//third_party:guava",
         "//third_party:jsr305",
         "//third_party:junit4",
+        "//third_party:mockito",
         "//third_party:truth",
     ],
 )
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index 93492e9..f123d75 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -106,7 +106,14 @@
 import com.google.devtools.build.lib.analysis.starlark.StarlarkTransition.TransitionException;
 import com.google.devtools.build.lib.analysis.test.BaselineCoverageAction;
 import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
+import com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction;
+import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionFunction;
+import com.google.devtools.build.lib.bazel.bzlmod.FakeRegistry;
 import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
+import com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil;
+import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.BazelCompatibilityMode;
+import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.CheckDirectDepsMode;
+import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.LockfileMode;
 import com.google.devtools.build.lib.buildtool.BuildRequestOptions;
 import com.google.devtools.build.lib.clock.BlazeClock;
 import com.google.devtools.build.lib.cmdline.Label;
@@ -226,6 +233,9 @@
   protected BlazeDirectories directories;
   protected ActionKeyContext actionKeyContext;
 
+  protected Path moduleRoot;
+  protected FakeRegistry registry;
+
   // Note that these configurations are virtual (they use only VFS)
   protected BuildConfigurationValue targetConfig; // "target" or "build" config
   protected BuildConfigurationValue execConfig;
@@ -273,6 +283,8 @@
             rootDirectory,
             /* defaultSystemJavabase= */ null,
             analysisMock.getProductName());
+    moduleRoot = scratch.dir("modules");
+    registry = FakeRegistry.DEFAULT_FACTORY.newFakeRegistry(moduleRoot.getPathString());
 
     actionKeyContext = new ActionKeyContext();
     mockToolsConfig = new MockToolsConfig(rootDirectory, false);
@@ -287,9 +299,6 @@
     getOutputPath().createDirectoryAndParents();
     ImmutableList<PrecomputedValue.Injected> extraPrecomputedValues =
         ImmutableList.<PrecomputedValue.Injected>builder()
-            .add(
-                PrecomputedValue.injected(
-                    PrecomputedValue.STARLARK_SEMANTICS, StarlarkSemantics.DEFAULT))
             .add(PrecomputedValue.injected(PrecomputedValue.REPO_ENV, ImmutableMap.of()))
             .add(PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()))
             .add(
@@ -307,6 +316,24 @@
                 PrecomputedValue.injected(
                     BuildInfoCollectionFunction.BUILD_INFO_FACTORIES,
                     ruleClassProvider.getBuildInfoFactoriesAsMap()))
+            .add(
+                PrecomputedValue.injected(
+                    ModuleFileFunction.REGISTRIES, ImmutableList.of(registry.getUrl())))
+            .add(PrecomputedValue.injected(ModuleFileFunction.IGNORE_DEV_DEPS, false))
+            .add(PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()))
+            .add(
+                PrecomputedValue.injected(
+                    YankedVersionsUtil.ALLOWED_YANKED_VERSIONS, ImmutableList.of()))
+            .add(
+                PrecomputedValue.injected(
+                    BazelModuleResolutionFunction.CHECK_DIRECT_DEPENDENCIES,
+                    CheckDirectDepsMode.WARNING))
+            .add(
+                PrecomputedValue.injected(
+                    BazelModuleResolutionFunction.BAZEL_COMPATIBILITY_MODE,
+                    BazelCompatibilityMode.ERROR))
+            .add(
+                PrecomputedValue.injected(BazelLockFileFunction.LOCKFILE_MODE, LockfileMode.UPDATE))
             .addAll(extraPrecomputedValues())
             .build();
     PackageFactory.BuilderForTesting pkgFactoryBuilder =
@@ -557,6 +584,7 @@
     if (!analysisMock.isThisBazel()) {
       parser.parse("--experimental_google_legacy_api"); // For starlark java_binary;
     }
+    parser.parse("--enable_bzlmod");
     parser.parse(options);
     return parser.getOptions(BuildLanguageOptions.class);
   }
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelDepGraphFunctionTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelDepGraphFunctionTest.java
index e6bf528..f563b3b 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelDepGraphFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelDepGraphFunctionTest.java
@@ -153,10 +153,6 @@
 
   @Test
   public void createValue_basic() throws Exception {
-    scratch.file(
-        rootDirectory.getRelative("MODULE.bazel").getPathString(),
-        "module(name='my_root', version='1.0')");
-
     // Root depends on dep@1.0 and dep@2.0 at the same time with a multiple-version override.
     // Root also depends on rules_cc as a normal dep.
     // dep@1.0 depends on rules_java, which is overridden by a non-registry override (see below).
@@ -227,10 +223,6 @@
 
   @Test
   public void createValue_moduleExtensions() throws Exception {
-    scratch.file(
-        rootDirectory.getRelative("MODULE.bazel").getPathString(),
-        "module(name='my_root', version='1.0')");
-
     Module root =
         buildModule("root", "1.0")
             .setKey(ModuleKey.ROOT)
@@ -329,10 +321,6 @@
 
   @Test
   public void useExtensionBadLabelFails() throws Exception {
-    scratch.file(
-        rootDirectory.getRelative("MODULE.bazel").getPathString(),
-        "module(name='module', version='1.0')");
-
     Module root =
         buildModule("module", "1.0")
             .addExtensionUsage(createModuleExtensionUsage("@foo//:defs.bzl", "bar"))
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelLockFileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelLockFileFunctionTest.java
index 938d72e..dcd6b49 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelLockFileFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelLockFileFunctionTest.java
@@ -217,7 +217,7 @@
 
   @Test
   public void simpleModule() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='my_root', version='1.0')",
         "bazel_dep(name = 'dep_1', version = '1.0')",
@@ -258,7 +258,7 @@
   public void moduleWithFlags() throws Exception {
     // Test having --override_module, --ignore_dev_dependency, --check_bazel_compatibility
     // --check_direct_dependencies & --registry
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='my_root', version='1.0')");
 
@@ -317,7 +317,7 @@
 
   @Test
   public void moduleWithLocalOverrides() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='root',version='0.1')",
         "local_path_override(module_name='ss',path='code_for_ss')");
@@ -360,7 +360,7 @@
 
   @Test
   public void fullModule() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='my_root', version='1.0')",
         "register_toolchains('//my:toolchain', '//my:toolchain2')",
@@ -404,7 +404,7 @@
 
   @Test
   public void invalidLockfileEmptyFile() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='my_root', version='1.0')");
 
@@ -447,7 +447,7 @@
 
   @Test
   public void invalidLockfileNullFlag() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='my_root', version='1.0')");
 
@@ -491,7 +491,7 @@
 
   @Test
   public void invalidLockfileMalformed() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='my_root', version='1.0')");
 
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunctionTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunctionTest.java
index a5c5ba6..aeceea9 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunctionTest.java
@@ -137,7 +137,7 @@
 
   @Test
   public void testBazelInvalidCompatibility() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='mod', version='1.0', bazel_compatibility=['>5.1.0dd'])");
 
@@ -151,7 +151,7 @@
 
   @Test
   public void testSimpleBazelCompatibilityFailure() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='mod', version='1.0', bazel_compatibility=['>5.1.0', '<5.1.4'])");
 
@@ -168,7 +168,7 @@
 
   @Test
   public void testBazelCompatibilityWarning() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='mod', version='1.0', bazel_compatibility=['>5.1.0', '<5.1.4'])");
 
@@ -186,7 +186,7 @@
 
   @Test
   public void testDisablingBazelCompatibility() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='mod', version='1.0', bazel_compatibility=['>5.1.0', '<5.1.4'])");
 
@@ -229,7 +229,7 @@
 
   @Test
   public void testRcIsCompatibleWithReleaseRequirement() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='mod', version='1.0', bazel_compatibility=['>=6.4.0'])");
 
@@ -242,7 +242,7 @@
 
   @Test
   public void testPrereleaseIsNotCompatibleWithReleaseRequirement() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='mod', version='1.0', bazel_compatibility=['>=6.4.0'])");
 
@@ -278,7 +278,7 @@
        -not including- 5.1.2 and 5.1.4.
        Ex: 5.1.3rc44, 5.1.3, 5.1.4-pre22.44
     */
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='mod', version='1.0', bazel_compatibility=['>5.1.0', '<5.1.6'])",
         "bazel_dep(name = 'a', version = '1.0')");
@@ -342,7 +342,7 @@
   }
 
   private void setupModulesForYankedVersion() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='mod', version='1.0')",
         "bazel_dep(name = 'a', version = '1.0')");
@@ -361,7 +361,7 @@
 
   @Test
   public void testYankedVersionSideEffects_equalCompatibilityLevel() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='mod', version='1.0')",
         "bazel_dep(name = 'a', version = '1.0')",
@@ -403,7 +403,7 @@
 
   @Test
   public void testYankedVersionSideEffects_differentCompatibilityLevel() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='mod', version='1.0')",
         "bazel_dep(name = 'a', version = '1.0')",
@@ -443,7 +443,7 @@
 
   @Test
   public void overrideOnNonexistentModule() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='mod', version='1.0')",
         "bazel_dep(name = 'a', version = '1.0')",
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleExtensionResolutionTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleExtensionResolutionTest.java
index aef4257..a971372 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleExtensionResolutionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleExtensionResolutionTest.java
@@ -234,7 +234,9 @@
                     SkyFunctions.IGNORED_PACKAGE_PREFIXES,
                     new IgnoredPackagePrefixesFunction(
                         /* ignoredPackagePrefixesFile= */ PathFragment.EMPTY_FRAGMENT))
-                .put(SkyFunctions.REPOSITORY_MAPPING, new RepositoryMappingFunction())
+                .put(
+                    SkyFunctions.REPOSITORY_MAPPING,
+                    new RepositoryMappingFunction(ruleClassProvider))
                 .put(
                     SkyFunctions.EXTERNAL_PACKAGE,
                     new ExternalPackageFunction(
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunctionTest.java
index 152e2fc..53f267e 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunctionTest.java
@@ -177,7 +177,7 @@
 
   @Test
   public void testRootModule() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(",
         "    name='aaa',",
@@ -237,7 +237,7 @@
 
   @Test
   public void testRootModule_noModuleFunctionIsOkay() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "bazel_dep(name='bbb',version='1.0')");
     FakeRegistry registry = registryFactory.newFakeRegistry("/foo");
@@ -262,7 +262,7 @@
 
   @Test
   public void testRootModule_badSelfOverride() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='aaa')",
         "single_version_override(module_name='aaa',version='7')");
@@ -283,7 +283,7 @@
             "bazel_tools",
             LocalPathOverride.create(
                 rootDirectory.getRelative("bazel_tools_original").getPathString())));
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='aaa')",
         "local_path_override(module_name='bazel_tools',path='./bazel_tools_new')");
@@ -352,15 +352,15 @@
   public void testLocalPathOverride() throws Exception {
     // There is an override for B to use the local path "code_for_b", so we shouldn't even be
     // looking at the registry.
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='aaa',version='0.1')",
         "local_path_override(module_name='bbb',path='code_for_b')");
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("code_for_b/MODULE.bazel").getPathString(),
         "module(name='bbb',version='1.0')",
         "bazel_dep(name='ccc',version='2.0')");
-    scratch.file(rootDirectory.getRelative("code_for_b/WORKSPACE").getPathString());
+    scratch.overwriteFile(rootDirectory.getRelative("code_for_b/WORKSPACE").getPathString());
     FakeRegistry registry =
         registryFactory
             .newFakeRegistry("/foo")
@@ -388,7 +388,7 @@
 
   @Test
   public void testCommandLineModuleOverrides() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='aaa',version='0.1')",
         "bazel_dep(name = \"bbb\", version = \"1.0\")",
@@ -396,15 +396,15 @@
 
     // Command line override has the priority. Thus, "used_override" with dependency on 'ccc'
     // should be selected.
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("ignored_override/MODULE.bazel").getPathString(),
         "module(name='bbb',version='1.0')");
-    scratch.file(rootDirectory.getRelative("ignored_override/WORKSPACE").getPathString());
-    scratch.file(
+    scratch.overwriteFile(rootDirectory.getRelative("ignored_override/WORKSPACE").getPathString());
+    scratch.overwriteFile(
         rootDirectory.getRelative("used_override/MODULE.bazel").getPathString(),
         "module(name='bbb',version='1.0')",
         "bazel_dep(name='ccc',version='2.0')");
-    scratch.file(rootDirectory.getRelative("used_override/WORKSPACE").getPathString());
+    scratch.overwriteFile(rootDirectory.getRelative("used_override/WORKSPACE").getPathString());
 
     // ModuleFileFuncion.MODULE_OVERRIDES should be filled from command line options
     // Inject for testing
@@ -624,7 +624,7 @@
 
   @Test
   public void testModuleExtensions_duplicateProxy_asRoot() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "myext1 = use_extension('//:defs.bzl','myext',dev_dependency=True)",
         "myext1.tag(name = 'tag1')",
@@ -836,7 +836,7 @@
 
   @Test
   public void testModuleExtensions_innate() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "repo = use_repo_rule('//:repo.bzl','repo')",
         "repo(name='repo_name', value='something')",
@@ -914,7 +914,7 @@
 
   @Test
   public void testModuleFileExecute_syntaxError() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='aaa',version='0.1',compatibility_level=4)",
         "foo()");
@@ -926,7 +926,7 @@
 
   @Test
   public void testModuleFileExecute_evalError() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='aaa',version='0.1',compatibility_level=\"4\")");
 
@@ -953,7 +953,7 @@
 
   @Test
   public void badModuleName_module() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='f.',version='0.1')");
 
@@ -965,7 +965,7 @@
 
   @Test
   public void badModuleName_bazelDep() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "bazel_dep(name='f.',version='0.1')");
 
@@ -977,7 +977,7 @@
 
   @Test
   public void badRepoName_module() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='foo',version='0.1',repo_name='_foo')");
 
@@ -989,7 +989,7 @@
 
   @Test
   public void badRepoName_bazelDep() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "bazel_dep(name='foo',version='0.1',repo_name='_foo')");
 
@@ -1001,7 +1001,7 @@
 
   @Test
   public void badRepoName_useRepo() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "ext=use_extension('//:hello.bzl', 'ext')",
         "use_repo(ext, foo='_foo')");
@@ -1014,7 +1014,7 @@
 
   @Test
   public void badRepoName_useRepo_assignedName() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "ext=use_extension('//:hello.bzl', 'ext')",
         "use_repo(ext, _foo='foo')");
@@ -1034,7 +1034,7 @@
             "local_config_platform",
             LocalPathOverride.create("/local_config_platform"));
     setUpWithBuiltinModules(builtinModules);
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "bazel_dep(name='foo',version='1.0')");
     ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of());
@@ -1065,11 +1065,11 @@
             "local_config_platform",
             LocalPathOverride.create("/local_config_platform"));
     setUpWithBuiltinModules(builtinModules);
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "bazel_dep(name='foo',version='1.0')");
-    scratch.file(rootDirectory.getRelative("tools/WORKSPACE").getPathString());
-    scratch.file(
+    scratch.overwriteFile(rootDirectory.getRelative("tools/WORKSPACE").getPathString());
+    scratch.overwriteFile(
         rootDirectory.getRelative("tools/MODULE.bazel").getPathString(),
         "module(name='bazel_tools',version='1.0')",
         "bazel_dep(name='foo',version='2.0')");
@@ -1094,7 +1094,7 @@
 
   @Test
   public void moduleRepoName() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='aaa',version='0.1',repo_name='bbb')");
     FakeRegistry registry = registryFactory.newFakeRegistry("/foo");
@@ -1117,7 +1117,7 @@
 
   @Test
   public void moduleRepoName_conflict() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='aaa',version='0.1',repo_name='bbb')",
         "bazel_dep(name='bbb',version='1.0')");
@@ -1132,7 +1132,7 @@
 
   @Test
   public void module_calledTwice() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "module(name='aaa',version='0.1',repo_name='bbb')",
         "module(name='aaa',version='0.1',repo_name='bbb')");
@@ -1147,7 +1147,7 @@
 
   @Test
   public void module_calledLate() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "use_extension('//:extensions.bzl', 'my_ext')",
         "module(name='aaa',version='0.1',repo_name='bbb')");
@@ -1162,7 +1162,7 @@
 
   @Test
   public void restrictedSyntax() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "if 3+5>7: module(name='aaa',version='0.1',repo_name='bbb')");
     FakeRegistry registry = registryFactory.newFakeRegistry("/foo");
@@ -1185,7 +1185,7 @@
             .setBool(BuildLanguageOptions.EXPERIMENTAL_ISOLATED_EXTENSION_USAGES, true)
             .build());
 
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "isolated_ext = use_extension('//:extensions.bzl', 'my_ext', isolate = True)");
     FakeRegistry registry = registryFactory.newFakeRegistry("/foo");
@@ -1212,7 +1212,7 @@
             .setBool(BuildLanguageOptions.EXPERIMENTAL_ISOLATED_EXTENSION_USAGES, true)
             .build());
 
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "use_extension('//:extensions.bzl', 'my_ext', isolate = True)");
     FakeRegistry registry = registryFactory.newFakeRegistry("/foo");
@@ -1227,7 +1227,7 @@
 
   @Test
   public void isolatedUsage_notEnabled() throws Exception {
-    scratch.file(
+    scratch.overwriteFile(
         rootDirectory.getRelative("MODULE.bazel").getPathString(),
         "use_extension('//:extensions.bzl', 'my_ext', isolate = True)");
     FakeRegistry registry = registryFactory.newFakeRegistry("/foo");
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryIntegrationTest.java
index 08242a6..e77b35d 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryIntegrationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryIntegrationTest.java
@@ -19,33 +19,19 @@
 import static org.junit.Assert.fail;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.analysis.BlazeDirectories;
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
-import com.google.devtools.build.lib.analysis.util.AnalysisMock;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
-import com.google.devtools.build.lib.bazel.repository.downloader.DownloadManager;
 import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException;
 import com.google.devtools.build.lib.packages.NoSuchPackageException;
-import com.google.devtools.build.lib.rules.repository.LocalRepositoryFunction;
-import com.google.devtools.build.lib.rules.repository.LocalRepositoryRule;
-import com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunction;
-import com.google.devtools.build.lib.rules.repository.RepositoryFunction;
-import com.google.devtools.build.lib.skyframe.BazelSkyframeExecutorConstants;
 import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
-import com.google.devtools.build.lib.skyframe.SkyFunctions;
 import com.google.devtools.build.lib.starlarkbuildapi.repository.RepositoryBootstrap;
 import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.util.AbruptExitException;
-import com.google.devtools.build.skyframe.SkyFunction;
-import com.google.devtools.build.skyframe.SkyFunctionName;
 import java.io.OutputStream;
 import java.nio.charset.StandardCharsets;
-import java.util.concurrent.atomic.AtomicBoolean;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
-import org.mockito.Mockito;
 
 /** Integration test for Starlark repository not as heavyweight than shell integration tests. */
 @RunWith(JUnit4.class)
@@ -54,45 +40,6 @@
   // The RuleClassProvider loaded with the StarlarkRepositoryModule
   private ConfiguredRuleClassProvider ruleProvider = null;
 
-  /**
-   * Proxy to the real analysis mock to overwrite {@code #getSkyFunctions(BlazeDirectories)} to
-   * inject the StarlarkRepositoryFunction in the list of SkyFunctions. In Bazel, this function is
-   * injected by the corresponding {@code BlazeModule}.
-   */
-  private static class CustomAnalysisMock extends AnalysisMock.Delegate {
-    CustomAnalysisMock(AnalysisMock proxied) {
-      super(proxied);
-    }
-
-    @Override
-    public ImmutableMap<SkyFunctionName, SkyFunction> getSkyFunctions(
-        BlazeDirectories directories) {
-      // Add both the local repository and the Starlark repository functions
-      // The RepositoryCache mock injected with the StarlarkRepositoryFunction
-      DownloadManager downloader = Mockito.mock(DownloadManager.class);
-      RepositoryFunction localRepositoryFunction = new LocalRepositoryFunction();
-      StarlarkRepositoryFunction starlarkRepositoryFunction =
-          new StarlarkRepositoryFunction(downloader);
-      ImmutableMap<String, RepositoryFunction> repositoryHandlers =
-          ImmutableMap.of(LocalRepositoryRule.NAME, localRepositoryFunction);
-
-      RepositoryDelegatorFunction function =
-          new RepositoryDelegatorFunction(
-              repositoryHandlers,
-              starlarkRepositoryFunction,
-              new AtomicBoolean(true),
-              ImmutableMap::of,
-              directories,
-              BazelSkyframeExecutorConstants.EXTERNAL_PACKAGE_HELPER);
-      return ImmutableMap.of(SkyFunctions.REPOSITORY_DIRECTORY, function);
-    }
-  }
-
-  @Override
-  protected AnalysisMock getAnalysisMock() {
-    return new CustomAnalysisMock(super.getAnalysisMock());
-  }
-
   @Override
   protected ConfiguredRuleClassProvider createRuleClassProvider() {
     // We inject the repository module in our test rule class provider.
@@ -409,14 +356,13 @@
         rootDirectory.getRelative("WORKSPACE").getPathString(),
         new ImmutableList.Builder<String>()
             .addAll(analysisMock.getWorkspaceContents(mockToolsConfig))
-            .add("workspace(name='bleh')")
             .add("load('//:def.bzl', 'macro')")
             .build());
     scratch.file("data.txt");
     scratch.file("BUILD", "filegroup(", "  name='files', ", "  srcs=['data.txt'])");
     invalidatePackages();
     assertThat(getRuleContext(getConfiguredTarget("//:files")).getWorkspaceName())
-        .isEqualTo("bleh");
+        .isEqualTo(ruleClassProvider.getRunfilesPrefix());
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java
index 702fc89..ed1e3f2 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java
@@ -59,6 +59,7 @@
         "embedded_tools/tools/android/android_sdk_repository_template.bzl",
         ResourceLoader.readFromResources("tools/android/android_sdk_repository_template.bzl"));
     scratch.appendFile("WORKSPACE", "local_config_platform(name='local_config_platform')");
+    scratch.overwriteFile("local_config_platform_workspace/constraints.bzl", "HOST_CONSTRAINTS=[]");
   }
 
   private void scratchPlatformsDirectories(int... apiLevels) throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/MockProtoSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/MockProtoSupport.java
index fdf0af4..5c5dcea 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/MockProtoSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/MockProtoSupport.java
@@ -214,7 +214,6 @@
           ")");
     }
 
-    config.create("third_party/bazel_rules/rules_proto/WORKSPACE");
     config.create(
         "third_party/bazel_rules/rules_proto/proto/BUILD",
         "licenses(['notice'])",
diff --git a/src/test/java/com/google/devtools/build/lib/query2/testutil/AbstractQueryTest.java b/src/test/java/com/google/devtools/build/lib/query2/testutil/AbstractQueryTest.java
index 54828b1..0b75426 100644
--- a/src/test/java/com/google/devtools/build/lib/query2/testutil/AbstractQueryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/query2/testutil/AbstractQueryTest.java
@@ -1618,18 +1618,37 @@
     helper.useRuleClassProvider(analysisMock.createRuleClassProvider());
     helper.writeFile("/workspace/embedded_tools/BUILD");
     helper.writeFile("/workspace/embedded_tools/WORKSPACE");
-    helper.writeFile(
-        "/workspace/embedded_tools/MODULE.bazel", "module(name = \"bazel_tools\", version = \"\")");
+    helper.writeFile("/workspace/embedded_tools/MODULE.bazel", "module(name='bazel_tools')");
     helper.writeFile("/workspace/platforms_workspace/BUILD");
     helper.writeFile("/workspace/platforms_workspace/WORKSPACE");
+    helper.writeFile("/workspace/platforms_workspace/MODULE.bazel", "module(name='platforms')");
+    helper.writeFile("/workspace/local_config_xcode_workspace/BUILD");
+    helper.writeFile("/workspace/local_config_xcode_workspace/WORKSPACE");
     helper.writeFile(
-        "/workspace/platforms_workspace/MODULE.bazel",
-        "module(name = \"platforms\", version = \"\")");
+        "/workspace/local_config_xcode_workspace/MODULE.bazel",
+        "module(name='local_config_xcode')");
     helper.writeFile("/workspace/rules_java_workspace/BUILD");
     helper.writeFile("/workspace/rules_java_workspace/WORKSPACE");
+    helper.writeFile("/workspace/rules_java_workspace/MODULE.bazel", "module(name='rules_java')");
+    helper.writeFile("/workspace/protobuf_workspace/BUILD");
+    helper.writeFile("/workspace/protobuf_workspace/WORKSPACE");
     helper.writeFile(
-        "/workspace/rules_java_workspace/MODULE.bazel",
-        "module(name = \"rules_java\", version = \"\")");
+        "/workspace/protobuf_workspace/MODULE.bazel", "module(name='com_google_protobuf')");
+    helper.writeFile("/workspace/local_config_platform_workspace/BUILD");
+    helper.writeFile("/workspace/local_config_platform_workspace/WORKSPACE");
+    helper.writeFile(
+        "/workspace/local_config_platform_workspace/MODULE.bazel",
+        "module(name='local_config_platform')");
+    helper.writeFile("/workspace/build_bazel_apple_support/BUILD");
+    helper.writeFile("/workspace/build_bazel_apple_support/WORKSPACE");
+    helper.writeFile(
+        "/workspace/build_bazel_apple_support/MODULE.bazel",
+        "module(name='build_bazel_apple_support')");
+    helper.writeFile("/workspace/third_party/bazel_rules/rules_proto/BUILD");
+    helper.writeFile("/workspace/third_party/bazel_rules/rules_proto/WORKSPACE");
+    helper.writeFile(
+        "/workspace/third_party/bazel_rules/rules_proto/MODULE.bazel",
+        "module(name='rules_proto')");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/query2/testutil/SkyframeQueryHelper.java b/src/test/java/com/google/devtools/build/lib/query2/testutil/SkyframeQueryHelper.java
index 262d023..a2c3682 100644
--- a/src/test/java/com/google/devtools/build/lib/query2/testutil/SkyframeQueryHelper.java
+++ b/src/test/java/com/google/devtools/build/lib/query2/testutil/SkyframeQueryHelper.java
@@ -136,8 +136,6 @@
     registry = FakeRegistry.DEFAULT_FACTORY.newFakeRegistry(moduleRoot.getPathString());
     writeFile("MODULE.bazel", "module( name = \"root\", version = \"1.0\")");
 
-    initTargetPatternEvaluator(analysisMock.createRuleClassProvider());
-
     MockToolsConfig mockToolsConfig = new MockToolsConfig(rootDirectory);
     analysisMock.setupMockClient(mockToolsConfig);
     analysisMock.setupMockWorkspaceFiles(directories.getEmbeddedBinariesRoot());
@@ -146,6 +144,8 @@
     analysisMock.pySupport().setup(mockToolsConfig);
     performAdditionalClientSetup(mockToolsConfig);
 
+    initTargetPatternEvaluator(analysisMock.createRuleClassProvider());
+
     this.queryEnvironmentFactory = makeQueryEnvironmentFactory();
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/rules/LabelBuildSettingTest.java b/src/test/java/com/google/devtools/build/lib/rules/LabelBuildSettingTest.java
index 5d6c0ff..6a40e28 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/LabelBuildSettingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/LabelBuildSettingTest.java
@@ -17,22 +17,10 @@
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.devtools.build.lib.bazel.bzlmod.BzlmodTestUtil.createModuleKey;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.FakeRegistry;
-import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.BazelCompatibilityMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.CheckDirectDepsMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.LockfileMode;
 import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.skyframe.PrecomputedValue;
-import com.google.devtools.build.lib.skyframe.PrecomputedValue.Injected;
-import java.io.IOException;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -40,28 +28,6 @@
 /** Tests for {@link LabelBuildSettings} rules. */
 @RunWith(JUnit4.class)
 public class LabelBuildSettingTest extends BuildViewTestCase {
-  private FakeRegistry registry;
-
-  @Override
-  protected ImmutableList<Injected> extraPrecomputedValues() {
-    try {
-      registry =
-          FakeRegistry.DEFAULT_FACTORY.newFakeRegistry(scratch.dir("modules").getPathString());
-    } catch (IOException e) {
-      throw new IllegalStateException(e);
-    }
-    return ImmutableList.of(
-        PrecomputedValue.injected(
-            ModuleFileFunction.REGISTRIES, ImmutableList.of(registry.getUrl())),
-        PrecomputedValue.injected(ModuleFileFunction.IGNORE_DEV_DEPS, false),
-        PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()),
-        PrecomputedValue.injected(YankedVersionsUtil.ALLOWED_YANKED_VERSIONS, ImmutableList.of()),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.CHECK_DIRECT_DEPENDENCIES, CheckDirectDepsMode.WARNING),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.BAZEL_COMPATIBILITY_MODE, BazelCompatibilityMode.ERROR),
-        PrecomputedValue.injected(BazelLockFileFunction.LOCKFILE_MODE, LockfileMode.UPDATE));
-  }
 
   private void writeRulesBzl(String type) throws Exception {
     scratch.file(
@@ -285,8 +251,6 @@
 
   @Test
   public void transitionOutput_otherRepo() throws Exception {
-    setBuildLanguageOptions("--enable_bzlmod");
-
     scratch.overwriteFile("MODULE.bazel", "bazel_dep(name='foo',version='1.0')");
     registry.addModule(createModuleKey("foo", "1.0"), "module(name='foo', version='1.0')");
     scratch.file("modules/foo~1.0/WORKSPACE");
@@ -336,15 +300,15 @@
         "label_flag(name = 'my_flag2', build_setting_default = ':first_rule')",
         "filegroup(name = 'first_rule')",
         "rule_with_transition(name = 'buildme')");
+
+    invalidatePackages();
+
     assertThat(getConfiguredTarget("//test:buildme")).isNotNull();
     assertNoEvents();
   }
 
   @Test
   public void testInvisibleRepoInLabelResultsInEarlyError() throws Exception {
-    setBuildLanguageOptions("--enable_bzlmod");
-
-    scratch.file("MODULE.bazel");
     scratch.file(
         "test/defs.bzl",
         "def _setting_impl(ctx):",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AbstractAndroidLocalTestTestBase.java b/src/test/java/com/google/devtools/build/lib/rules/android/AbstractAndroidLocalTestTestBase.java
index 8578ca0..78d7e3b 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AbstractAndroidLocalTestTestBase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AbstractAndroidLocalTestTestBase.java
@@ -320,7 +320,7 @@
     assertThat(action.getFileContents())
         .isAnyOf(
             "//java/com/foo:flag1: on\n//java/com/foo:flag2: off",
-            "@//java/com/foo:flag1: on\n@//java/com/foo:flag2: off");
+            "@@//java/com/foo:flag1: on\n@@//java/com/foo:flag2: off");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
index 4f521aa..3a28a56 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
@@ -3829,7 +3829,7 @@
             "/FooFlags.java");
     FileWriteAction action = (FileWriteAction) getGeneratingAction(flagList);
     assertThat(action.getFileContents())
-        .isEqualTo("@//java/com/foo:flag1: on\n@//java/com/foo:flag2: off");
+        .isEqualTo("@@//java/com/foo:flag1: on\n@@//java/com/foo:flag2: off");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcBadDependenciesTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcBadDependenciesTest.java
index a71998a..242cfd7 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcBadDependenciesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcBadDependenciesTest.java
@@ -34,7 +34,7 @@
     scratch.file("foo/unknown.oops", "foo");
     configure("//foo:foo");
     assertContainsEvent(
-        getErrorMsgMisplacedFiles("srcs", "cc_library", "@//foo:foo", "@//foo:unknown.oops"));
+        getErrorMsgMisplacedFiles("srcs", "cc_library", "@@//foo:foo", "@@//foo:unknown.oops"));
   }
 
   @Test
@@ -62,8 +62,6 @@
         "           srcs = ['//dependency:generated'])");
     configure("//foo:foo");
     assertContainsEvent(
-        String.format(
-            "attribute srcs: '%s' does not produce any cc_library srcs files",
-            "@//dependency:generated"));
+        "attribute srcs: '@@//dependency:generated' does not produce any cc_library srcs files");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
index 27d70ef..cc9983c 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
@@ -715,7 +715,7 @@
         "badlib",
         "lib_with_dash_static",
         // message:
-        "in linkopts attribute of cc_library rule @//badlib:lib_with_dash_static: "
+        "in linkopts attribute of cc_library rule @@//badlib:lib_with_dash_static: "
             + "Apple builds do not support statically linked binaries",
         // build file:
         "cc_library(name = 'lib_with_dash_static',",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
index dab629f..5c7b7e1 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
@@ -2196,7 +2196,7 @@
             "-Xlinker",
             "-rpath",
             "-Xlinker",
-            "$ORIGIN/main.runfiles/" + TestConstants.WORKSPACE_NAME + "/_solib_k8/")
+            "$ORIGIN/main.runfiles/" + ruleClassProvider.getRunfilesPrefix() + "/_solib_k8/")
         .inOrder();
     assertThat(linkArgv)
         .contains("-L" + TestConstants.PRODUCT_NAME + "-out/k8-fastbuild/bin/_solib_k8");
@@ -2267,7 +2267,7 @@
             "-Xlinker",
             "-rpath",
             "-Xlinker",
-            "$ORIGIN/main.runfiles/" + TestConstants.WORKSPACE_NAME + "/_solib_k8/")
+            "$ORIGIN/main.runfiles/" + ruleClassProvider.getRunfilesPrefix() + "/_solib_k8/")
         .inOrder();
     assertThat(Joiner.on(" ").join(linkArgv))
         .contains("-Xlinker -rpath -Xlinker $ORIGIN/../../../k8-fastbuild-ST-");
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
index 9d6d05e..a960bd5 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
@@ -497,7 +497,7 @@
 
     assertContainsEvent(
         Pattern.compile(
-            ".* objc_library rule \\'//app:no_tag_dep\\' is misplaced here \\(Only J2ObjC JRE"
+            ".* objc_library rule \\'@//app:no_tag_dep\\' is misplaced here \\(Only J2ObjC JRE"
                 + " libraries are allowed\\)"));
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
index ba4baa2..8f180ce 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
@@ -408,8 +408,8 @@
     checkError(
         "x",
         "x",
-        "non_arc_srcs attribute of objc_library rule @//x:x: source file '@//x:cc.cc' is misplaced"
-            + " here",
+        "non_arc_srcs attribute of objc_library rule @@//x:x: source file '@@//x:cc.cc' is"
+            + " misplaced here",
         "objc_library(name = 'x', non_arc_srcs = ['cc.cc'])");
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoCommonTest.java
index e4c0bb2..9eddf76 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoCommonTest.java
@@ -605,11 +605,11 @@
     getConfiguredTarget("//bar:simple");
 
     assertContainsEvent(
-        "The 'srcs' attribute of '@//third_party/x:mixed' contains protos for which 'MyRule'"
+        "The 'srcs' attribute of '@@//third_party/x:mixed' contains protos for which 'MyRule'"
             + " shouldn't generate code (third_party/x/metadata.proto,"
             + " third_party/x/descriptor.proto), in addition to protos for which it should"
             + " (third_party/x/something.proto).\n"
-            + "Separate '@//third_party/x:mixed' into 2 proto_library rules.");
+            + "Separate '@@//third_party/x:mixed' into 2 proto_library rules.");
   }
 
   /** Verifies <code>proto_common.declare_generated_files</code> call. */
@@ -676,8 +676,8 @@
     getConfiguredTarget("//test:simple");
 
     assertContainsEvent(
-        "lang_proto_library '@//test:simple' may only be created in the same package as"
-            + " proto_library '@//proto:proto'");
+        "lang_proto_library '@@//test:simple' may only be created in the same package as"
+            + " proto_library '@@//proto:proto'");
   }
 
   @Test
@@ -698,8 +698,8 @@
     getConfiguredTarget("//notallowed:simple");
 
     assertContainsEvent(
-        "lang_proto_library '@//notallowed:simple' may only be created in the same package as"
-            + " proto_library '@//x:foo'");
+        "lang_proto_library '@@//notallowed:simple' may only be created in the same package as"
+            + " proto_library '@@//x:foo'");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibraryTest.java
index 2a43a40..d9ca872 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibraryTest.java
@@ -1203,7 +1203,7 @@
     reporter.removeHandler(failFastHandler);
     getConfiguredTarget("//notallowed:test");
 
-    assertContainsEvent("proto_library '@//x:foo' can't be reexported in package '//notallowed'");
+    assertContainsEvent("proto_library '@@//x:foo' can't be reexported in package '//notallowed'");
   }
 
   @Test
@@ -1222,6 +1222,6 @@
     reporter.removeHandler(failFastHandler);
     getConfiguredTarget("//notallowed:test");
 
-    assertContainsEvent("proto_library '@//x:foo' can't be reexported in package '//notallowed'");
+    assertContainsEvent("proto_library '@@//x:foo' can't be reexported in package '//notallowed'");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java b/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java
index 93671bf..44be64f 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java
@@ -245,7 +245,9 @@
                     SkyFunctions.IGNORED_PACKAGE_PREFIXES,
                     new IgnoredPackagePrefixesFunction(
                         /* ignoredPackagePrefixesFile= */ PathFragment.EMPTY_FRAGMENT))
-                .put(SkyFunctions.REPOSITORY_MAPPING, new RepositoryMappingFunction())
+                .put(
+                    SkyFunctions.REPOSITORY_MAPPING,
+                    new RepositoryMappingFunction(ruleClassProvider))
                 .put(
                     SkyFunctions.MODULE_FILE,
                     new ModuleFileFunction(registryFactory, rootPath, ImmutableMap.of()))
diff --git a/src/test/java/com/google/devtools/build/lib/rules/starlarkdocextract/StarlarkDocExtractTest.java b/src/test/java/com/google/devtools/build/lib/rules/starlarkdocextract/StarlarkDocExtractTest.java
index 4c54059..3bc1e7b1 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/starlarkdocextract/StarlarkDocExtractTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/starlarkdocextract/StarlarkDocExtractTest.java
@@ -19,27 +19,15 @@
 import static com.google.common.truth.extensions.proto.ProtoTruth.assertThat;
 import static org.junit.Assert.assertThrows;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.actions.Action;
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.actions.BinaryFileWriteAction;
 import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionFunction;
 import com.google.devtools.build.lib.bazel.bzlmod.BzlmodTestUtil;
-import com.google.devtools.build.lib.bazel.bzlmod.FakeRegistry;
-import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.BazelCompatibilityMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.CheckDirectDepsMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.LockfileMode;
 import com.google.devtools.build.lib.bazel.repository.starlark.StarlarkRepositoryModule;
 import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.skyframe.PrecomputedValue;
-import com.google.devtools.build.lib.skyframe.PrecomputedValue.Injected;
 import com.google.devtools.build.lib.starlarkbuildapi.repository.RepositoryBootstrap;
 import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.vfs.Path;
@@ -58,7 +46,6 @@
 import com.google.devtools.build.skydoc.rendering.proto.StardocOutputProtos.StarlarkFunctionInfo;
 import com.google.protobuf.ExtensionRegistry;
 import com.google.protobuf.TextFormat;
-import java.io.IOException;
 import java.util.NoSuchElementException;
 import org.junit.Before;
 import org.junit.Test;
@@ -67,31 +54,6 @@
 
 @RunWith(JUnit4.class)
 public final class StarlarkDocExtractTest extends BuildViewTestCase {
-  private Path moduleRoot; // initialized by extraPrecomputedValues
-  private FakeRegistry registry;
-
-  @Override
-  protected ImmutableList<Injected> extraPrecomputedValues() {
-    // TODO(b/285924565): support --enable_bzlmod in BuildViewTestCase tests without needing the
-    // boilerplate below.
-    try {
-      moduleRoot = scratch.dir("modules");
-    } catch (IOException e) {
-      throw new IllegalStateException(e);
-    }
-    registry = FakeRegistry.DEFAULT_FACTORY.newFakeRegistry(moduleRoot.getPathString());
-    return ImmutableList.of(
-        PrecomputedValue.injected(
-            ModuleFileFunction.REGISTRIES, ImmutableList.of(registry.getUrl())),
-        PrecomputedValue.injected(ModuleFileFunction.IGNORE_DEV_DEPS, false),
-        PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()),
-        PrecomputedValue.injected(YankedVersionsUtil.ALLOWED_YANKED_VERSIONS, ImmutableList.of()),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.CHECK_DIRECT_DEPENDENCIES, CheckDirectDepsMode.WARNING),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.BAZEL_COMPATIBILITY_MODE, BazelCompatibilityMode.ERROR),
-        PrecomputedValue.injected(BazelLockFileFunction.LOCKFILE_MODE, LockfileMode.UPDATE));
-  }
 
   @Override
   protected ConfiguredRuleClassProvider createRuleClassProvider() {
@@ -388,7 +350,6 @@
   @Test
   public void originKeyFileAndModuleInfoFileLabels_forBzlFileInBzlmodModule_areDisplayForm()
       throws Exception {
-    setBuildLanguageOptions("--enable_bzlmod");
     scratch.overwriteFile("MODULE.bazel", "bazel_dep(name='origin_repo', version='0.1')");
     registry.addModule(
         BzlmodTestUtil.createModuleKey("origin_repo", "0.1"),
@@ -434,6 +395,7 @@
         "    src = 'renamer.bzl',",
         "    deps = ['origin_bzl'],",
         ")");
+    invalidatePackages();
 
     // verify that ModuleInfo.name for a .bzl file in another bzlmod module is in display form, i.e.
     // "@origin_repo//:origin.bzl" as opposed to "@@origin_repo~0.1//:origin.bzl"
@@ -964,7 +926,6 @@
 
   @Test
   public void repoName_inMainBzlmodModule() throws Exception {
-    setBuildLanguageOptions("--enable_bzlmod");
     scratch.overwriteFile(
         "MODULE.bazel", //
         "module(name = 'my_module', repo_name = 'legacy_internal_repo_name')");
@@ -989,6 +950,7 @@
         "    name = 'without_main_repo_name',",
         "    src = 'foo.bzl',",
         ")");
+    invalidatePackages();
 
     ModuleInfo withMainRepoName = protoFromConfiguredTarget("//:with_main_repo_name");
     assertThat(withMainRepoName.getFile()).isEqualTo("@my_module//:foo.bzl");
@@ -1010,6 +972,7 @@
 
   @Test
   public void repoName_inMainWorkspaceRepo() throws Exception {
+    setBuildLanguageOptions("--noenable_bzlmod");
     rewriteWorkspace("workspace(name = 'my_repo')");
     scratch.file(
         "foo.bzl", //
@@ -1053,7 +1016,6 @@
 
   @Test
   public void repoName_inBzlmodDep() throws Exception {
-    setBuildLanguageOptions("--enable_bzlmod");
     scratch.overwriteFile(
         "MODULE.bazel", "module(name = 'my_module')", "bazel_dep(name='dep_mod', version='0.1')");
     registry.addModule(
@@ -1074,6 +1036,7 @@
         "    name = 'extract',",
         "    src = 'foo.bzl',",
         ")");
+    invalidatePackages();
 
     ModuleInfo moduleInfo = protoFromConfiguredTarget("@dep_mod~0.1//:extract");
     assertThat(moduleInfo.getFile()).isEqualTo("@dep_mod//:foo.bzl");
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD
index c9f7d0c..f1eac43 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD
@@ -158,6 +158,7 @@
         "//src/main/java/com/google/devtools/build/lib/analysis/producers",
         "//src/main/java/com/google/devtools/build/lib/bazel:main",
         "//src/main/java/com/google/devtools/build/lib/bazel/bzlmod:common",
+        "//src/main/java/com/google/devtools/build/lib/bazel/bzlmod:resolution",
         "//src/main/java/com/google/devtools/build/lib/bazel/bzlmod:resolution_impl",
         "//src/main/java/com/google/devtools/build/lib/bazel/repository",
         "//src/main/java/com/google/devtools/build/lib/bazel/repository:repository_options",
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/BuiltinsInjectionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/BuiltinsInjectionTest.java
index effd5f5..1da9673 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/BuiltinsInjectionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/BuiltinsInjectionTest.java
@@ -22,6 +22,7 @@
 import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
+import com.google.devtools.build.lib.analysis.BlazeDirectories;
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
@@ -29,15 +30,18 @@
 import com.google.devtools.build.lib.analysis.Runfiles;
 import com.google.devtools.build.lib.analysis.RunfilesProvider;
 import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
+import com.google.devtools.build.lib.analysis.util.AnalysisMock;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
 import com.google.devtools.build.lib.analysis.util.MockRule;
 import com.google.devtools.build.lib.analysis.util.MockRuleDefaults;
+import com.google.devtools.build.lib.bazel.bzlmod.NonRegistryOverride;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.collect.nestedset.Order;
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.EventHandler;
 import com.google.devtools.build.lib.packages.Attribute;
 import com.google.devtools.build.lib.packages.BuildType;
+import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
 import com.google.devtools.build.lib.packages.Type;
 import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
@@ -169,6 +173,17 @@
   }
 
   @Override
+  protected AnalysisMock getAnalysisMock() {
+    return new AnalysisMock.Delegate(super.getAnalysisMock()) {
+      @Override
+      public ImmutableMap<String, NonRegistryOverride> getBuiltinModules(
+          BlazeDirectories directories) {
+        return ImmutableMap.of();
+      }
+    };
+  }
+
+  @Override
   protected void initializeMockClient() throws IOException {
     // Don't let the AnalysisMock sneak in any WORKSPACE file content, which may depend on
     // repository rules that our minimal rule class provider doesn't have.
@@ -345,7 +360,7 @@
   }
 
   @Test
-  public void otherBzlsCannotLoadFromBuiltins() throws Exception {
+  public void otherBzlsCannotLoadFromBuiltins_apparent() throws Exception {
     writeExportsBzl(
         "exported_toplevels = {}", //
         "exported_rules = {}",
@@ -354,6 +369,19 @@
     writePkgBzl("load('@_builtins//:exports.bzl', 'exported_toplevels')");
 
     buildAndAssertFailure();
+    assertContainsEvent("No repository visible as '@_builtins' from");
+  }
+
+  @Test
+  public void otherBzlsCannotLoadFromBuiltins_canonical() throws Exception {
+    writeExportsBzl(
+        "exported_toplevels = {}", //
+        "exported_rules = {}",
+        "exported_to_java = {}");
+    writePkgBuild();
+    writePkgBzl("load('@@_builtins//:exports.bzl', 'exported_toplevels')");
+
+    buildAndAssertFailure();
     assertContainsEvent("The repository '@_builtins' could not be resolved");
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/BzlLoadFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/BzlLoadFunctionTest.java
index 54bc086..1626ebf 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/BzlLoadFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/BzlLoadFunctionTest.java
@@ -22,14 +22,6 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.FakeRegistry;
-import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.BazelCompatibilityMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.CheckDirectDepsMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.LockfileMode;
 import com.google.devtools.build.lib.clock.BlazeClock;
 import com.google.devtools.build.lib.cmdline.BazelModuleContext;
 import com.google.devtools.build.lib.cmdline.Label;
@@ -39,7 +31,6 @@
 import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
 import com.google.devtools.build.lib.runtime.QuiescingExecutorsImpl;
 import com.google.devtools.build.lib.skyframe.BzlLoadFunction.BzlLoadFailedException;
-import com.google.devtools.build.lib.skyframe.PrecomputedValue.Injected;
 import com.google.devtools.build.lib.skyframe.util.SkyframeExecutorTestUtils;
 import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor;
 import com.google.devtools.build.lib.vfs.DigestHashFunction;
@@ -67,8 +58,6 @@
 /** Tests for BzlLoadFunction. */
 @RunWith(JUnit4.class)
 public class BzlLoadFunctionTest extends BuildViewTestCase {
-  private Path moduleRoot;
-  private FakeRegistry registry;
 
   @Override
   protected FileSystem createFileSystem() {
@@ -97,32 +86,6 @@
     skyframeExecutor.setActionEnv(ImmutableMap.of());
   }
 
-  @Override
-  protected ImmutableList<Injected> extraPrecomputedValues() {
-    try {
-      moduleRoot = scratch.dir("modules");
-    } catch (IOException e) {
-      throw new IllegalStateException(e);
-    }
-    registry = FakeRegistry.DEFAULT_FACTORY.newFakeRegistry(moduleRoot.getPathString());
-    return ImmutableList.of(
-        PrecomputedValue.injected(
-            ModuleFileFunction.REGISTRIES, ImmutableList.of(registry.getUrl())),
-        PrecomputedValue.injected(ModuleFileFunction.IGNORE_DEV_DEPS, false),
-        PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()),
-        PrecomputedValue.injected(YankedVersionsUtil.ALLOWED_YANKED_VERSIONS, ImmutableList.of()),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.CHECK_DIRECT_DEPENDENCIES, CheckDirectDepsMode.WARNING),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.BAZEL_COMPATIBILITY_MODE, BazelCompatibilityMode.ERROR),
-        PrecomputedValue.injected(BazelLockFileFunction.LOCKFILE_MODE, LockfileMode.UPDATE));
-  }
-
-  @Before
-  public void setUpForBzlmod() throws Exception {
-    scratch.file("MODULE.bazel");
-  }
-
   @Test
   public void testBzlLoadLabels() throws Exception {
     scratch.file("pkg1/BUILD");
@@ -1094,7 +1057,7 @@
 
   @Test
   public void testLoadBzlFileFromBzlmod() throws Exception {
-    setBuildLanguageOptions("--enable_bzlmod", "--experimental_enable_scl_dialect");
+    setBuildLanguageOptions("--experimental_enable_scl_dialect");
     scratch.overwriteFile("MODULE.bazel", "bazel_dep(name='foo',version='1.0')");
     registry
         .addModule(
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionTest.java
index c5e53f5..f120a34 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionTest.java
@@ -36,14 +36,12 @@
 import com.google.devtools.build.lib.packages.NoSuchPackageException;
 import com.google.devtools.build.lib.packages.NoSuchTargetException;
 import com.google.devtools.build.lib.skyframe.PrecomputedValue.Injected;
-import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.skyframe.EvaluationContext;
 import com.google.devtools.build.skyframe.EvaluationResult;
 import com.google.devtools.build.skyframe.SkyKey;
 import com.google.devtools.build.skyframe.WalkableGraph;
 import java.io.IOException;
-import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -52,15 +50,6 @@
 @RunWith(JUnit4.class)
 public class PrepareDepsOfPatternsFunctionTest extends BuildViewTestCase {
 
-  private Path moduleRoot;
-  private FakeRegistry registry;
-
-  @Before
-  public void setUpForBzlmod() throws Exception {
-    scratch.file("MODULE.bazel");
-    setBuildLanguageOptions("--enable_bzlmod");
-  }
-
   private static SkyKey getKeyForLabel(Label label) {
     // Note that these tests used to look for TargetMarker SkyKeys before TargetMarker was
     // inlined in TransitiveTraversalFunction. Because TargetMarker is now inlined, it doesn't
@@ -354,6 +343,7 @@
     scratch.file(moduleRoot.getRelative("repo~1.0/WORKSPACE").getPathString(), "");
     scratch.file(
         moduleRoot.getRelative("repo~1.0/a/BUILD").getPathString(), "exports_files(['x'])");
+    invalidatePackages();
   }
 
   private static void assertValidValue(WalkableGraph graph, SkyKey key)
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RepoFileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RepoFileFunctionTest.java
index 0f1fb9f..1fc739c 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/RepoFileFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/RepoFileFunctionTest.java
@@ -17,24 +17,11 @@
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.devtools.build.lib.bazel.bzlmod.BzlmodTestUtil.createModuleKey;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.analysis.RuleContext;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.FakeRegistry;
-import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.BazelCompatibilityMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.CheckDirectDepsMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.LockfileMode;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.Target;
 import com.google.devtools.build.lib.packages.Type;
-import com.google.devtools.build.lib.skyframe.PrecomputedValue.Injected;
-import com.google.devtools.build.lib.vfs.Path;
-import java.io.IOException;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -42,30 +29,6 @@
 @RunWith(JUnit4.class)
 public class RepoFileFunctionTest extends BuildViewTestCase {
 
-  private Path moduleRoot;
-  private FakeRegistry registry;
-
-  @Override
-  protected ImmutableList<Injected> extraPrecomputedValues() {
-    try {
-      moduleRoot = scratch.dir("modules");
-    } catch (IOException e) {
-      throw new IllegalStateException(e);
-    }
-    registry = FakeRegistry.DEFAULT_FACTORY.newFakeRegistry(moduleRoot.getPathString());
-    return ImmutableList.of(
-        PrecomputedValue.injected(
-            ModuleFileFunction.REGISTRIES, ImmutableList.of(registry.getUrl())),
-        PrecomputedValue.injected(ModuleFileFunction.IGNORE_DEV_DEPS, false),
-        PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()),
-        PrecomputedValue.injected(YankedVersionsUtil.ALLOWED_YANKED_VERSIONS, ImmutableList.of()),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.CHECK_DIRECT_DEPENDENCIES, CheckDirectDepsMode.WARNING),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.BAZEL_COMPATIBILITY_MODE, BazelCompatibilityMode.ERROR),
-        PrecomputedValue.injected(BazelLockFileFunction.LOCKFILE_MODE, LockfileMode.UPDATE));
-  }
-
   @Test
   public void defaultVisibility() throws Exception {
     scratch.overwriteFile("REPO.bazel", "repo(default_visibility=['//some:thing'])");
@@ -88,7 +51,6 @@
 
   @Test
   public void repoFileInAnExternalRepo() throws Exception {
-    setBuildLanguageOptions("--enable_bzlmod");
     scratch.overwriteFile("MODULE.bazel", "bazel_dep(name='foo',version='1.0')");
     scratch.overwriteFile("abc/def/BUILD", "filegroup(name='what')");
     registry.addModule(createModuleKey("foo", "1.0"), "module(name='foo',version='1.0')");
@@ -99,6 +61,8 @@
     scratch.overwriteFile(
         moduleRoot.getRelative("foo~1.0/abc/def/BUILD").getPathString(), "filegroup(name='what')");
 
+    invalidatePackages();
+
     assertThat(
             getRuleContext(getConfiguredTarget("//abc/def:what"))
                 .attributes()
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunctionTest.java
index 4589cdb..3906f22 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunctionTest.java
@@ -19,22 +19,13 @@
 import static com.google.devtools.build.skyframe.EvaluationResultSubjectFactory.assertThatEvaluationResult;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
 import com.google.common.testing.EqualsTester;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
 import com.google.devtools.build.lib.analysis.util.AnalysisMock;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.FakeRegistry;
-import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
+import com.google.devtools.build.lib.bazel.bzlmod.NonRegistryOverride;
 import com.google.devtools.build.lib.bazel.bzlmod.Version;
-import com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.BazelCompatibilityMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.CheckDirectDepsMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.LockfileMode;
 import com.google.devtools.build.lib.cmdline.RepositoryMapping;
 import com.google.devtools.build.lib.cmdline.RepositoryName;
 import com.google.devtools.build.lib.packages.NoSuchPackageException;
@@ -45,10 +36,7 @@
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.lib.vfs.Root;
 import com.google.devtools.build.skyframe.EvaluationResult;
-import com.google.devtools.build.skyframe.SkyFunction;
-import com.google.devtools.build.skyframe.SkyFunctionName;
 import com.google.devtools.build.skyframe.SkyKey;
-import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -56,58 +44,29 @@
 /** Tests for {@link RepositoryMappingFunction} and {@link RepositoryMappingValue}. */
 @RunWith(JUnit4.class)
 public class RepositoryMappingFunctionTest extends BuildViewTestCase {
-  private FakeRegistry registry;
 
   private EvaluationResult<RepositoryMappingValue> eval(SkyKey key)
       throws InterruptedException, AbruptExitException {
     getSkyframeExecutor()
         .invalidateFilesUnderPathForTesting(
             reporter,
-            ModifiedFileSet.builder().modify(PathFragment.create("WORKSPACE")).build(),
+            ModifiedFileSet.builder()
+                .modify(PathFragment.create("WORKSPACE"))
+                .modify(PathFragment.create("MODULE.bazel"))
+                .build(),
             Root.fromPath(rootDirectory));
     return SkyframeExecutorTestUtils.evaluate(
         getSkyframeExecutor(), key, /* keepGoing= */ false, reporter);
   }
 
-  @Before
-  public void setUpForBzlmod() throws Exception {
-    setBuildLanguageOptions("--enable_bzlmod");
-    scratch.file("MODULE.bazel");
-  }
-
-  @Override
-  protected ImmutableList<PrecomputedValue.Injected> extraPrecomputedValues() throws Exception {
-    registry = FakeRegistry.DEFAULT_FACTORY.newFakeRegistry(scratch.dir("modules").getPathString());
-    return ImmutableList.of(
-        PrecomputedValue.injected(
-            ModuleFileFunction.REGISTRIES, ImmutableList.of(registry.getUrl())),
-        PrecomputedValue.injected(ModuleFileFunction.IGNORE_DEV_DEPS, false),
-        PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()),
-        PrecomputedValue.injected(YankedVersionsUtil.ALLOWED_YANKED_VERSIONS, ImmutableList.of()),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.CHECK_DIRECT_DEPENDENCIES, CheckDirectDepsMode.WARNING),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.BAZEL_COMPATIBILITY_MODE, BazelCompatibilityMode.ERROR),
-        PrecomputedValue.injected(BazelLockFileFunction.LOCKFILE_MODE, LockfileMode.UPDATE));
-  }
-
   @Override
   protected AnalysisMock getAnalysisMock() {
     // Make sure we don't have built-in modules affecting the dependency graph.
     return new AnalysisMock.Delegate(super.getAnalysisMock()) {
       @Override
-      public ImmutableMap<SkyFunctionName, SkyFunction> getSkyFunctions(
+      public ImmutableMap<String, NonRegistryOverride> getBuiltinModules(
           BlazeDirectories directories) {
-        return ImmutableMap.<SkyFunctionName, SkyFunction>builder()
-            .putAll(
-                Maps.filterKeys(
-                    super.getSkyFunctions(directories),
-                    fnName -> !fnName.equals(SkyFunctions.MODULE_FILE)))
-            .put(
-                SkyFunctions.MODULE_FILE,
-                new ModuleFileFunction(
-                    FakeRegistry.DEFAULT_FACTORY, directories.getWorkspace(), ImmutableMap.of()))
-            .buildOrThrow();
+        return ImmutableMap.of();
       }
     };
   }
@@ -637,27 +596,19 @@
             "bazel_dep(name='foo', version='1.0')")
         .addModule(createModuleKey("foo", "1.0"), "module(name='foo', version='1.0')");
 
-    RepositoryName name = RepositoryName.create("_builtins");
-    SkyKey skyKey = RepositoryMappingValue.key(name);
-    EvaluationResult<RepositoryMappingValue> result = eval(skyKey);
+    SkyKey builtinsKey = RepositoryMappingValue.key(RepositoryName.create("_builtins"));
+    SkyKey toolsKey =
+        RepositoryMappingValue.Key.create(ruleClassProvider.getToolsRepository(), false);
+    EvaluationResult<RepositoryMappingValue> builtinsResult = eval(builtinsKey);
+    assertThat(builtinsResult.hasError()).isFalse();
+    RepositoryMapping builtinsMapping = builtinsResult.get(builtinsKey).getRepositoryMapping();
+    EvaluationResult<RepositoryMappingValue> toolsResult = eval(toolsKey);
+    assertThat(toolsResult.hasError()).isFalse();
+    RepositoryMapping toolsMapping = toolsResult.get(toolsKey).getRepositoryMapping();
 
-    assertThat(result.hasError()).isFalse();
-    assertThatEvaluationResult(result)
-        .hasEntryThat(skyKey)
-        .isEqualTo(
-            valueForBzlmod(
-                ImmutableMap.of(
-                    "bazel_tools",
-                    RepositoryName.BAZEL_TOOLS, // bazel_tools is a well-known module
-                    "foo",
-                    RepositoryName.create("foo~1.0"),
-                    "_builtins",
-                    RepositoryName.create("_builtins"),
-                    "",
-                    RepositoryName.MAIN),
-                name,
-                "bazel_tools",
-                ""));
+    assertThat(builtinsMapping.entries()).containsAtLeastEntriesIn(toolsMapping.entries());
+    assertThat(builtinsMapping.get("_builtins")).isEqualTo(RepositoryName.create("_builtins"));
+    assertThat(builtinsMapping.get("")).isEqualTo(RepositoryName.MAIN);
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceNameFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceNameFunctionTest.java
index b988d64..6bc8520 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceNameFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceNameFunctionTest.java
@@ -48,6 +48,7 @@
 
   @Test
   public void testNormal() throws Exception {
+    setBuildLanguageOptions("--noenable_bzlmod");
     scratch.overwriteFile("WORKSPACE", "workspace(name = 'good')");
     assertThatEvaluationResult(eval())
         .hasEntryThat(key)
@@ -56,15 +57,15 @@
 
   @Test
   public void bzlmod() throws Exception {
-    setBuildLanguageOptions("--enable_bzlmod");
     scratch.overwriteFile("WORKSPACE", "workspace(name = 'good')");
     assertThatEvaluationResult(eval())
         .hasEntryThat(key)
-        .isEqualTo(WorkspaceNameValue.withName(getRuleClassProvider().getRunfilesPrefix()));
+        .isEqualTo(WorkspaceNameValue.withName(ruleClassProvider.getRunfilesPrefix()));
   }
 
   @Test
   public void testErrorInExternalPkg() throws Exception {
+    setBuildLanguageOptions("--noenable_bzlmod");
     reporter.removeHandler(failFastHandler);
     scratch.overwriteFile("WORKSPACE", "bad");
     assertThatEvaluationResult(eval())
@@ -76,6 +77,7 @@
 
   @Test
   public void testTransitiveSkyframeError() throws Exception {
+    setBuildLanguageOptions("--noenable_bzlmod");
     reporter.removeHandler(failFastHandler);
     scratch.deleteFile("WORKSPACE");
     FileSystemUtils.ensureSymbolicLink(scratch.resolve("WORKSPACE"), "WORKSPACE");
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/toolchains/RegisteredExecutionPlatformsFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/toolchains/RegisteredExecutionPlatformsFunctionTest.java
index 5f8750b..5d9688f 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/toolchains/RegisteredExecutionPlatformsFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/toolchains/RegisteredExecutionPlatformsFunctionTest.java
@@ -20,31 +20,18 @@
 import static org.junit.Assert.assertThrows;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.testing.EqualsTester;
 import com.google.common.truth.IterableSubject;
 import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
 import com.google.devtools.build.lib.analysis.platform.ConstraintCollection;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.FakeRegistry;
-import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.BazelCompatibilityMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.CheckDirectDepsMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.LockfileMode;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.cmdline.PackageIdentifier;
 import com.google.devtools.build.lib.rules.platform.ToolchainTestCase;
 import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey;
-import com.google.devtools.build.lib.skyframe.PrecomputedValue;
-import com.google.devtools.build.lib.skyframe.PrecomputedValue.Injected;
 import com.google.devtools.build.lib.skyframe.toolchains.PlatformLookupUtil.InvalidPlatformException;
 import com.google.devtools.build.lib.skyframe.util.SkyframeExecutorTestUtils;
-import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.skyframe.EvaluationResult;
 import com.google.devtools.build.skyframe.SkyKey;
-import java.io.IOException;
 import java.util.List;
 import java.util.stream.Collectors;
 import javax.annotation.Nullable;
@@ -59,9 +46,6 @@
 @RunWith(JUnit4.class)
 public class RegisteredExecutionPlatformsFunctionTest extends ToolchainTestCase {
 
-  private Path moduleRoot;
-  private FakeRegistry registry;
-
   protected EvaluationResult<RegisteredExecutionPlatformsValue>
       requestExecutionPlatformsFromSkyframe(SkyKey executionPlatformsKey)
           throws InterruptedException {
@@ -97,27 +81,6 @@
         .collect(Collectors.toList());
   }
 
-  @Override
-  protected ImmutableList<Injected> extraPrecomputedValues() {
-    try {
-      moduleRoot = scratch.dir("modules");
-    } catch (IOException e) {
-      throw new IllegalStateException(e);
-    }
-    registry = FakeRegistry.DEFAULT_FACTORY.newFakeRegistry(moduleRoot.getPathString());
-    return ImmutableList.of(
-        PrecomputedValue.injected(
-            ModuleFileFunction.REGISTRIES, ImmutableList.of(registry.getUrl())),
-        PrecomputedValue.injected(ModuleFileFunction.IGNORE_DEV_DEPS, false),
-        PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()),
-        PrecomputedValue.injected(YankedVersionsUtil.ALLOWED_YANKED_VERSIONS, ImmutableList.of()),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.CHECK_DIRECT_DEPENDENCIES, CheckDirectDepsMode.WARNING),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.BAZEL_COMPATIBILITY_MODE, BazelCompatibilityMode.ERROR),
-        PrecomputedValue.injected(BazelLockFileFunction.LOCKFILE_MODE, LockfileMode.UPDATE));
-  }
-
   @Test
   public void testRegisteredExecutionPlatforms() throws Exception {
     // Request the executionPlatforms.
@@ -339,7 +302,6 @@
 
   @Test
   public void testRegisteredExecutionPlatforms_bzlmod() throws Exception {
-    setBuildLanguageOptions("--enable_bzlmod");
     scratch.overwriteFile(
         "MODULE.bazel",
         "register_execution_platforms('//:plat')",
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/toolchains/RegisteredToolchainsFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/toolchains/RegisteredToolchainsFunctionTest.java
index 3a4eefe..cb3e364 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/toolchains/RegisteredToolchainsFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/toolchains/RegisteredToolchainsFunctionTest.java
@@ -19,27 +19,15 @@
 import static com.google.devtools.build.skyframe.EvaluationResultSubjectFactory.assertThatEvaluationResult;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.testing.EqualsTester;
 import com.google.devtools.build.lib.analysis.platform.DeclaredToolchainInfo;
 import com.google.devtools.build.lib.analysis.platform.ToolchainTypeInfo;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.FakeRegistry;
-import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
-import com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.BazelCompatibilityMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.CheckDirectDepsMode;
-import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.LockfileMode;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.cmdline.PackageIdentifier;
 import com.google.devtools.build.lib.rules.platform.ToolchainTestCase;
-import com.google.devtools.build.lib.skyframe.PrecomputedValue;
-import com.google.devtools.build.lib.skyframe.PrecomputedValue.Injected;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.skyframe.EvaluationResult;
 import com.google.devtools.build.skyframe.SkyKey;
-import java.io.IOException;
 import java.util.stream.Collectors;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -49,30 +37,6 @@
 @RunWith(JUnit4.class)
 public class RegisteredToolchainsFunctionTest extends ToolchainTestCase {
 
-  private Path moduleRoot;
-  private FakeRegistry registry;
-
-  @Override
-  protected ImmutableList<Injected> extraPrecomputedValues() {
-    try {
-      moduleRoot = scratch.dir("modules");
-    } catch (IOException e) {
-      throw new IllegalStateException(e);
-    }
-    registry = FakeRegistry.DEFAULT_FACTORY.newFakeRegistry(moduleRoot.getPathString());
-    return ImmutableList.of(
-        PrecomputedValue.injected(
-            ModuleFileFunction.REGISTRIES, ImmutableList.of(registry.getUrl())),
-        PrecomputedValue.injected(ModuleFileFunction.IGNORE_DEV_DEPS, false),
-        PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()),
-        PrecomputedValue.injected(YankedVersionsUtil.ALLOWED_YANKED_VERSIONS, ImmutableList.of()),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.CHECK_DIRECT_DEPENDENCIES, CheckDirectDepsMode.WARNING),
-        PrecomputedValue.injected(
-            BazelModuleResolutionFunction.BAZEL_COMPATIBILITY_MODE, BazelCompatibilityMode.ERROR),
-        PrecomputedValue.injected(BazelLockFileFunction.LOCKFILE_MODE, LockfileMode.UPDATE));
-  }
-
   @Test
   public void testRegisteredToolchains() throws Exception {
     // Request the toolchains.
@@ -381,7 +345,6 @@
 
   @Test
   public void testRegisteredToolchains_bzlmod() throws Exception {
-    setBuildLanguageOptions("--enable_bzlmod");
     scratch.overwriteFile(
         "MODULE.bazel",
         "register_toolchains('//:tool')",
diff --git a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java
index 0fcca78..84592d1 100644
--- a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java
@@ -116,7 +116,7 @@
     checkError(
         "test/starlark",
         "the_rule",
-        "no such package '@r//': The repository '@r' could not be resolved",
+        "No repository visible as '@r'",
         "load('//test/starlark:extension.bzl', 'my_rule')",
         "",
         "my_rule(name='the_rule')");
@@ -1576,7 +1576,7 @@
 
     getConfiguredTarget("//test/starlark:cr");
     assertContainsEvent("output function cr");
-    assertContainsEvent("implementation @//test/starlark:cr");
+    assertContainsEvent("implementation @@//test/starlark:cr");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleClassFunctionsTest.java
index e17738c..dd5888a 100644
--- a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleClassFunctionsTest.java
@@ -2819,7 +2819,7 @@
                     Label.parseCanonical("//initializer_testing:b.bzl"), "MyInfo"));
 
     assertThat((List<String>) info.getValue("srcs")).containsExactly("initializer_testing/a.ml");
-    assertThat((List<String>) info.getValue("deps")).containsExactly("@//:initial", "@//:added");
+    assertThat((List<String>) info.getValue("deps")).containsExactly("@@//:initial", "@@//:added");
   }
 
   @Test
@@ -2878,7 +2878,7 @@
                 new StarlarkProvider.Key(
                     Label.parseCanonical("//initializer_testing:b.bzl"), "MyInfo"));
 
-    assertThat((List<String>) info.getValue("deps")).containsExactly("@//:initializer_default");
+    assertThat((List<String>) info.getValue("deps")).containsExactly("@@//:initializer_default");
   }
 
   @Test
@@ -2913,7 +2913,7 @@
                 new StarlarkProvider.Key(
                     Label.parseCanonical("//initializer_testing:b.bzl"), "MyInfo"));
 
-    assertThat((List<String>) info.getValue("deps")).containsExactly("@//:attr_default");
+    assertThat((List<String>) info.getValue("deps")).containsExactly("@@//:attr_default");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkStringRepresentationsTest.java b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkStringRepresentationsTest.java
index e3b6512..75db009 100644
--- a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkStringRepresentationsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkStringRepresentationsTest.java
@@ -233,9 +233,9 @@
 
   @Test
   public void testStringRepresentations_labels() throws Exception {
-    assertThat(starlarkLoadingEval("str(Label('//foo:bar'))")).isEqualTo("@//foo:bar");
-    assertThat(starlarkLoadingEval("'%s' % Label('//foo:bar')")).isEqualTo("@//foo:bar");
-    assertThat(starlarkLoadingEval("'{}'.format(Label('//foo:bar'))")).isEqualTo("@//foo:bar");
+    assertThat(starlarkLoadingEval("str(Label('//foo:bar'))")).isEqualTo("@@//foo:bar");
+    assertThat(starlarkLoadingEval("'%s' % Label('//foo:bar')")).isEqualTo("@@//foo:bar");
+    assertThat(starlarkLoadingEval("'{}'.format(Label('//foo:bar'))")).isEqualTo("@@//foo:bar");
     assertThat(starlarkLoadingEval("repr(Label('//foo:bar'))")).isEqualTo("Label(\"//foo:bar\")");
     assertThat(starlarkLoadingEval("'%r' % Label('//foo:bar')")).isEqualTo("Label(\"//foo:bar\")");
 
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java b/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java
index 99e2b4b..3c70cb7 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java
@@ -76,6 +76,7 @@
     outputBase = scratch.dir("/usr/local/google/_blaze_jrluser/FAKEMD5/");
     rootDirectory = scratch.dir("/workspace");
     scratch.file(rootDirectory.getRelative("WORKSPACE").getPathString());
+    scratch.file(rootDirectory.getRelative("MODULE.bazel").getPathString());
     root = Root.fromPath(rootDirectory);
   }