diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java | 8 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java | 28 |
2 files changed, 35 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java index 4da947e0bd..778c20b45f 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java @@ -103,7 +103,13 @@ public final class DefaultInfo extends NativeInfo implements DefaultInfoApi { @Override public Runfiles getDefaultRunfiles() { - return defaultRunfiles; + if (dataRunfiles == null && defaultRunfiles == null) { + // This supports the legacy skylark runfiles constructor -- if the 'runfiles' attribute + // is used, then default_runfiles will return all runfiles. + return runfiles; + } else { + return defaultRunfiles; + } } /** diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java index 234899fbf0..db9f87ae46 100644 --- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java @@ -616,6 +616,34 @@ public class SkylarkIntegrationTest extends BuildViewTestCase { } @Test + public void testDefaultInfoWithRunfilesConstructor() throws Exception { + scratch.file( + "pkg/BUILD", + "sh_binary(name = 'tryme',", + " srcs = [':tryme.sh'],", + " visibility = ['//visibility:public'],", + ")"); + + scratch.file( + "src/rulez.bzl", + "def _impl(ctx):", + " info = DefaultInfo(runfiles = ctx.runfiles(files=[ctx.executable.dep]))", + " if info.default_runfiles.files.to_list()[0] != ctx.executable.dep:", + " fail('expected runfile to be in info.default_runfiles')", + " return [info]", + "r = rule(_impl,", + " attrs = {", + " 'dep' : attr.label(executable = True, mandatory = True, cfg = 'host'),", + " }", + ")"); + + scratch.file( + "src/BUILD", "load(':rulez.bzl', 'r')", "r(name = 'r_tools', dep = '//pkg:tryme')"); + + assertThat(getConfiguredTarget("//src:r_tools")).isNotNull(); + } + + @Test public void testInstrumentedFilesProviderWithCodeCoverageDiabled() throws Exception { scratch.file( "test/skylark/extension.bzl", |