Skip to content

Commit d51144c

Browse files
Wyveraldcopybara-github
authored andcommitted
Turn on Bzlmod for all BuildViewTestCases
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
1 parent cfaefb9 commit d51144c

50 files changed

Lines changed: 342 additions & 620 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunction.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.google.devtools.build.lib.cmdline.RepositoryName;
2727
import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException;
2828
import com.google.devtools.build.lib.packages.Package;
29+
import com.google.devtools.build.lib.packages.RuleClassProvider;
2930
import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
3031
import com.google.devtools.build.skyframe.SkyFunction;
3132
import com.google.devtools.build.skyframe.SkyFunctionException;
@@ -40,6 +41,11 @@
4041

4142
/** {@link SkyFunction} for {@link RepositoryMappingValue}s. */
4243
public class RepositoryMappingFunction implements SkyFunction {
44+
private final RuleClassProvider ruleClassProvider;
45+
46+
public RepositoryMappingFunction(RuleClassProvider ruleClassProvider) {
47+
this.ruleClassProvider = ruleClassProvider;
48+
}
4349

4450
@Nullable
4551
@Override
@@ -58,7 +64,10 @@ public SkyValue compute(SkyKey skyKey, Environment env)
5864
// such as @platforms.
5965
RepositoryMappingValue bazelToolsMapping =
6066
(RepositoryMappingValue)
61-
env.getValue(RepositoryMappingValue.key(RepositoryName.BAZEL_TOOLS));
67+
env.getValue(
68+
RepositoryMappingValue.Key.create(
69+
ruleClassProvider.getToolsRepository(),
70+
/* rootModuleShouldSeeWorkspaceRepos= */ false));
6271
if (bazelToolsMapping == null) {
6372
return null;
6473
}
@@ -76,7 +85,9 @@ public SkyValue compute(SkyKey skyKey, Environment env)
7685
RepositoryName.MAIN),
7786
StarlarkBuiltinsValue.BUILTINS_REPO)
7887
.withAdditionalMappings(bazelToolsMapping.getRepositoryMapping()),
79-
"bazel_tools",
88+
// The "associated module" doesn't exist here (@_builtins doesn't come from a module),
89+
// so we just supply dummy values.
90+
"",
8091
Version.EMPTY);
8192
}
8293

