diff --git a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunction.java index ca81282f462a92..56d2c130313127 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunction.java @@ -163,7 +163,7 @@ static BazelModuleResolutionValue createValue( BiMap extensionUniqueNames = HashBiMap.create(); for (ModuleExtensionId id : extensionUsagesById.rowKeySet()) { String bestName = - id.getBzlFileLabel().getRepository().getName() + "." + id.getExtensionName(); + id.getBzlFileLabel().getRepository().getName() + "~" + id.getExtensionName(); if (!bestName.startsWith("@")) { // We have to special-case extensions hosted in well-known modules, because *all* repos // generated by Bzlmod have to have an '@'-prefixed name, except well-known modules. diff --git a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionValue.java b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionValue.java index 669676fbc8bba7..7b1ee5c5d0606b 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionValue.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionValue.java @@ -107,7 +107,7 @@ public final RepositoryMapping getFullRepoMapping(ModuleKey key) { ModuleExtensionUsage usage = e.getValue(); for (Map.Entry entry : usage.getImports().entrySet()) { String canonicalRepoName = - getExtensionUniqueNames().get(extensionId) + "." + entry.getValue(); + getExtensionUniqueNames().get(extensionId) + "~" + entry.getValue(); mapping.put(entry.getKey(), RepositoryName.createUnvalidated(canonicalRepoName)); } } diff --git a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleExtensionResolutionFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleExtensionResolutionFunction.java index 3046d98062bd34..cede979c84fa91 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleExtensionResolutionFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleExtensionResolutionFunction.java @@ -77,7 +77,7 @@ public SkyValue compute(SkyKey skyKey, Environment env) ImmutableMap generatedRepos = ((SingleExtensionEvalValue) value).getGeneratedRepos(); String repoPrefix = - bazelModuleResolutionValue.getExtensionUniqueNames().get(extensionId) + '.'; + bazelModuleResolutionValue.getExtensionUniqueNames().get(extensionId) + '~'; for (Map.Entry entry : generatedRepos.entrySet()) { RepositoryName canonicalRepoName = RepositoryName.createUnvalidated(repoPrefix + entry.getKey()); diff --git a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleKey.java b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleKey.java index 29bba96c057beb..99712a10da513b 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleKey.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleKey.java @@ -76,6 +76,6 @@ public RepositoryName getCanonicalRepoName() { return RepositoryName.MAIN; } return RepositoryName.createUnvalidated( - String.format("@%s.%s", getName(), getVersion().isEmpty() ? "override" : getVersion())); + String.format("@%s~%s", getName(), getVersion().isEmpty() ? "override" : getVersion())); } } diff --git a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/SingleExtensionEvalFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/SingleExtensionEvalFunction.java index a2da5c8513069d..686e2040f21b51 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/SingleExtensionEvalFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/SingleExtensionEvalFunction.java @@ -31,7 +31,6 @@ import com.google.devtools.build.lib.skyframe.PrecomputedValue; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.skyframe.SkyFunction; -import com.google.devtools.build.skyframe.SkyFunction.Environment; import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyFunctionException.Transience; import com.google.devtools.build.skyframe.SkyKey; @@ -158,7 +157,7 @@ public SkyValue compute(SkyKey skyKey, Environment env) ModuleExtension extension = ((ModuleExtension.InStarlark) exported).get(); ModuleExtensionEvalStarlarkThreadContext threadContext = new ModuleExtensionEvalStarlarkThreadContext( - usagesValue.getExtensionUniqueName() + ".", + usagesValue.getExtensionUniqueName() + "~", extensionId.getBzlFileLabel().getPackageIdentifier(), BazelModuleContext.of(bzlLoadValue.getModule()).repoMapping(), directories, @@ -170,8 +169,6 @@ public SkyValue compute(SkyKey skyKey, Environment env) ModuleExtensionContext moduleContext = createContext(env, usagesValue, starlarkSemantics, extension); threadContext.storeInThread(thread); - // TODO(wyv): support native.register_toolchains - // TODO(wyv): make sure the Label constructor works try { Starlark.fastcall( thread, extension.getImplementation(), new Object[] {moduleContext}, new Object[0]); diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java b/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java index 869172fdf242c2..b8d0c3083572ef 100644 --- a/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java +++ b/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java @@ -37,7 +37,7 @@ public final class RepositoryName { @SerializationConstant public static final RepositoryName MAIN = new RepositoryName(""); - private static final Pattern VALID_REPO_NAME = Pattern.compile("@?[\\w\\-.#]*"); + private static final Pattern VALID_REPO_NAME = Pattern.compile("@?[\\w\\-.~]*"); private static final LoadingCache repositoryNameCache = Caffeine.newBuilder() @@ -145,7 +145,7 @@ static void validate(String name) throws LabelSyntaxException { if (!VALID_REPO_NAME.matcher(name).matches()) { throw LabelParser.syntaxErrorf( "invalid repository name '@%s': repo names may contain only A-Z, a-z, 0-9, '-', '_', '.'" - + " and '#'", + + " and '~'", StringUtilities.sanitizeControlChars(name)); } } 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 136a99f0a05f86..6d71746569cb3d 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 @@ -182,7 +182,7 @@ private Optional computeForModuleExtensionRepo( internalName -> internalName, internalName -> RepositoryName.createUnvalidated( - extensionUniqueName + "." + internalName))); + extensionUniqueName + "~" + internalName))); // Find the key of the module containing this extension. This will be used to compute additional // mappings -- any repo generated by an extension contained in the module "foo" can additionally // see all repos that "foo" can see. @@ -213,7 +213,7 @@ private SkyValue computeFromWorkspace( RepositoryMapping.createAllowingFallback( externalPackage.getRepositoryMapping(repositoryName))); } - // If bzlmod is in play, we need to transform mappings to "foo" into mappings for "foo.1.3" (if + // If bzlmod is in play, we need to transform mappings to "foo" into mappings for "foo~1.3" (if // there is a module called "foo" in the dep graph and its version is 1.3, that is). ImmutableMap moduleNameLookup = bazelModuleResolutionValue.getModuleNameLookup(); @@ -228,7 +228,7 @@ private SkyValue computeFromWorkspace( ModuleKey moduleKey = moduleNameLookup.get(toRepo.getName()); return moduleKey == null ? toRepo : moduleKey.getCanonicalRepoName(); })); - // If there's no existing mapping to "foo", we should add a mapping from "foo" to "foo.1.3" + // If there's no existing mapping to "foo", we should add a mapping from "foo" to "foo~1.3" // anyways. for (Map.Entry entry : moduleNameLookup.entrySet()) { mapping.putIfAbsent(entry.getKey(), entry.getValue().getCanonicalRepoName()); 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 e3a8daa79efb80..742aeefe2ae833 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 @@ -93,13 +93,13 @@ public void createValue_basic() throws Exception { .containsExactly( RepositoryName.MAIN, ModuleKey.ROOT, - RepositoryName.create("@dep.1.0"), + RepositoryName.create("@dep~1.0"), createModuleKey("dep", "1.0"), - RepositoryName.create("@dep.2.0"), + RepositoryName.create("@dep~2.0"), createModuleKey("dep", "2.0"), - RepositoryName.create("@rules_cc.1.0"), + RepositoryName.create("@rules_cc~1.0"), createModuleKey("rules_cc", "1.0"), - RepositoryName.create("@rules_java.override"), + RepositoryName.create("@rules_java~override"), createModuleKey("rules_java", "")); assertThat(value.getModuleNameLookup()) .containsExactly( @@ -156,14 +156,14 @@ public void createValue_moduleExtensions() throws Exception { ModuleExtensionId maven = ModuleExtensionId.create( - Label.parseCanonical("@@rules_jvm_external.1.0//:defs.bzl"), "maven"); + Label.parseCanonical("@@rules_jvm_external~1.0//:defs.bzl"), "maven"); ModuleExtensionId pip = - ModuleExtensionId.create(Label.parseCanonical("@@rules_python.2.0//:defs.bzl"), "pip"); + ModuleExtensionId.create(Label.parseCanonical("@@rules_python~2.0//:defs.bzl"), "pip"); ModuleExtensionId myext = - ModuleExtensionId.create(Label.parseCanonical("@@dep.2.0//:defs.bzl"), "myext"); + ModuleExtensionId.create(Label.parseCanonical("@@dep~2.0//:defs.bzl"), "myext"); ModuleExtensionId myext2 = ModuleExtensionId.create( - Label.parseCanonical("@@dep.2.0//incredible:conflict.bzl"), "myext"); + Label.parseCanonical("@@dep~2.0//incredible:conflict.bzl"), "myext"); BazelModuleResolutionValue value = BazelModuleResolutionFunction.createValue(depGraph, depGraph, ImmutableMap.of()); @@ -181,10 +181,10 @@ public void createValue_moduleExtensions() throws Exception { assertThat(value.getExtensionUniqueNames()) .containsExactly( - maven, "@rules_jvm_external.1.0.maven", - pip, "@rules_python.2.0.pip", - myext, "@dep.2.0.myext", - myext2, "@dep.2.0.myext2"); + maven, "@rules_jvm_external~1.0~maven", + pip, "@rules_python~2.0~pip", + myext, "@dep~2.0~myext", + myext2, "@dep~2.0~myext2"); assertThat(value.getFullRepoMapping(ModuleKey.ROOT)) .isEqualTo( @@ -195,26 +195,26 @@ public void createValue_moduleExtensions() throws Exception { "root", "", "rje", - "@rules_jvm_external.1.0", + "@rules_jvm_external~1.0", "rpy", - "@rules_python.2.0", + "@rules_python~2.0", "av", - "@rules_jvm_external.1.0.maven.autovalue", + "@rules_jvm_external~1.0~maven~autovalue", "numpy", - "@rules_python.2.0.pip.numpy")); + "@rules_python~2.0~pip~numpy")); assertThat(value.getFullRepoMapping(depKey)) .isEqualTo( createRepositoryMapping( depKey, "dep", - "@dep.2.0", + "@dep~2.0", "rules_python", - "@rules_python.2.0", + "@rules_python~2.0", "np", - "@rules_python.2.0.pip.numpy", + "@rules_python~2.0~pip~numpy", "oneext", - "@dep.2.0.myext.myext", + "@dep~2.0~myext~myext", "twoext", - "@dep.2.0.myext2.myext")); + "@dep~2.0~myext2~myext")); } } diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleHelperTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleHelperTest.java index e93836b317ad0b..1b1ac8b8506278 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleHelperTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleHelperTest.java @@ -147,18 +147,18 @@ public void getRepoSpec_bazelModule() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - evaluator.evaluate(ImmutableList.of(getRepoSpecByNameKey("@C.2.0")), evaluationContext); + evaluator.evaluate(ImmutableList.of(getRepoSpecByNameKey("@C~2.0")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } - Optional repoSpec = result.get(getRepoSpecByNameKey("@C.2.0")).rule(); + Optional repoSpec = result.get(getRepoSpecByNameKey("@C~2.0")).rule(); assertThat(repoSpec) .hasValue( RepoSpec.builder() .setRuleClassName("local_repository") .setAttributes( - ImmutableMap.of("name", "@C.2.0", "path", "/usr/local/modules/@C.2.0")) + ImmutableMap.of("name", "@C~2.0", "path", "/usr/local/modules/@C~2.0")) .build()); } @@ -180,19 +180,19 @@ public void getRepoSpec_nonRegistryOverride() throws Exception { EvaluationResult result = evaluator.evaluate( - ImmutableList.of(getRepoSpecByNameKey("@C.override")), evaluationContext); + ImmutableList.of(getRepoSpecByNameKey("@C~override")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } - Optional repoSpec = result.get(getRepoSpecByNameKey("@C.override")).rule(); + Optional repoSpec = result.get(getRepoSpecByNameKey("@C~override")).rule(); assertThat(repoSpec) .hasValue( RepoSpec.builder() .setRuleClassName("local_repository") .setAttributes( ImmutableMap.of( - "name", "@C.override", + "name", "@C~override", "path", "/foo/bar/C")) .build()); } @@ -216,12 +216,12 @@ public void getRepoSpec_singleVersionOverride() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - evaluator.evaluate(ImmutableList.of(getRepoSpecByNameKey("@C.3.0")), evaluationContext); + evaluator.evaluate(ImmutableList.of(getRepoSpecByNameKey("@C~3.0")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } - Optional repoSpec = result.get(getRepoSpecByNameKey("@C.3.0")).rule(); + Optional repoSpec = result.get(getRepoSpecByNameKey("@C~3.0")).rule(); assertThat(repoSpec) .hasValue( RepoSpec.builder() @@ -232,9 +232,9 @@ public void getRepoSpec_singleVersionOverride() throws Exception { .setAttributes( ImmutableMap.of( "name", - "@C.3.0", + "@C~3.0", "path", - "/usr/local/modules/@C.3.0", + "/usr/local/modules/@C~3.0", "patches", ImmutableList.of("//:foo.patch"), "patch_args", @@ -264,18 +264,18 @@ public void getRepoSpec_multipleVersionOverride() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - evaluator.evaluate(ImmutableList.of(getRepoSpecByNameKey("@D.2.0")), evaluationContext); + evaluator.evaluate(ImmutableList.of(getRepoSpecByNameKey("@D~2.0")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } - Optional repoSpec = result.get(getRepoSpecByNameKey("@D.2.0")).rule(); + Optional repoSpec = result.get(getRepoSpecByNameKey("@D~2.0")).rule(); assertThat(repoSpec) .hasValue( RepoSpec.builder() .setRuleClassName("local_repository") .setAttributes( - ImmutableMap.of("name", "@D.2.0", "path", "/usr/local/modules/@D.2.0")) + ImmutableMap.of("name", "@D~2.0", "path", "/usr/local/modules/@D~2.0")) .build()); } 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 f9c816986ae089..74d1c5f503a03e 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 @@ -258,10 +258,10 @@ ruleClassProvider, directories, new BzlmodRepoRuleHelperImpl())) // Set up a simple repo rule. registry.addModule( createModuleKey("data_repo", "1.0"), "module(name='data_repo',version='1.0')"); - scratch.file(modulesRoot.getRelative("@data_repo.1.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@data_repo.1.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@data_repo~1.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@data_repo~1.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@data_repo.1.0/defs.bzl").getPathString(), + modulesRoot.getRelative("@data_repo~1.0/defs.bzl").getPathString(), "def _data_repo_impl(ctx):", " ctx.file('WORKSPACE')", " ctx.file('BUILD')", @@ -353,10 +353,10 @@ public void multipleModules() throws Exception { createModuleKey("ext", "1.0"), "module(name='ext',version='1.0')", "bazel_dep(name='data_repo',version='1.0')"); - scratch.file(modulesRoot.getRelative("@ext.1.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@ext.1.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@ext.1.0/defs.bzl").getPathString(), + modulesRoot.getRelative("@ext~1.0/defs.bzl").getPathString(), "load('@data_repo//:defs.bzl','data_repo')", "def _ext_impl(ctx):", " data_str = ''", @@ -413,10 +413,10 @@ public void multipleModules_devDependency() throws Exception { createModuleKey("ext", "1.0"), "module(name='ext',version='1.0')", "bazel_dep(name='data_repo',version='1.0')"); - scratch.file(modulesRoot.getRelative("@ext.1.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@ext.1.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@ext.1.0/defs.bzl").getPathString(), + modulesRoot.getRelative("@ext~1.0/defs.bzl").getPathString(), "load('@data_repo//:defs.bzl','data_repo')", "def _ext_impl(ctx):", " data_str = 'modules:'", @@ -464,10 +464,10 @@ public void multipleModules_ignoreDevDependency() throws Exception { createModuleKey("ext", "1.0"), "module(name='ext',version='1.0')", "bazel_dep(name='data_repo',version='1.0')"); - scratch.file(modulesRoot.getRelative("@ext.1.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@ext.1.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@ext.1.0/defs.bzl").getPathString(), + modulesRoot.getRelative("@ext~1.0/defs.bzl").getPathString(), "load('@data_repo//:defs.bzl','data_repo')", "def _ext_impl(ctx):", " data_str = 'modules:'", @@ -481,7 +481,7 @@ public void multipleModules_ignoreDevDependency() throws Exception { ModuleFileFunction.IGNORE_DEV_DEPS.set(differencer, true); SkyKey skyKey = - BzlLoadValue.keyForBuild(Label.parseCanonical("@@ext.1.0.ext.ext_repo//:data.bzl")); + BzlLoadValue.keyForBuild(Label.parseCanonical("@@ext~1.0~ext~ext_repo//:data.bzl")); EvaluationResult result = evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { @@ -514,19 +514,19 @@ public void labels_readInModuleExtension() throws Exception { "ext = use_extension('@ext//:defs.bzl','ext')", "ext.tag(file='@bar//:requirements.txt')"); registry.addModule(createModuleKey("bar", "2.0"), "module(name='bar',version='2.0')"); - scratch.file(modulesRoot.getRelative("@bar.2.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@bar.2.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@bar~2.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@bar~2.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@bar.2.0/requirements.txt").getPathString(), "go to bed at 11pm."); + modulesRoot.getRelative("@bar~2.0/requirements.txt").getPathString(), "go to bed at 11pm."); registry.addModule( createModuleKey("ext", "1.0"), "module(name='ext',version='1.0')", "bazel_dep(name='data_repo',version='1.0')"); - scratch.file(modulesRoot.getRelative("@ext.1.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@ext.1.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@ext.1.0/defs.bzl").getPathString(), + modulesRoot.getRelative("@ext~1.0/defs.bzl").getPathString(), "load('@data_repo//:defs.bzl','data_repo')", "def _ext_impl(ctx):", " data_str = 'requirements:'", @@ -571,16 +571,16 @@ public void labels_passedOnToRepoRule() throws Exception { "ext = use_extension('@ext//:defs.bzl','ext')", "ext.tag(file='@bar//:requirements.txt')"); registry.addModule(createModuleKey("bar", "2.0"), "module(name='bar',version='2.0')"); - scratch.file(modulesRoot.getRelative("@bar.2.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@bar.2.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@bar~2.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@bar~2.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@bar.2.0/requirements.txt").getPathString(), "go to bed at 11pm."); + modulesRoot.getRelative("@bar~2.0/requirements.txt").getPathString(), "go to bed at 11pm."); registry.addModule(createModuleKey("ext", "1.0"), "module(name='ext',version='1.0')"); - scratch.file(modulesRoot.getRelative("@ext.1.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@ext.1.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@ext.1.0/defs.bzl").getPathString(), + modulesRoot.getRelative("@ext~1.0/defs.bzl").getPathString(), "def _data_repo_impl(ctx):", " ctx.file('WORKSPACE')", " ctx.file('BUILD')", @@ -637,10 +637,10 @@ public void labels_fromExtensionGeneratedRepo() throws Exception { scratch.file(workspaceRoot.getRelative("requirements.txt").getPathString(), "get up at 6am."); registry.addModule(createModuleKey("ext", "1.0"), "module(name='ext',version='1.0')"); - scratch.file(modulesRoot.getRelative("@ext.1.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@ext.1.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@ext.1.0/defs.bzl").getPathString(), + modulesRoot.getRelative("@ext~1.0/defs.bzl").getPathString(), "def _data_repo_impl(ctx):", " ctx.file('WORKSPACE')", " ctx.file('BUILD')", @@ -682,15 +682,15 @@ public void labels_constructedInModuleExtension_readInModuleExtension() throws E "data=ext_data"); registry.addModule(createModuleKey("foo", "1.0"), "module(name='foo',version='1.0')"); - scratch.file(modulesRoot.getRelative("@foo.1.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@foo.1.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@foo~1.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@foo~1.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@foo.1.0/requirements.txt").getPathString(), "get up at 6am."); + modulesRoot.getRelative("@foo~1.0/requirements.txt").getPathString(), "get up at 6am."); registry.addModule(createModuleKey("bar", "2.0"), "module(name='bar',version='2.0')"); - scratch.file(modulesRoot.getRelative("@bar.2.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@bar.2.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@bar~2.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@bar~2.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@bar.2.0/requirements.txt").getPathString(), "go to bed at 11pm."); + modulesRoot.getRelative("@bar~2.0/requirements.txt").getPathString(), "go to bed at 11pm."); registry.addModule( createModuleKey("ext", "1.0"), @@ -698,10 +698,10 @@ public void labels_constructedInModuleExtension_readInModuleExtension() throws E "bazel_dep(name='foo',version='1.0')", "bazel_dep(name='bar',version='2.0')", "bazel_dep(name='data_repo',version='1.0')"); - scratch.file(modulesRoot.getRelative("@ext.1.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@ext.1.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@ext.1.0/defs.bzl").getPathString(), + modulesRoot.getRelative("@ext~1.0/defs.bzl").getPathString(), "load('@data_repo//:defs.bzl','data_repo')", "def _ext_impl(ctx):", // The Label() call on the following line should work, using ext.1.0's repo mapping. @@ -738,20 +738,20 @@ public void labels_constructedInModuleExtensionAsString_passedOnToRepoRule() thr "data=ext_data"); registry.addModule(createModuleKey("foo", "1.0"), "module(name='foo',version='1.0')"); - scratch.file(modulesRoot.getRelative("@foo.1.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@foo.1.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@foo~1.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@foo~1.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@foo.1.0/requirements.txt").getPathString(), "get up at 6am."); + modulesRoot.getRelative("@foo~1.0/requirements.txt").getPathString(), "get up at 6am."); registry.addModule( createModuleKey("ext", "1.0"), "module(name='ext',version='1.0')", "bazel_dep(name='foo',version='1.0')", "bazel_dep(name='data_repo',version='1.0')"); - scratch.file(modulesRoot.getRelative("@ext.1.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@ext.1.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@ext~1.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@ext.1.0/defs.bzl").getPathString(), + modulesRoot.getRelative("@ext~1.0/defs.bzl").getPathString(), "def _data_repo_impl(ctx):", " ctx.file('WORKSPACE')", " ctx.file('BUILD')", @@ -889,10 +889,10 @@ public void generatedReposHaveCorrectMappings() throws Exception { "ext=module_extension(implementation=_ext_impl,tag_classes={'tag':tag})"); registry.addModule(createModuleKey("foo", "1.0"), "module(name='foo',version='1.0')"); - scratch.file(modulesRoot.getRelative("@foo.1.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@foo.1.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@foo~1.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@foo~1.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@foo.1.0/data.bzl").getPathString(), "data = 'foo-stuff'"); + modulesRoot.getRelative("@foo~1.0/data.bzl").getPathString(), "data = 'foo-stuff'"); SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseCanonical("//:data.bzl")); EvaluationResult result = @@ -939,10 +939,10 @@ public void generatedReposHaveCorrectMappings_internalRepoWins() throws Exceptio "ext=module_extension(implementation=_ext_impl,tag_classes={'tag':tag})"); registry.addModule(createModuleKey("foo", "1.0"), "module(name='foo',version='1.0')"); - scratch.file(modulesRoot.getRelative("@foo.1.0/WORKSPACE").getPathString()); - scratch.file(modulesRoot.getRelative("@foo.1.0/BUILD").getPathString()); + scratch.file(modulesRoot.getRelative("@foo~1.0/WORKSPACE").getPathString()); + scratch.file(modulesRoot.getRelative("@foo~1.0/BUILD").getPathString()); scratch.file( - modulesRoot.getRelative("@foo.1.0/data.bzl").getPathString(), "data = 'outer-foo'"); + modulesRoot.getRelative("@foo~1.0/data.bzl").getPathString(), "data = 'outer-foo'"); SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseCanonical("//:data.bzl")); EvaluationResult result = @@ -984,7 +984,7 @@ public void generatedReposHaveCorrectMappings_strictDepsViolation() throws Excep assertThat(result.hasError()).isTrue(); assertThat(result.getError().getException()) .hasMessageThat() - .contains("Repository '@foo' is not visible from repository '@@.ext.ext'"); + .contains("Repository '@foo' is not visible from repository '@@~ext~ext'"); } @Test 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 6d94e1b9622744..38a5f715d0ad1b 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 @@ -226,7 +226,7 @@ public void testRootModule() throws Exception { 0)); assertThat(rootModuleFileValue.getNonRegistryOverrideCanonicalRepoNameLookup()) .containsExactly( - RepositoryName.create("@E.override"), "E", RepositoryName.create("@G.override"), "G"); + RepositoryName.create("@E~override"), "E", RepositoryName.create("@G~override"), "G"); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleTest.java index 3aecdb914508ed..e7ba475b190f13 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleTest.java @@ -61,11 +61,11 @@ public void getRepoMapping() throws Exception { createRepositoryMapping( key, "test_module", - "@test_module.1.0", + "@test_module~1.0", "my_foo", - "@foo.1.0", + "@foo~1.0", "my_bar", - "@bar.2.0", + "@bar~2.0", "my_root", "")); } @@ -87,8 +87,8 @@ public void getRepoMapping_asMainModule() throws Exception { "test_module", "", "my_foo", - "@foo.1.0", + "@foo~1.0", "my_bar", - "@bar.2.0")); + "@bar~2.0")); } } diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/StarlarkBazelModuleTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/StarlarkBazelModuleTest.java index 44dcd4de2be750..16fea23fe95156 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/StarlarkBazelModuleTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/StarlarkBazelModuleTest.java @@ -116,8 +116,8 @@ public void basic() throws Exception { assertThat(pomTags.get(0).getValue("pom_xmls")) .isEqualTo( StarlarkList.immutableOf( - Label.parseCanonical("@@foo.override//:pom.xml"), - Label.parseCanonical("@@bar.2.0//:pom.xml"))); + Label.parseCanonical("@@foo~override//:pom.xml"), + Label.parseCanonical("@@bar~2.0//:pom.xml"))); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/cmdline/RepositoryNameTest.java b/src/test/java/com/google/devtools/build/lib/cmdline/RepositoryNameTest.java index 570b9c5ac8280c..59e4329c02e0a7 100644 --- a/src/test/java/com/google/devtools/build/lib/cmdline/RepositoryNameTest.java +++ b/src/test/java/com/google/devtools/build/lib/cmdline/RepositoryNameTest.java @@ -44,13 +44,13 @@ public void testValidateRepositoryName() throws Exception { assertThat(RepositoryName.create("foo..").getNameWithAt()).isEqualTo("@foo.."); assertThat(RepositoryName.create(".foo").getNameWithAt()).isEqualTo("@.foo"); assertThat(RepositoryName.create("@foo").getNameWithAt()).isEqualTo("@@foo"); - assertThat(RepositoryName.create("@foo#bar").getNameWithAt()).isEqualTo("@@foo#bar"); + assertThat(RepositoryName.create("@foo~bar").getNameWithAt()).isEqualTo("@@foo~bar"); assertNotValid(".", "repo names are not allowed to be '@.'"); assertNotValid("..", "repo names are not allowed to be '@..'"); - assertNotValid("foo/bar", "repo names may contain only A-Z, a-z, 0-9, '-', '_', '.' and '#'"); - assertNotValid("foo@", "repo names may contain only A-Z, a-z, 0-9, '-', '_', '.' and '#'"); - assertNotValid("foo\0", "repo names may contain only A-Z, a-z, 0-9, '-', '_', '.' and '#'"); + assertNotValid("foo/bar", "repo names may contain only A-Z, a-z, 0-9, '-', '_', '.' and '~'"); + assertNotValid("foo@", "repo names may contain only A-Z, a-z, 0-9, '-', '_', '.' and '~'"); + assertNotValid("foo\0", "repo names may contain only A-Z, a-z, 0-9, '-', '_', '.' and '~'"); } @Test 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 cf7e64f7189a90..6950384ae648a4 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 @@ -778,19 +778,19 @@ public void testLoadBzlFileFromBzlmod() throws Exception { "module(name='foo',version='1.0')", "bazel_dep(name='bar',version='2.0',repo_name='bar_alias')") .addModule(createModuleKey("bar", "2.0"), "module(name='bar',version='2.0')"); - Path fooDir = moduleRoot.getRelative("@foo.1.0"); + Path fooDir = moduleRoot.getRelative("@foo~1.0"); scratch.file(fooDir.getRelative("WORKSPACE").getPathString()); scratch.file(fooDir.getRelative("BUILD").getPathString()); scratch.file( fooDir.getRelative("test.bzl").getPathString(), "load('@bar_alias//:test.bzl', 'haha')", "hoho = haha"); - Path barDir = moduleRoot.getRelative("@bar.2.0"); + Path barDir = moduleRoot.getRelative("@bar~2.0"); scratch.file(barDir.getRelative("WORKSPACE").getPathString()); scratch.file(barDir.getRelative("BUILD").getPathString()); scratch.file(barDir.getRelative("test.bzl").getPathString(), "haha = 5"); - SkyKey skyKey = BzlLoadValue.keyForBzlmod(Label.parseCanonical("@@foo.1.0//:test.bzl")); + SkyKey skyKey = BzlLoadValue.keyForBzlmod(Label.parseCanonical("@@foo~1.0//:test.bzl")); EvaluationResult result = SkyframeExecutorTestUtils.evaluate( getSkyframeExecutor(), skyKey, /*keepGoing=*/ false, reporter); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunctionTest.java index 1fb646fa349410..1ac89208069a98 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunctionTest.java @@ -378,7 +378,7 @@ public void testRegisteredExecutionPlatforms_bzlmod() throws Exception { ")", "bazel_dep(name='E',version='1.0')") .addModule(createModuleKey("E", "1.0"), "module(name='E', version='1.0')"); - for (String repo : ImmutableList.of("@B.1.0", "@C.1.1", "@D.1.0", "@D.1.1", "@E.1.0")) { + for (String repo : ImmutableList.of("@B~1.0", "@C~1.1", "@D~1.0", "@D~1.1", "@E~1.0")) { scratch.file(moduleRoot.getRelative(repo).getRelative("WORKSPACE").getPathString()); scratch.file( moduleRoot.getRelative(repo).getRelative("BUILD").getPathString(), @@ -400,10 +400,10 @@ public void testRegisteredExecutionPlatforms_bzlmod() throws Exception { assertExecutionPlatformLabels(result.get(executionPlatformsKey)) .containsExactly( Label.parseCanonical("//:plat"), - Label.parseCanonical("@@B.1.0//:plat"), - Label.parseCanonical("@@C.1.1//:plat"), - Label.parseCanonical("@@E.1.0//:plat"), - Label.parseCanonical("@@D.1.1//:plat"), + Label.parseCanonical("@@B~1.0//:plat"), + Label.parseCanonical("@@C~1.1//:plat"), + Label.parseCanonical("@@E~1.0//:plat"), + Label.parseCanonical("@@D~1.1//:plat"), Label.parseCanonical("//:wsplat")) .inOrder(); } diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunctionTest.java index b518909c8ea66e..57eb7b967739b6 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunctionTest.java @@ -355,7 +355,7 @@ public void testRegisteredToolchains_bzlmod() throws Exception { createModuleKey("toolchain_def", "1.0"), "module(name='toolchain_def',version='1.0')"); // Everyone depends on toolchain_def@1.0 for the declare_toolchain macro. - Path toolchainDefDir = moduleRoot.getRelative("@toolchain_def.1.0"); + Path toolchainDefDir = moduleRoot.getRelative("@toolchain_def~1.0"); scratch.file(toolchainDefDir.getRelative("WORKSPACE").getPathString()); scratch.file( toolchainDefDir.getRelative("BUILD").getPathString(), @@ -376,7 +376,7 @@ public void testRegisteredToolchains_bzlmod() throws Exception { " data = 'stuff')"); // Now create the toolchains for each module. - for (String repo : ImmutableList.of("@B.1.0", "@C.1.1", "@D.1.0", "@D.1.1", "@E.1.0")) { + for (String repo : ImmutableList.of("@B~1.0", "@C~1.1", "@D~1.0", "@D~1.1", "@E~1.0")) { scratch.file(moduleRoot.getRelative(repo).getRelative("WORKSPACE").getPathString()); scratch.file( moduleRoot.getRelative(repo).getRelative("BUILD").getPathString(), @@ -403,10 +403,10 @@ public void testRegisteredToolchains_bzlmod() throws Exception { assertToolchainLabels(result.get(toolchainsKey)) .containsAtLeast( Label.parseCanonical("//:tool_impl"), - Label.parseCanonical("@@B.1.0//:tool_impl"), - Label.parseCanonical("@@C.1.1//:tool_impl"), - Label.parseCanonical("@@E.1.0//:tool_impl"), - Label.parseCanonical("@@D.1.1//:tool_impl"), + Label.parseCanonical("@@B~1.0//:tool_impl"), + Label.parseCanonical("@@C~1.1//:tool_impl"), + Label.parseCanonical("@@E~1.0//:tool_impl"), + Label.parseCanonical("@@D~1.1//:tool_impl"), Label.parseCanonical("//:wstool_impl")) .inOrder(); } 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 c29258d48c1c79..06dbc4d1cdd03a 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 @@ -173,7 +173,7 @@ public void testRepoNameMapping_asMainModule() throws Exception { TestConstants.WORKSPACE_NAME, RepositoryName.MAIN, "com_foo_bar_b", - RepositoryName.create("@B.1.0")), + RepositoryName.create("@B~1.0")), name)); } @@ -191,7 +191,7 @@ public void testRepoNameMapping_asDependency() throws Exception { "module(name='C', version='1.0')", "bazel_dep(name='B', version='1.0', repo_name='com_foo_bar_b')"); - RepositoryName name = RepositoryName.create("@C.1.0"); + RepositoryName name = RepositoryName.create("@C~1.0"); SkyKey skyKey = RepositoryMappingValue.key(name); EvaluationResult result = eval(skyKey); @@ -201,8 +201,8 @@ public void testRepoNameMapping_asDependency() throws Exception { .isEqualTo( withMapping( ImmutableMap.of( - "C", RepositoryName.create("@C.1.0"), - "com_foo_bar_b", RepositoryName.create("@B.1.0")), + "C", RepositoryName.create("@C~1.0"), + "com_foo_bar_b", RepositoryName.create("@B~1.0")), name)); } @@ -215,7 +215,7 @@ public void testRepoNameMapping_dependencyOnRootModule() throws Exception { "module(name='B', version='1.0')", "bazel_dep(name='A',version='3.0')"); - RepositoryName name = RepositoryName.create("@B.1.0"); + RepositoryName name = RepositoryName.create("@B~1.0"); SkyKey skyKey = RepositoryMappingValue.key(name); EvaluationResult result = eval(skyKey); @@ -225,7 +225,7 @@ public void testRepoNameMapping_dependencyOnRootModule() throws Exception { .isEqualTo( withMapping( ImmutableMap.of( - "B", RepositoryName.create("@B.1.0"), "A", RepositoryName.create("")), + "B", RepositoryName.create("@B~1.0"), "A", RepositoryName.create("")), name)); } @@ -260,9 +260,9 @@ public void testRepoNameMapping_multipleVersionOverride_fork() throws Exception TestConstants.WORKSPACE_NAME, RepositoryName.MAIN, "B1", - RepositoryName.create("@B.1.0"), + RepositoryName.create("@B~1.0"), "B2", - RepositoryName.create("@B.2.0")), + RepositoryName.create("@B~2.0")), name)); } @@ -284,7 +284,7 @@ public void testRepoNameMapping_multipleVersionOverride_diamond() throws Excepti .addModule(createModuleKey("D", "1.0"), "module(name='D', version='1.0')") .addModule(createModuleKey("D", "2.0"), "module(name='D', version='2.0')"); - RepositoryName name = RepositoryName.create("@B.1.0"); + RepositoryName name = RepositoryName.create("@B~1.0"); SkyKey skyKey = RepositoryMappingValue.key(name); EvaluationResult result = eval(skyKey); @@ -296,8 +296,8 @@ public void testRepoNameMapping_multipleVersionOverride_diamond() throws Excepti .isEqualTo( withMapping( ImmutableMap.of( - "B", RepositoryName.create("@B.1.0"), - "D", RepositoryName.create("@D.1.0")), + "B", RepositoryName.create("@B~1.0"), + "D", RepositoryName.create("@D~1.0")), name)); } @@ -317,7 +317,7 @@ public void testRepoNameMapping_multipleVersionOverride_lookup() throws Exceptio .addModule(createModuleKey("B", "2.0"), "module(name='B', version='2.0')") .addModule(createModuleKey("C", "1.0"), "module(name='C', version='1.0')"); - RepositoryName name = RepositoryName.create("@B.1.0"); + RepositoryName name = RepositoryName.create("@B~1.0"); SkyKey skyKey = RepositoryMappingValue.key(name); EvaluationResult result = eval(skyKey); @@ -329,8 +329,8 @@ public void testRepoNameMapping_multipleVersionOverride_lookup() throws Exceptio .isEqualTo( withMapping( ImmutableMap.of( - "B", RepositoryName.create("@B.1.0"), - "com_foo_bar_c", RepositoryName.create("@C.1.0")), + "B", RepositoryName.create("@B~1.0"), + "com_foo_bar_c", RepositoryName.create("@C~1.0")), name)); } @@ -429,13 +429,13 @@ public void testMixtureOfBothSystems_workspaceRepo() throws Exception { withMappingAllowingFallback( ImmutableMap.builder() .put("root", RepositoryName.MAIN) - // mappings to @B get remapped to @B.1.0 because of module B@1.0 - .put("B_alias", RepositoryName.create("@B.1.0")) - .put("B_alias2", RepositoryName.create("@B.1.0")) - // mapping from @B to @B.1.0 is also created - .put("B", RepositoryName.create("@B.1.0")) - // mapping from @C to @C.2.0 is created despite not being mentioned - .put("C", RepositoryName.create("@C.2.0")) + // mappings to @B get remapped to @B~1.0 because of module B~1.0 + .put("B_alias", RepositoryName.create("@B~1.0")) + .put("B_alias2", RepositoryName.create("@B~1.0")) + // mapping from @B to @B~1.0 is also created + .put("B", RepositoryName.create("@B~1.0")) + // mapping from @C to @C~2.0 is created despite not being mentioned + .put("C", RepositoryName.create("@C~2.0")) // mapping to @D is untouched because D has a multiple-version override .put("D_alias", RepositoryName.create("D")) // mapping to @E is untouched because E is not a module @@ -467,7 +467,7 @@ public void testMixtureOfBothSystems_mainRepo() throws Exception { ImmutableMap.of( "", RepositoryName.MAIN, "A", RepositoryName.MAIN, - "B", RepositoryName.create("@B.1.0"), + "B", RepositoryName.create("@B~1.0"), "root", RepositoryName.MAIN, "ws_repo", RepositoryName.create("ws_repo")), RepositoryName.MAIN)); @@ -497,7 +497,7 @@ public void testMixtureOfBothSystems_mainRepo_shouldNotSeeWorkspaceRepos() throw ImmutableMap.of( "", RepositoryName.MAIN, "A", RepositoryName.MAIN, - "B", RepositoryName.create("@B.1.0")), + "B", RepositoryName.create("@B~1.0")), RepositoryName.MAIN)); } @@ -585,7 +585,7 @@ public void builtinsRepo() throws Exception { withMapping( ImmutableMap.of( "bazel_tools", RepositoryName.BAZEL_TOOLS, // bazel_tools is a well-known module - "foo", RepositoryName.create("@foo.1.0"), + "foo", RepositoryName.create("@foo~1.0"), "_builtins", RepositoryName.create("_builtins")), name)); } diff --git a/src/test/py/bazel/bzlmod/bazel_module_test.py b/src/test/py/bazel/bzlmod/bazel_module_test.py index f657ac2314ef2e..b4dd95ee065ae4 100644 --- a/src/test/py/bazel/bzlmod/bazel_module_test.py +++ b/src/test/py/bazel/bzlmod/bazel_module_test.py @@ -356,7 +356,7 @@ def testRepositoryRuleErrorInModuleExtensionFailsTheBuild(self): allow_failure=True) self.AssertExitCode(exit_code, 48, stderr) self.assertIn( - "ERROR: : //pkg:@.module_ext.foo: no such attribute 'invalid_attr' in 'repo_rule' rule", + "ERROR: : //pkg:@~module_ext~foo: no such attribute 'invalid_attr' in 'repo_rule' rule", stderr) self.assertTrue( any([ diff --git a/src/test/shell/bazel/local_repository_test.sh b/src/test/shell/bazel/local_repository_test.sh index 48fe770fba9de7..d9829e7b0d543a 100755 --- a/src/test/shell/bazel/local_repository_test.sh +++ b/src/test/shell/bazel/local_repository_test.sh @@ -1027,7 +1027,7 @@ local_repository( EOF bazel build @r/a//:bin &> $TEST_log && fail "expected build failure, but succeeded" - expect_log "repo names may contain only A-Z, a-z, 0-9, '-', '_', '.' and '#'" + expect_log "repo names may contain only A-Z, a-z, 0-9, '-', '_', '.' and '~'" } function test_remote_includes() {