Remove "return struct" in rule implementation of some Bazel tests (#3)
This makes the affected tests compatible with --incompatible_disallow_struct_provider_syntax
Progress toward #7347.
RELNOTES: None.
PiperOrigin-RevId: 244360214
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index bdcc604..c13b844 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -1502,8 +1502,10 @@
":guava_junit_truth",
":packages_testutil",
"//src/main/java/com/google/devtools/build/lib:build-base",
+ "//src/main/java/com/google/devtools/build/lib:packages-internal",
"//src/main/java/com/google/devtools/build/lib:proto-rules",
"//src/main/java/com/google/devtools/build/lib/actions",
+ "//src/main/java/com/google/devtools/build/lib/cmdline",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/proto",
"//src/main/java/com/google/devtools/build/lib/vfs",
],
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java b/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java
index 6a3e402..f07a0cb 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java
@@ -1000,7 +1000,7 @@
" output=ctx.outputs.out_file,",
" content=ctx.attr.string_value,",
" )",
- " return struct()",
+ " return []",
"",
"def _derived_value(string_value):",
" return Label(\"//test:%s\" % string_value)",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java
index 6fa0285..9d77d04 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java
@@ -442,12 +442,14 @@
"testrule(name='b')");
scratch.file(
"a/def.bzl",
+ "MyInfo = provider()",
"def _aspect_impl(target, ctx):",
" f = ctx.actions.declare_file('foo.txt')",
" ctx.actions.run_shell(outputs = [f], command = 'echo foo > \"$1\"')",
- " return struct(output=f)",
+ " return MyInfo(output=f)",
"def _rule_impl(ctx):",
- " return struct(files=depset([artifact.output for artifact in ctx.attr.deps]))",
+ " return DefaultInfo(",
+ " files=depset([artifact[MyInfo].output for artifact in ctx.attr.deps]))",
"aspect1 = aspect(_aspect_impl, attr_aspects=['deps'], ",
" attrs = {'parameter': attr.string(values = ['param_value'])})",
"testrule = rule(_rule_impl, attrs = { ",
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/CompileOneDependencyTransformerTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/CompileOneDependencyTransformerTest.java
index 1c6c59f..68607a9 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/CompileOneDependencyTransformerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/CompileOneDependencyTransformerTest.java
@@ -70,7 +70,7 @@
"foo/rule.bzl",
"def _impl(ctx):",
" ctx.actions.do_nothing(mnemonic='Mnemonic')",
- " return struct()",
+ " return []",
"crule_without_srcs = rule(",
" _impl,",
" attrs = { ",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkTest.java
index e208591..395da5c 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkTest.java
@@ -17,14 +17,19 @@
import static com.google.common.truth.Truth.assertThat;
import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ListMultimap;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.packages.Provider;
+import com.google.devtools.build.lib.packages.SkylarkProvider;
+import com.google.devtools.build.lib.packages.StructImpl;
import com.google.devtools.build.lib.packages.util.BazelMockAndroidSupport;
import com.google.devtools.build.lib.syntax.Runtime;
import java.util.List;
import java.util.Map;
+import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -35,8 +40,9 @@
private void writeAndroidSplitTransitionTestFiles() throws Exception {
scratch.file(
"test/skylark/my_rule.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"def impl(ctx): ",
- " return struct(",
+ " return MyInfo(",
" split_attr_deps = ctx.split_attr.deps,",
" split_attr_dep = ctx.split_attr.dep,",
" k8_deps = ctx.split_attr.deps.get('k8', None),",
@@ -57,6 +63,20 @@
"cc_binary(name = 'main2', srcs = ['main2.c'])");
}
+ @Before
+ public void setupMyInfo() throws Exception {
+ scratch.file("myinfo/myinfo.bzl", "MyInfo = provider()");
+
+ scratch.file("myinfo/BUILD");
+ }
+
+ private StructImpl getMyInfoFromTarget(ConfiguredTarget configuredTarget) throws Exception {
+ Provider.Key key =
+ new SkylarkProvider.SkylarkKey(
+ Label.parseAbsolute("//myinfo:myinfo.bzl", ImmutableMap.of()), "MyInfo");
+ return (StructImpl) configuredTarget.get(key);
+ }
+
@Test
public void testAndroidSplitTransition() throws Exception {
getAnalysisMock().ccSupport().setupCcToolchainConfigForCpu(mockToolsConfig, "armeabi-v7a");
@@ -64,6 +84,7 @@
useConfiguration("--fat_apk_cpu=k8,armeabi-v7a");
ConfiguredTarget target = getConfiguredTarget("//test/skylark:test");
+ StructImpl myInfo = getMyInfoFromTarget(target);
// Check that ctx.split_attr.deps has this structure:
// {
@@ -72,7 +93,7 @@
// }
@SuppressWarnings("unchecked")
Map<String, List<ConfiguredTarget>> splitDeps =
- (Map<String, List<ConfiguredTarget>>) target.get("split_attr_deps");
+ (Map<String, List<ConfiguredTarget>>) myInfo.getValue("split_attr_deps");
assertThat(splitDeps).containsKey("k8");
assertThat(splitDeps).containsKey("armeabi-v7a");
assertThat(splitDeps.get("k8")).hasSize(2);
@@ -91,7 +112,7 @@
// }
@SuppressWarnings("unchecked")
Map<String, ConfiguredTarget> splitDep =
- (Map<String, ConfiguredTarget>) target.get("split_attr_dep");
+ (Map<String, ConfiguredTarget>) myInfo.getValue("split_attr_dep");
assertThat(splitDep).containsKey("k8");
assertThat(splitDep).containsKey("armeabi-v7a");
assertThat(getConfiguration(splitDep.get("k8")).getCpu()).isEqualTo("k8");
@@ -100,7 +121,7 @@
// The regular ctx.attr.deps should be a single list with all the branches of the split merged
// together (i.e. for aspects).
@SuppressWarnings("unchecked")
- List<ConfiguredTarget> attrDeps = (List<ConfiguredTarget>) target.get("attr_deps");
+ List<ConfiguredTarget> attrDeps = (List<ConfiguredTarget>) myInfo.getValue("attr_deps");
assertThat(attrDeps).hasSize(4);
ListMultimap<String, Object> attrDepsMap = ArrayListMultimap.create();
for (ConfiguredTarget ct : attrDeps) {
@@ -112,7 +133,7 @@
// Check that even though my_rule.dep is defined as a single label, ctx.attr.dep is still a list
// with multiple ConfiguredTarget objects because of the two different CPUs.
@SuppressWarnings("unchecked")
- List<ConfiguredTarget> attrDep = (List<ConfiguredTarget>) target.get("attr_dep");
+ List<ConfiguredTarget> attrDep = (List<ConfiguredTarget>) myInfo.getValue("attr_dep");
assertThat(attrDep).hasSize(2);
ListMultimap<String, Object> attrDepMap = ArrayListMultimap.create();
for (ConfiguredTarget ct : attrDep) {
@@ -123,7 +144,7 @@
// Check that the deps were correctly accessed from within Skylark.
@SuppressWarnings("unchecked")
- List<ConfiguredTarget> k8Deps = (List<ConfiguredTarget>) target.get("k8_deps");
+ List<ConfiguredTarget> k8Deps = (List<ConfiguredTarget>) myInfo.getValue("k8_deps");
assertThat(k8Deps).hasSize(2);
assertThat(getConfiguration(k8Deps.get(0)).getCpu()).isEqualTo("k8");
assertThat(getConfiguration(k8Deps.get(1)).getCpu()).isEqualTo("k8");
@@ -141,7 +162,8 @@
@SuppressWarnings("unchecked")
Map<Object, List<ConfiguredTarget>> splitDeps =
- (Map<Object, List<ConfiguredTarget>>) target.get("split_attr_deps");
+ (Map<Object, List<ConfiguredTarget>>)
+ getMyInfoFromTarget(target).getValue("split_attr_deps");
String cpu = "armeabi-v7a";
assertThat(splitDeps.get(cpu)).hasSize(2);
@@ -158,7 +180,8 @@
@SuppressWarnings("unchecked")
Map<Object, List<ConfiguredTarget>> splitDeps =
- (Map<Object, List<ConfiguredTarget>>) target.get("split_attr_deps");
+ (Map<Object, List<ConfiguredTarget>>)
+ getMyInfoFromTarget(target).getValue("split_attr_deps");
// Split transition isn't in effect, so the deps are compiled normally (i.e. using --cpu).
assertThat(splitDeps.get(Runtime.NONE)).hasSize(2);
@@ -170,8 +193,9 @@
public void testAndroidSdkConfigurationField() throws Exception {
scratch.file(
"foo_library.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"def _impl(ctx):",
- " return struct(foo = ctx.attr._android_sdk.label)",
+ " return MyInfo(foo = ctx.attr._android_sdk.label)",
"foo_library = rule(implementation = _impl,",
" attrs = { '_android_sdk': attr.label(default = configuration_field(",
" fragment = 'android', name = 'android_sdk_label'))},",
@@ -183,6 +207,8 @@
"foo_library(name = 'lib')");
useConfiguration("--android_sdk=//:new_sdk");
ConfiguredTarget ct = getConfiguredTarget("//:lib");
- assertThat(ct.get("foo")).isEqualTo(Label.parseAbsoluteUnchecked("//:new_sdk"));
+
+ assertThat(getMyInfoFromTarget(ct).getValue("foo"))
+ .isEqualTo(Label.parseAbsoluteUnchecked("//:new_sdk"));
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/BUILD b/src/test/java/com/google/devtools/build/lib/rules/android/BUILD
index ff7f702..6344cda 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/BUILD
@@ -34,6 +34,7 @@
srcs = ["AndroidSkylarkTest.java"],
deps = [
"//src/main/java/com/google/devtools/build/lib:build-base",
+ "//src/main/java/com/google/devtools/build/lib:packages-internal",
"//src/main/java/com/google/devtools/build/lib:syntax",
"//src/main/java/com/google/devtools/build/lib/cmdline",
"//src/test/java/com/google/devtools/build/lib:analysis_testutil",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java b/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java
index c0d31e0..f4c515d 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java
@@ -16,9 +16,15 @@
import static com.google.common.truth.Truth.assertThat;
+import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.packages.Provider;
+import com.google.devtools.build.lib.packages.SkylarkProvider;
+import com.google.devtools.build.lib.packages.StructImpl;
import java.util.List;
+import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -26,14 +32,29 @@
/** Tests for Skylark interface to SwiftConfiguration. */
@RunWith(JUnit4.class)
public class SwiftConfigurationTest extends BuildViewTestCase {
+ @Before
+ public void setupMyInfo() throws Exception {
+ scratch.file("myinfo/myinfo.bzl", "MyInfo = provider()");
+
+ scratch.file("myinfo/BUILD");
+ }
+
+ private StructImpl getMyInfoFromTarget(ConfiguredTarget configuredTarget) throws Exception {
+ Provider.Key key =
+ new SkylarkProvider.SkylarkKey(
+ Label.parseAbsolute("//myinfo:myinfo.bzl", ImmutableMap.of()), "MyInfo");
+ return (StructImpl) configuredTarget.get(key);
+ }
+
@Test
public void testSkylarkApi() throws Exception {
scratch.file("examples/rule/BUILD");
scratch.file(
"examples/rule/apple_rules.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"def swift_binary_impl(ctx):",
" copts = ctx.fragments.swift.copts()",
- " return struct(",
+ " return MyInfo(",
" copts=copts,",
" )",
"swift_binary = rule(",
@@ -54,7 +75,7 @@
ConfiguredTarget skylarkTarget = getConfiguredTarget("//examples/swift_skylark:my_target");
@SuppressWarnings("unchecked")
- List<String> copts = (List<String>) skylarkTarget.get("copts");
+ List<String> copts = (List<String>) getMyInfoFromTarget(skylarkTarget).getValue("copts");
assertThat(copts).containsAllOf("foo", "bar");
}
@@ -64,9 +85,10 @@
scratch.file("examples/rule/BUILD");
scratch.file(
"examples/rule/apple_rules.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"def swift_binary_impl(ctx):",
" copts = ctx.fragments.swift.copts()",
- " return struct(",
+ " return MyInfo(",
" copts=copts,",
" )",
"swift_binary = rule(",
@@ -86,7 +108,7 @@
getConfiguredTarget("//examples/swift_skylark:my_target", getHostConfiguration());
@SuppressWarnings("unchecked")
- List<String> copts = (List<String>) target.get("copts");
+ List<String> copts = (List<String>) getMyInfoFromTarget(target).getValue("copts");
assertThat(copts).doesNotContain("foo");
assertThat(copts).containsAllOf("bar", "baz");
diff --git a/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeVersionTest.java b/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeVersionTest.java
index 060c01a..663674d 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeVersionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeVersionTest.java
@@ -16,9 +16,14 @@
import static com.google.common.truth.Truth.assertThat;
+import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.packages.Provider;
+import com.google.devtools.build.lib.packages.SkylarkProvider;
+import com.google.devtools.build.lib.packages.StructImpl;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -34,6 +39,7 @@
scratch.file("examples/rule/BUILD");
scratch.file(
"examples/rule/apple_rules.bzl",
+ "MyInfo = provider()",
"def my_rule_impl(ctx):",
" xcode_properties = ctx.attr.xcode[apple_common.XcodeProperties]",
" xcode_version = xcode_properties.xcode_version",
@@ -41,7 +47,7 @@
" watchos_version = xcode_properties.default_watchos_sdk_version",
" tvos_version = xcode_properties.default_tvos_sdk_version",
" macos_version = xcode_properties.default_macos_sdk_version",
- " return struct(",
+ " return MyInfo(",
" xcode_version=xcode_version,",
" ios_version=ios_version,",
" watchos_version=watchos_version,",
@@ -72,11 +78,15 @@
RuleConfiguredTarget skylarkTarget =
(RuleConfiguredTarget) getConfiguredTarget("//examples/apple_skylark:my_target");
- assertThat((String) skylarkTarget.get("xcode_version")).isEqualTo("8");
- assertThat((String) skylarkTarget.get("ios_version")).isEqualTo("9.0");
- assertThat((String) skylarkTarget.get("watchos_version")).isEqualTo("9.1");
- assertThat((String) skylarkTarget.get("tvos_version")).isEqualTo("9.2");
- assertThat((String) skylarkTarget.get("macos_version")).isEqualTo("9.3");
+ Provider.Key key =
+ new SkylarkProvider.SkylarkKey(
+ Label.parseAbsolute("//examples/rule:apple_rules.bzl", ImmutableMap.of()), "MyInfo");
+ StructImpl myInfo = (StructImpl) skylarkTarget.get(key);
+ assertThat((String) myInfo.getValue("xcode_version")).isEqualTo("8");
+ assertThat((String) myInfo.getValue("ios_version")).isEqualTo("9.0");
+ assertThat((String) myInfo.getValue("watchos_version")).isEqualTo("9.1");
+ assertThat((String) myInfo.getValue("tvos_version")).isEqualTo("9.2");
+ assertThat((String) myInfo.getValue("macos_version")).isEqualTo("9.3");
}
@Test
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
index d57016f..9d96f2c 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
@@ -22,6 +22,7 @@
import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
import com.google.common.eventbus.EventBus;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
@@ -29,7 +30,11 @@
import com.google.devtools.build.lib.analysis.ExtraActionArtifactsProvider;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.packages.Provider;
+import com.google.devtools.build.lib.packages.SkylarkProvider;
+import com.google.devtools.build.lib.packages.StructImpl;
import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
import com.google.devtools.build.lib.rules.java.JavaCompileAction;
import com.google.devtools.build.lib.rules.java.JavaInfo;
@@ -529,15 +534,16 @@
public void testJavaLiteProtoLibraryAspectProviders() throws Exception {
scratch.file(
"x/aspect.bzl",
+ "MyInfo = provider()",
"def _foo_aspect_impl(target,ctx):",
" proto_found = hasattr(target, 'proto_java')",
" if hasattr(ctx.rule.attr, 'deps'):",
" for dep in ctx.rule.attr.deps:",
" proto_found = proto_found or dep.proto_found",
- " return struct(proto_found = proto_found)",
+ " return MyInfo(proto_found = proto_found)",
"foo_aspect = aspect(_foo_aspect_impl, attr_aspects = ['deps'])",
"def _foo_rule_impl(ctx):",
- " return struct(result = ctx.attr.dep.proto_found)",
+ " return MyInfo(result = ctx.attr.dep.proto_found)",
"foo_rule = rule(_foo_rule_impl, attrs = { 'dep' : attr.label(aspects = [foo_aspect])})");
scratch.file(
"x/BUILD",
@@ -548,7 +554,11 @@
"proto_library(name = 'foo_proto', srcs = ['foo.proto'], java_lib = ':lib')",
"foo_rule(name = 'foo_rule', dep = 'foo_java_proto')");
ConfiguredTarget target = getConfiguredTarget("//x:foo_rule");
- Boolean result = (Boolean) target.get("result");
+ Provider.Key key =
+ new SkylarkProvider.SkylarkKey(
+ Label.parseAbsolute("//x:aspect.bzl", ImmutableMap.of()), "MyInfo");
+ StructImpl myInfo = (StructImpl) target.get(key);
+ Boolean result = (Boolean) myInfo.getValue("result");
// "yes" means that "proto_java" was found on the proto_library + java_proto_library aspect.
assertThat(result).isTrue();
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinarySkylarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinarySkylarkApiTest.java
index 8b5a627..087ac58 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinarySkylarkApiTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinarySkylarkApiTest.java
@@ -59,11 +59,13 @@
"test_skylark/apple_binary_skylark.bzl",
"def apple_binary_skylark_impl(ctx):",
" binary_output = apple_common.link_multi_arch_binary(ctx=ctx)",
- " return struct(",
- " files=depset([binary_output.binary_provider.binary]),",
- " output_groups=binary_output.output_groups,",
- " providers=[binary_output.binary_provider, binary_output.debug_outputs_provider],",
- " )",
+ " return [",
+ " DefaultInfo(",
+ " files=depset([binary_output.binary_provider.binary])),",
+ " OutputGroupInfo(**binary_output.output_groups),",
+ " binary_output.binary_provider,",
+ " binary_output.debug_outputs_provider",
+ " ]",
"apple_binary_skylark = rule(",
" apple_binary_skylark_impl,",
" attrs = {",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
index 751e9cf..6eb8ab6 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
@@ -641,9 +641,7 @@
" dep_provider = ctx.attr.proxy[apple_common.AppleStaticLibrary]",
" my_provider = apple_common.AppleStaticLibrary(archive = dep_provider.archive,",
" objc = dep_provider.objc)",
- " return struct(",
- " providers = [my_provider]",
- " )",
+ " return [my_provider]",
"",
"skylark_static_lib = rule(",
" implementation = skylark_static_lib_impl,",
@@ -681,9 +679,7 @@
" dep_provider = ctx.attr.proxy[apple_common.AppleStaticLibrary]",
" my_provider = apple_common.AppleStaticLibrary(archive = dep_provider.archive,",
" objc = dep_provider.objc, foo = 'bar')",
- " return struct(",
- " providers = [my_provider]",
- " )",
+ " return [my_provider]",
"",
"skylark_static_lib = rule(",
" implementation = skylark_static_lib_impl,",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
index a773056..c466cd1 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
@@ -951,7 +951,7 @@
"examples/fake_rule.bzl",
"def _fake_rule_impl(ctx):",
" myProvider = ctx.attr.deps[0][JavaInfo]",
- " return struct(providers = [myProvider])",
+ " return myProvider",
"",
"fake_rule = rule(",
" implementation = _fake_rule_impl,",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoInfoStarlarkTest.java b/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoInfoStarlarkTest.java
index 72eb674..2f22ae2 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoInfoStarlarkTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoInfoStarlarkTest.java
@@ -16,10 +16,15 @@
import static com.google.common.truth.Truth.assertThat;
+import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.packages.Provider;
+import com.google.devtools.build.lib.packages.SkylarkProvider;
+import com.google.devtools.build.lib.packages.StructImpl;
import com.google.devtools.build.lib.packages.util.MockProtoSupport;
import com.google.devtools.build.lib.skylarkbuildapi.proto.ProtoModuleApi;
import org.junit.Before;
@@ -34,17 +39,27 @@
public void setUp() throws Exception {
useConfiguration("--proto_compiler=//proto:compiler"); // TODO check do we need that.
scratch.file("proto/BUILD", "licenses(['notice'])", "exports_files(['compiler'])");
+ scratch.file("myinfo/myinfo.bzl", "MyInfo = provider()");
+ scratch.file("myinfo/BUILD");
MockProtoSupport.setup(mockToolsConfig);
}
+ private StructImpl getMyInfoFromTarget(ConfiguredTarget configuredTarget) throws Exception {
+ Provider.Key key =
+ new SkylarkProvider.SkylarkKey(
+ Label.parseAbsolute("//myinfo:myinfo.bzl", ImmutableMap.of()), "MyInfo");
+ return (StructImpl) configuredTarget.get(key);
+ }
+
@Test
public void testLegacyProviderCanBeDisabled() throws Exception {
useConfiguration("--incompatible_disable_legacy_proto_provider");
scratch.file(
"foo/test.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"def _impl(ctx):",
" provider = ctx.attr.dep.proto", // NB: This is the legacy provider
- " return struct(direct_sources=provider.direct_sources)",
+ " return MyInfo(direct_sources=provider.direct_sources)",
"test = rule(implementation = _impl, attrs = {'dep': attr.label()})");
scratch.file(
@@ -62,14 +77,15 @@
public void testProtoCommon() throws Exception {
scratch.file(
"foo/test.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"def _impl(ctx):",
- " return struct(proto_common=proto_common)",
+ " return MyInfo(proto_common=proto_common)",
"test = rule(implementation = _impl, attrs = {})");
scratch.file("foo/BUILD", "load(':test.bzl', 'test')", "test(name='test')");
ConfiguredTarget test = getConfiguredTarget("//foo:test");
- Object protoCommon = test.get("proto_common");
+ Object protoCommon = getMyInfoFromTarget(test).getValue("proto_common");
assertThat(protoCommon).isInstanceOf(ProtoModuleApi.class);
}
@@ -78,9 +94,10 @@
useConfiguration("--incompatible_disable_legacy_proto_provider");
scratch.file(
"foo/test.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"def _impl(ctx):",
" provider = ctx.attr.dep[ProtoInfo]", // NB: This is the modern provider
- " return struct(direct_sources=provider.direct_sources)",
+ " return MyInfo(direct_sources=provider.direct_sources)",
"test = rule(implementation = _impl, attrs = {'dep': attr.label()})");
scratch.file(
@@ -91,7 +108,8 @@
ConfiguredTarget test = getConfiguredTarget("//foo:test");
@SuppressWarnings("unchecked")
- Iterable<Artifact> directSources = (Iterable<Artifact>) test.get("direct_sources");
+ Iterable<Artifact> directSources =
+ (Iterable<Artifact>) getMyInfoFromTarget(test).getValue("direct_sources");
assertThat(ActionsTestUtil.baseArtifactNames(directSources)).containsExactly("p.proto");
}
@@ -100,9 +118,10 @@
useConfiguration("--noincompatible_disable_legacy_proto_provider");
scratch.file(
"foo/test.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"def _impl(ctx):",
" provider = ctx.attr.dep.proto", // NB: This is the legacy provider
- " return struct(direct_sources=provider.direct_sources)",
+ " return MyInfo(direct_sources=provider.direct_sources)",
"test = rule(implementation = _impl, attrs = {'dep': attr.label()})");
scratch.file(
@@ -113,7 +132,8 @@
ConfiguredTarget test = getConfiguredTarget("//foo:test");
@SuppressWarnings("unchecked")
- Iterable<Artifact> directSources = (Iterable<Artifact>) test.get("direct_sources");
+ Iterable<Artifact> directSources =
+ (Iterable<Artifact>) getMyInfoFromTarget(test).getValue("direct_sources");
assertThat(ActionsTestUtil.baseArtifactNames(directSources)).containsExactly("p.proto");
}
@@ -121,9 +141,10 @@
public void testProvider() throws Exception {
scratch.file(
"foo/test.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"def _impl(ctx):",
" provider = ctx.attr.dep[ProtoInfo]", // NB: This is the modern provider
- " return struct(direct_sources=provider.direct_sources)",
+ " return MyInfo(direct_sources=provider.direct_sources)",
"test = rule(implementation = _impl, attrs = {'dep': attr.label()})");
scratch.file(
@@ -134,7 +155,8 @@
ConfiguredTarget test = getConfiguredTarget("//foo:test");
@SuppressWarnings("unchecked")
- Iterable<Artifact> directSources = (Iterable<Artifact>) test.get("direct_sources");
+ Iterable<Artifact> directSources =
+ (Iterable<Artifact>) getMyInfoFromTarget(test).getValue("direct_sources");
assertThat(ActionsTestUtil.baseArtifactNames(directSources)).containsExactly("p.proto");
}
@@ -143,9 +165,10 @@
scratch.file(
"foo/myTsetRule.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"",
"def _my_test_rule_impl(ctx):",
- " return struct(",
+ " return MyInfo(",
" fetched_proto_source_root = ctx.attr.protodep.proto.proto_source_root",
" )",
"",
@@ -169,7 +192,7 @@
")");
ConfiguredTarget ct = getConfiguredTarget("//foo:myRule");
- String protoSourceRoot = (String) ct.get("fetched_proto_source_root");
+ String protoSourceRoot = (String) getMyInfoFromTarget(ct).getValue("fetched_proto_source_root");
assertThat(protoSourceRoot).isEqualTo("foo");
}