src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -714,7 +714,7 @@ private ImmutableMap<SkyFunctionName, SkyFunction> skyFunctions() {
714714
map.put(SkyFunctions.REGISTERED_TOOLCHAINS, new RegisteredToolchainsFunction());
715715
map.put(SkyFunctions.SINGLE_TOOLCHAIN_RESOLUTION, new SingleToolchainResolutionFunction());
716716
map.put(SkyFunctions.TOOLCHAIN_RESOLUTION, new ToolchainResolutionFunction());
717-
map.put(SkyFunctions.REPOSITORY_MAPPING, new RepositoryMappingFunction());
717+
map.put(SkyFunctions.REPOSITORY_MAPPING, new RepositoryMappingFunction(ruleClassProvider));
718718
map.put(SkyFunctions.RESOLVED_FILE, new ResolvedFileFunction());
719719
map.put(
720720
SkyFunctions.PLATFORM_MAPPING,

src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,7 @@ public String getBaseNameForLoadedPackage(PackageIdentifier packageName) {
505505
.put(
506506
BzlmodRepoRuleValue.BZLMOD_REPO_RULE,
507507
new BzlmodRepoRuleFunction(ruleClassProvider, directories))
508-
.put(SkyFunctions.REPOSITORY_MAPPING, new RepositoryMappingFunction())
508+
.put(SkyFunctions.REPOSITORY_MAPPING, new RepositoryMappingFunction(ruleClassProvider))
509509
.put(
510510
SkyFunctions.PACKAGE,
511511
new PackageFunction(

src/test/java/com/google/devtools/build/lib/analysis/AutoExecGroupsTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1830,8 +1830,8 @@ public void ccCommonLink_cppLTOActionExecutesOnFirstPlatform() throws Exception
18301830
mockToolsConfig,
18311831
CcToolchainConfig.builder()
18321832
.withFeatures(CppRuleClasses.THIN_LTO, CppRuleClasses.SUPPORTS_START_END_LIB)
1833-
.withToolchainTargetConstraints("@//platforms:constraint_1")
1834-
.withToolchainExecConstraints("@//platforms:constraint_1"));
1833+
.withToolchainTargetConstraints("@@//platforms:constraint_1")
1834+
.withToolchainExecConstraints("@@//platforms:constraint_1"));
18351835

18361836
ImmutableList<Action> actions = getActions("//test:custom_rule_name", CppLinkAction.class);
18371837
ImmutableList<Action> cppLTOActions =
@@ -2006,8 +2006,8 @@ public void ccCommonCompile_moduleActionsExecuteOnFirstPlatform() throws Excepti
20062006
mockToolsConfig,
20072007
CcToolchainConfig.builder()
20082008
.withFeatures(MockCcSupport.HEADER_MODULES_FEATURES)
2009-
.withToolchainTargetConstraints("@//platforms:constraint_1")
2010-
.withToolchainExecConstraints("@//platforms:constraint_1"));
2009+
.withToolchainTargetConstraints("@@//platforms:constraint_1")
2010+
.withToolchainExecConstraints("@@//platforms:constraint_1"));
20112011

20122012
ImmutableList<Action> cppCompileActions =
20132013
getActions("//bazel_internal/test_rules/cc:custom_rule_name", CppCompileAction.class);
@@ -2077,8 +2077,8 @@ public void ccCommonCompile_codeGenModuleActionExecutesOnFirstPlatform() throws
20772077
mockToolsConfig,
20782078
CcToolchainConfig.builder()
20792079
.withFeatures(MockCcSupport.HEADER_MODULES_FEATURES)
2080-
.withToolchainTargetConstraints("@//platforms:constraint_1")
2081-
.withToolchainExecConstraints("@//platforms:constraint_1"));
2080+
.withToolchainTargetConstraints("@@//platforms:constraint_1")
2081+
.withToolchainExecConstraints("@@//platforms:constraint_1"));
20822082

20832083
ImmutableList<Action> cppCompileActions =
20842084
getActions("//bazel_internal/test_rules/cc:custom_rule_name", CppCompileAction.class);
@@ -2143,8 +2143,8 @@ public void ccCommonCompile_compileHeaderActionExecutesOnFirstPlatform() throws
21432143
mockToolsConfig,
21442144
CcToolchainConfig.builder()
21452145
.withFeatures(CppRuleClasses.PARSE_HEADERS)
2146-
.withToolchainTargetConstraints("@//platforms:constraint_1")
2147-
.withToolchainExecConstraints("@//platforms:constraint_1"));
2146+
.withToolchainTargetConstraints("@@//platforms:constraint_1")
2147+
.withToolchainExecConstraints("@@//platforms:constraint_1"));
21482148

21492149
ImmutableList<Action> cppCompileActions =
21502150
getActions("//bazel_internal/test_rules/cc:custom_rule_name", CppCompileAction.class);

src/test/java/com/google/devtools/build/lib/analysis/LocationExpanderIntegrationTest.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import static com.google.common.truth.Truth.assertThat;
1818

