diff options
author | 2018-06-12 09:28:45 -0700 | |
---|---|---|
committer | 2018-06-12 09:30:48 -0700 | |
commit | f4b9ff40b8f1612571cc711560177af240d034d0 (patch) | |
tree | 2b2bf5415d7b4a0ab5db78d916cebfec0775f810 /src/test/java/com/google/devtools/build/lib | |
parent | 1b94e64ee8a1d385e92a8d9f4c9a06e2d99c82bf (diff) |
Remap repository names inside load statements in BUILD files if the repository name is remapped.
For example if main/WORKSPACE contains:
local_repository(
name = "a",
path = "../a",
repo_mapping = {"@x" : "@y"},
)
a/BUILD
load("@x//:sample.bzl", "sample")
Then the load in a/BUILD will be resolved as "@y//:sample.bzl"
RELNOTES: None
PiperOrigin-RevId: 200227431
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportsTest.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportsTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportsTest.java index c1168dd380..cb8629c143 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportsTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportsTest.java @@ -16,7 +16,9 @@ package com.google.devtools.build.lib.syntax; import static com.google.common.truth.Truth.assertThat; import static org.hamcrest.CoreMatchers.startsWith; +import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester; import com.google.devtools.build.lib.syntax.SkylarkImports.SkylarkImportSyntaxException; import com.google.devtools.build.lib.vfs.PathFragment; @@ -66,6 +68,28 @@ public class SkylarkImportsTest { /*expected path*/ "/some/skylark/file.bzl"); } + @Test + public void testValidAbsoluteLabelWithRepoRemapped() throws Exception { + String labelString = "@orig_repo//some/skylark:file.bzl"; + String remappedLabelString = "@new_repo//some/skylark:file.bzl"; + String expectedPath = "/some/skylark/file.bzl"; + ImmutableMap<RepositoryName, RepositoryName> repositoryMapping = + ImmutableMap.of(RepositoryName.create("@orig_repo"), RepositoryName.create("@new_repo")); + SkylarkImport importForLabel = SkylarkImports.create(labelString, repositoryMapping); + + assertThat(importForLabel.hasAbsolutePath()).named("hasAbsolutePath()").isFalse(); + assertThat(importForLabel.getImportString()).named("getImportString()").isEqualTo(labelString); + + Label irrelevantContainingFile = Label.parseAbsoluteUnchecked("//another/path:BUILD"); + assertThat(importForLabel.getLabel(irrelevantContainingFile)) + .named("getLabel()") + .isEqualTo(Label.parseAbsoluteUnchecked(remappedLabelString)); + + assertThat(importForLabel.asPathFragment()) + .named("asPathFragment()") + .isEqualTo(PathFragment.create(expectedPath)); + } + private void validRelativeLabelTest(String labelString, String containingLabelString, String expectedLabelString, String expectedPathString) throws Exception { |