bzlmod: Canonical name should not end with dot
Context:
https://docs.microsoft.com/en-us/troubleshoot/windows-server/backup-and-storage/cannot-delete-file-folder-on-ntfs-file-system#cause-6-the-file-name-includes-an-invalid-name-in-the-win32-name-space
”If you use typical Win32 syntax to open a file that has trailing spaces or trailing periods in its name, the trailing spaces or periods are stripped before the actual file is opened“
Related: https://github.com/bazelbuild/bazel/issues/13316
RELNOTES: None
PiperOrigin-RevId: 396555105
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 6a65043..23fe508 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
@@ -58,12 +58,12 @@
/** Returns the canonical name of the repo backing this module. */
public String getCanonicalRepoName() {
- if (this.equals(ROOT)) {
- return "";
- }
if (WELL_KNOWN_MODULES.containsKey(getName())) {
return WELL_KNOWN_MODULES.get(getName());
}
+ if (getVersion().isEmpty()) {
+ return getName();
+ }
return getName() + "." + getVersion();
}
}
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 27ad8d7..0901a85 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
@@ -94,7 +94,7 @@
"dep.1.0", createModuleKey("dep", "1.0"),
"dep.2.0", createModuleKey("dep", "2.0"),
"rules_cc.1.0", createModuleKey("rules_cc", "1.0"),
- "rules_java.", createModuleKey("rules_java", ""));
+ "rules_java", createModuleKey("rules_java", ""));
assertThat(value.getModuleNameLookup())
.containsExactly(
"rules_cc", createModuleKey("rules_cc", "1.0"),
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 029f0af..0d8360c 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
@@ -172,19 +172,19 @@
ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl()));
EvaluationResult<GetRepoSpecByNameValue> result =
- driver.evaluate(ImmutableList.of(getRepoSpecByNameKey("C.")), evaluationContext);
+ driver.evaluate(ImmutableList.of(getRepoSpecByNameKey("C")), evaluationContext);
if (result.hasError()) {
fail(result.getError().toString());
}
- Optional<RepoSpec> repoSpec = result.get(getRepoSpecByNameKey("C.")).rule();
+ Optional<RepoSpec> repoSpec = result.get(getRepoSpecByNameKey("C")).rule();
assertThat(repoSpec)
.hasValue(
RepoSpec.builder()
.setRuleClassName("local_repository")
.setAttributes(
ImmutableMap.of(
- "name", "C.",
+ "name", "C",
"path", "/foo/bar/C"))
.build());
}
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 06a6b46..00bff1c 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
@@ -214,7 +214,7 @@
"",
0));
assertThat(rootModuleFileValue.getNonRegistryOverrideCanonicalRepoNameLookup())
- .containsExactly("E.", "E", "G.", "G");
+ .containsExactly("E", "E", "G", "G");
}
@Test
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 04c9958..3939153 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
@@ -115,7 +115,7 @@
assertThat(pomTags.get(0).getValue("pom_xmls"))
.isEqualTo(
StarlarkList.immutableOf(
- Label.parseAbsoluteUnchecked("@foo.//:pom.xml"),
+ Label.parseAbsoluteUnchecked("@foo//:pom.xml"),
Label.parseAbsoluteUnchecked("@bar.2.0//:pom.xml")));
}