1919
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
20-
import com.google.devtools.build.lib.testutil.TestConstants;
2120
import com.google.devtools.build.lib.vfs.FileSystemUtils;
2221
import com.google.devtools.build.lib.vfs.ModifiedFileSet;
2322
import com.google.devtools.build.lib.vfs.Root;
@@ -138,21 +137,21 @@ public void otherPathExpansion() throws Exception {
138137
assertThat(expander.expand("foo $(rootpaths :foo) bar"))
139138
.matches("foo expansion/foo.txt bar");
140139
assertThat(expander.expand("foo $(rlocationpath :foo) bar"))
141-
.isEqualTo("foo workspace/expansion/foo.txt bar");
140+
.isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
142141
assertThat(expander.expand("foo $(rlocationpaths :foo) bar"))
143-
.isEqualTo("foo workspace/expansion/foo.txt bar");
142+
.isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
144143
assertThat(expander.expand("foo $(rlocationpath //expansion:foo) bar"))
145-
.isEqualTo("foo workspace/expansion/foo.txt bar");
144+
.isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
146145
assertThat(expander.expand("foo $(rlocationpaths //expansion:foo) bar"))
147-
.isEqualTo("foo workspace/expansion/foo.txt bar");
146+
.isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
148147
assertThat(expander.expand("foo $(rlocationpath @//expansion:foo) bar"))
149-
.isEqualTo("foo workspace/expansion/foo.txt bar");
148+
.isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
150149
assertThat(expander.expand("foo $(rlocationpaths @//expansion:foo) bar"))
151-
.isEqualTo("foo workspace/expansion/foo.txt bar");
150+
.isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
152151
assertThat(expander.expand("foo $(rlocationpath @workspace//expansion:foo) bar"))
153-
.isEqualTo("foo workspace/expansion/foo.txt bar");
152+
.isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
154153
assertThat(expander.expand("foo $(rlocationpaths @workspace//expansion:foo) bar"))
155-
.isEqualTo("foo workspace/expansion/foo.txt bar");
154+
.isEqualTo("foo " + ruleClassProvider.getRunfilesPrefix() + "/expansion/foo.txt bar");
156155
}
157156

158157
@Test
@@ -262,6 +261,6 @@ public void otherPathMultiExpansion() throws Exception {
262261
assertThat(expander.expand("foo $(rlocationpaths :foo) bar"))
263262
.isEqualTo(
264263
"foo __main__/expansion/bar.txt __main__/expansion/foo.txt bar"
265-
.replace("__main__", TestConstants.WORKSPACE_NAME));
264+
.replace("__main__", ruleClassProvider.getRunfilesPrefix()));
266265
}
267266
}

src/test/java/com/google/devtools/build/lib/analysis/RunfilesRepoMappingManifestTest.java

Lines changed: 4 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,9 @@
2222
import com.google.devtools.build.lib.actions.Action;
2323
import com.google.devtools.build.lib.actions.CommandLineExpansionException;
2424
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
25-
import com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction;
26-
import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionFunction;
27-
import com.google.devtools.build.lib.bazel.bzlmod.FakeRegistry;
28-
import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
29-
import com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil;
30-
import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.BazelCompatibilityMode;
31-
import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.CheckDirectDepsMode;
32-
import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.LockfileMode;
3325
import com.google.devtools.build.lib.rules.repository.RepositoryDirectoryDirtinessChecker;
34-
import com.google.devtools.build.lib.skyframe.PrecomputedValue;
35-
import com.google.devtools.build.lib.skyframe.PrecomputedValue.Injected;
3626
import com.google.devtools.build.lib.skyframe.SkyframeExecutorRepositoryHelpersHolder;
3727
import com.google.devtools.build.lib.util.Fingerprint;
38-
import com.google.devtools.build.lib.vfs.Path;
3928
import com.google.devtools.build.lib.vfs.PathFragment;
4029
import java.util.Map.Entry;
4130
import net.starlark.java.eval.EvalException;
@@ -48,25 +37,6 @@
4837
/** Tests that the repo mapping manifest file is properly generated for runfiles. */
4938
@RunWith(JUnit4.class)
5039
public class RunfilesRepoMappingManifestTest extends BuildViewTestCase {
51-
private Path moduleRoot;
52-
private FakeRegistry registry;
53-
54-
@Override
55-
protected ImmutableList<Injected> extraPrecomputedValues() throws Exception {
56-
moduleRoot = scratch.dir("modules");
57-
registry = FakeRegistry.DEFAULT_FACTORY.newFakeRegistry(moduleRoot.getPathString());
58-
return ImmutableList.of(
59-
PrecomputedValue.injected(
60-
ModuleFileFunction.REGISTRIES, ImmutableList.of(registry.getUrl())),
61-
PrecomputedValue.injected(ModuleFileFunction.IGNORE_DEV_DEPS, false),
62-
PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()),
63-
PrecomputedValue.injected(
64-
BazelModuleResolutionFunction.CHECK_DIRECT_DEPENDENCIES, CheckDirectDepsMode.WARNING),
65-
PrecomputedValue.injected(
66-
BazelModuleResolutionFunction.BAZEL_COMPATIBILITY_MODE, BazelCompatibilityMode.ERROR),
67-
PrecomputedValue.injected(BazelLockFileFunction.LOCKFILE_MODE, LockfileMode.UPDATE),
68-
PrecomputedValue.injected(YankedVersionsUtil.ALLOWED_YANKED_VERSIONS, ImmutableList.of()));
69-
}
7040

