From 25612172fe8a50ba1de9a4ba6396ab6f82b6c257 Mon Sep 17 00:00:00 2001 From: Fabian Meumertzheim Date: Mon, 12 Jun 2023 09:18:16 +0200 Subject: [PATCH] Fix incorrect proxy builder reuse --- .../lib/bazel/bzlmod/ModuleFileGlobals.java | 3 ++- .../bzlmod/ModuleExtensionResolutionTest.java | 16 +++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileGlobals.java b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileGlobals.java index f73c28a1f2fc1f..c4f9b691748e23 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileGlobals.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileGlobals.java @@ -487,7 +487,8 @@ public ModuleExtensionProxy useExtension( if (!isolate) { for (ModuleExtensionUsageBuilder usageBuilder : extensionUsageBuilders) { if (usageBuilder.extensionBzlFile.equals(extensionBzlFile) - && usageBuilder.extensionName.equals(extensionName)) { + && usageBuilder.extensionName.equals(extensionName) + && usageBuilder.isolationKey.isEmpty()) { return usageBuilder.getProxy(devDependency); } } 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 903087a0615dc6..80459afa39e4fa 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 @@ -626,7 +626,9 @@ public void multipleModules_isolatedUsages() throws Exception { "use_repo(isolated_ext,isolated_ext_repo='ext_repo')", "isolated_dev_ext = use_extension('@ext//:defs.bzl','ext',isolate=True,dev_dependency=True)", "isolated_dev_ext.tag(data='root_isolated_dev',expect_isolated=True)", - "use_repo(isolated_dev_ext,isolated_dev_ext_repo='ext_repo')"); + "use_repo(isolated_dev_ext,isolated_dev_ext_repo='ext_repo')", + "ext2 = use_extension('@ext//:defs.bzl','ext')", + "ext2.tag(data='root_2',expect_isolated=False)"); scratch.file(workspaceRoot.getRelative("BUILD").getPathString()); scratch.file( workspaceRoot.getRelative("data.bzl").getPathString(), @@ -641,15 +643,15 @@ public void multipleModules_isolatedUsages() throws Exception { createModuleKey("foo", "1.0"), "module(name='foo',version='1.0')", "bazel_dep(name='ext',version='1.0')", - "ext = use_extension('@ext//:defs.bzl','ext')", - "ext.tag(data='foo@1.0',expect_isolated=False)", - "use_repo(ext,'ext_repo')", "isolated_ext = use_extension('@ext//:defs.bzl','ext',isolate=True)", "isolated_ext.tag(data='foo@1.0_isolated',expect_isolated=True)", "use_repo(isolated_ext,isolated_ext_repo='ext_repo')", "isolated_dev_ext = use_extension('@ext//:defs.bzl','ext',isolate=True,dev_dependency=True)", "isolated_dev_ext.tag(data='foo@1.0_isolated_dev',expect_isolated=True)", - "use_repo(isolated_dev_ext,isolated_dev_ext_repo='ext_repo')"); + "use_repo(isolated_dev_ext,isolated_dev_ext_repo='ext_repo')", + "ext = use_extension('@ext//:defs.bzl','ext')", + "ext.tag(data='foo@1.0',expect_isolated=False)", + "use_repo(ext,'ext_repo')"); scratch.file(modulesRoot.getRelative("foo~1.0/WORKSPACE").getPathString()); scratch.file(modulesRoot.getRelative("foo~1.0/BUILD").getPathString()); scratch.file( @@ -687,7 +689,7 @@ public void multipleModules_isolatedUsages() throws Exception { throw result.getError().getException(); } assertThat(result.get(skyKey).getModule().getGlobal("data")) - .isEqualTo("root@1.0 (root): root\nfoo@1.0: foo@1.0\n"); + .isEqualTo("root@1.0 (root): rootroot_2\nfoo@1.0: foo@1.0\n"); assertThat(result.get(skyKey).getModule().getGlobal("isolated_data")) .isEqualTo("root@1.0 (root): root_isolated\n"); assertThat(result.get(skyKey).getModule().getGlobal("isolated_dev_data")) @@ -699,7 +701,7 @@ public void multipleModules_isolatedUsages() throws Exception { throw result.getError().getException(); } assertThat(result.get(skyKey).getModule().getGlobal("data")) - .isEqualTo("root@1.0 (root): root\nfoo@1.0: foo@1.0\n"); + .isEqualTo("root@1.0 (root): rootroot_2\nfoo@1.0: foo@1.0\n"); assertThat(result.get(skyKey).getModule().getGlobal("isolated_data")) .isEqualTo("foo@1.0: foo@1.0_isolated\n"); }