7141
@Override
7242
protected SkyframeExecutorRepositoryHelpersHolder getRepositoryHelpersHolder() {
@@ -76,11 +46,6 @@ protected SkyframeExecutorRepositoryHelpersHolder getRepositoryHelpersHolder() {
7646
new RepositoryDirectoryDirtinessChecker());
7747
}
7848

79-
@Before
80-
public void enableBzlmod() throws Exception {
81-
setBuildLanguageOptions("--enable_bzlmod");
82-
}
83-
8449
/**
8550
* Sets up a Bazel module [email protected], which provides a bare_binary rule that passes along
8651
* runfiles in the data attribute, and does nothing else.
@@ -269,6 +234,7 @@ public void actionRerunsOnRepoMappingChange_workspaceName() throws Exception {
269234
"bazel_dep(name='bare_rule',version='1.0')");
270235
scratch.overwriteFile(
271236
"BUILD", "load('@bare_rule//:defs.bzl', 'bare_binary')", "bare_binary(name='aaa')");
237+
invalidatePackages();
272238

273239
RepoMappingManifestAction actionBeforeChange = getRepoMappingManifestActionForTarget("//:aaa");
274240

@@ -288,6 +254,7 @@ public void actionRerunsOnRepoMappingChange_repoName() throws Exception {
288254
"bazel_dep(name='bare_rule',version='1.0')");
289255
scratch.overwriteFile(
290256
"BUILD", "load('@bare_rule//:defs.bzl', 'bare_binary')", "bare_binary(name='aaa')");
257+
invalidatePackages();
291258

292259
RepoMappingManifestAction actionBeforeChange = getRepoMappingManifestActionForTarget("//:aaa");
293260

@@ -320,6 +287,7 @@ public void actionRerunsOnRepoMappingChange_newEntry() throws Exception {
320287
scratch.overwriteFile(moduleRoot.getRelative("bbb~1.0").getRelative("BUILD").getPathString());
321288
scratch.overwriteFile(
322289
moduleRoot.getRelative("bbb~1.0").getRelative("def.bzl").getPathString(), "BBB = '1'");
290+
invalidatePackages();
323291

324292
RepoMappingManifestAction actionBeforeChange = getRepoMappingManifestActionForTarget("//:aaa");
325293

@@ -391,6 +359,7 @@ public void hasMappingForSymlinks() throws Exception {
391359
moduleRoot.getRelative("ddd~1.0/BUILD").getPathString(),
392360
"load('@bare_rule//:defs.bzl', 'bare_binary')",
393361
"bare_binary(name='ddd')");
362+
invalidatePackages();
394363

395364
RunfilesSupport runfilesSupport = getRunfilesSupport("@aaa~1.0//:aaa");
396365
ImmutableList<String> runfilesPaths =

src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -617,7 +617,7 @@ private void writeReadAndPassthroughOptionsTestFiles() throws Exception {
617617
"settings_under_test = {",
618618
" '//command_line_option:cpu': 'armeabi-v7a',",
619619
" '//command_line_option:compilation_mode': 'dbg',",
620-
" '//command_line_option:crosstool_top': '@//android/crosstool:everything',",
620+
" '//command_line_option:crosstool_top': '@@//android/crosstool:everything',",
621621
" '//command_line_option:platform_suffix': 'my-platform-suffix',",
622622
"}",
623623
"def set_options_transition_func(settings, attr):",

src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java

Lines changed: 3 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -27,29 +27,18 @@
2727
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
2828
import com.google.devtools.build.lib.analysis.util.DummyTestFragment;
2929
import com.google.devtools.build.lib.analysis.util.DummyTestFragment.DummyTestOptions;
30-
import com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction;
31-
import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionFunction;
32-
import com.google.devtools.build.lib.bazel.bzlmod.FakeRegistry;
33-
import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
34-
import com.google.devtools.build.lib.bazel.bzlmod.YankedVersionsUtil;
35-
import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.BazelCompatibilityMode;
36-
import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.CheckDirectDepsMode;
37-
import com.google.devtools.build.lib.bazel.repository.RepositoryOptions.LockfileMode;
3830
import com.google.devtools.build.lib.cmdline.Label;
3931
import com.google.devtools.build.lib.packages.Rule;
4032
import com.google.devtools.build.lib.packages.RuleTransitionData;
4133
import com.google.devtools.build.lib.rules.cpp.CppOptions;
4234
import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
43-
import com.google.devtools.build.lib.skyframe.PrecomputedValue;
44-
import com.google.devtools.build.lib.skyframe.PrecomputedValue.Injected;
4535
import com.google.devtools.build.lib.testutil.TestConstants;
4636
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
4737
import com.google.devtools.build.lib.vfs.ModifiedFileSet;
4838
import com.google.devtools.build.lib.vfs.PathFragment;
4939
import com.google.devtools.build.lib.vfs.Root;
5040
import com.google.testing.junit.testparameterinjector.TestParameterInjector;
5141
import com.google.testing.junit.testparameterinjector.TestParameters;
52-
import java.io.IOException;
5342
import java.util.ArrayList;
5443
import java.util.List;
5544
import java.util.Map;
@@ -60,28 +49,6 @@
6049
/** Tests for StarlarkRuleTransitionProvider. */
6150
@RunWith(TestParameterInjector.class)
6251
public final class StarlarkRuleTransitionProviderTest extends BuildViewTestCase {
63-
private FakeRegistry registry;
64-
65-
@Override
66-
protected ImmutableList<Injected> extraPrecomputedValues() {
67-
try {
68-
registry =
69-
FakeRegistry.DEFAULT_FACTORY.newFakeRegistry(scratch.dir("modules").getPathString());
70-
} catch (IOException e) {
71-
throw new IllegalStateException(e);
72-
}
73-
return ImmutableList.of(
74-
PrecomputedValue.injected(
75-
ModuleFileFunction.REGISTRIES, ImmutableList.of(registry.getUrl())),
76-
PrecomputedValue.injected(ModuleFileFunction.IGNORE_DEV_DEPS, false),
77-
PrecomputedValue.injected(ModuleFileFunction.MODULE_OVERRIDES, ImmutableMap.of()),
78-
PrecomputedValue.injected(YankedVersionsUtil.ALLOWED_YANKED_VERSIONS, ImmutableList.of()),
79-
PrecomputedValue.injected(
80-
BazelModuleResolutionFunction.CHECK_DIRECT_DEPENDENCIES, CheckDirectDepsMode.WARNING),
81-
PrecomputedValue.injected(
82-
BazelModuleResolutionFunction.BAZEL_COMPATIBILITY_MODE, BazelCompatibilityMode.ERROR),
83-
PrecomputedValue.injected(BazelLockFileFunction.LOCKFILE_MODE, LockfileMode.UPDATE));
84-
}
8552

8653
@Override
8754
protected ConfiguredRuleClassProvider createRuleClassProvider() {
@@ -1320,7 +1287,7 @@ public void successfulTypeConversionOfNativeListOption() throws Exception {
13201287

13211288
@Test
13221289
public void successfulTypeConversionOfNativeListOption_unambiguousLabels() throws Exception {
1323-
setBuildLanguageOptions("--enable_bzlmod", "--incompatible_unambiguous_label_stringification");
1290+
setBuildLanguageOptions("--incompatible_unambiguous_label_stringification");
13241291

13251292
scratch.overwriteFile("MODULE.bazel", "bazel_dep(name='rules_x',version='1.0')");
13261293
registry.addModule(createModuleKey("rules_x", "1.0"), "module(name='rules_x', version='1.0')");
@@ -1358,6 +1325,8 @@ public void successfulTypeConversionOfNativeListOption_unambiguousLabels() throw
13581325
"platform(name = 'my_platform')",
13591326
"my_rule(name = 'test')");
13601327

1328+
invalidatePackages();
1329+
13611330
getConfiguredTarget("//test");
13621331
assertNoEvents();
13631332
}

0 commit comments

Comments
 (0)