Remove "return struct" in rule implementation of some Bazel tests (#2)
This makes the affected tests compatible with --incompatible_disallow_struct_provider_syntax
Progress toward #7347.
RELNOTES: None.
PiperOrigin-RevId: 244210656
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
index a26e17f..08df7c2 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
@@ -599,11 +599,11 @@
"x/extension.bzl",
"def _aspect_impl(target, ctx):",
" ctx.actions.do_nothing(mnemonic='Mnemonic')",
- " return struct()",
+ " return []",
"aspect1 = aspect(_aspect_impl, attr_aspects=['deps'])",
"aspect2 = aspect(_aspect_impl, attr_aspects=['extra_deps'])",
"def _rule_impl(ctx):",
- " return struct()",
+ " return []",
"injector1 = rule(_rule_impl, attrs = { 'deps' : attr.label_list(aspects = [aspect1]) })",
"null_rule = rule(_rule_impl, attrs = { 'deps' : attr.label_list() })",
"injector2 = rule(",
@@ -664,17 +664,16 @@
"x/extension.bzl",
"def _aspect_impl(target, ctx):",
" ctx.actions.do_nothing(mnemonic='Mnemonic')",
- " return struct()",
+ " return []",
"aspect1 = aspect(_aspect_impl, attr_aspects=['deps'], attrs =",
" {'param': attr.string(values = ['a', 'b'])})",
"aspect2 = aspect(_aspect_impl, attr_aspects=['deps'])",
"def _rule_impl(ctx):",
- " return struct()",
+ " return []",
"injector1 = rule(_rule_impl, attrs =",
" { 'deps' : attr.label_list(aspects = [aspect1]), 'param' : attr.string() })",
"injector2 = rule(_rule_impl, attrs = { 'deps' : attr.label_list(aspects = [aspect2]) })",
- "null_rule = rule(_rule_impl, attrs = { 'deps' : attr.label_list() })"
- );
+ "null_rule = rule(_rule_impl, attrs = { 'deps' : attr.label_list() })");
scratch.file(
"pkg1/BUILD",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
index bfc6810..4a61ad2 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
@@ -1200,18 +1200,18 @@
"x/extension.bzl",
"def _aspect1_impl(target, ctx):",
" ctx.actions.do_nothing(mnemonic='Mnemonic')",
- " return struct()",
+ " return []",
"aspect1 = aspect(_aspect1_impl, attr_aspects=['deps'])",
"",
"def _injecting_rule_impl(ctx):",
- " return struct()",
+ " return []",
"injecting_rule = rule(_injecting_rule_impl, ",
" attrs = { 'deps' : attr.label_list(aspects = [aspect1]) })",
"",
"def _action_rule_impl(ctx):",
" out = ctx.actions.declare_file(ctx.label.name)",
" ctx.actions.run_shell(outputs = [out], command = 'dontcare', mnemonic='Mnemonic')",
- " return struct()",
+ " return []",
"action_rule = rule(_action_rule_impl, attrs = { 'deps' : attr.label_list() })");
scratch.file(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java b/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java
index 1e179b2..c87b315 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java
@@ -213,9 +213,10 @@
"plain(name = 'c')",
"plain(name = 'aspectdep', aspect_deps = ['a'])");
- scratch.file("x/x.bzl",
+ scratch.file(
+ "x/x.bzl",
"def _impl(ctx):",
- " return struct()",
+ " return []",
"",
"rule_aspect = aspect(",
" implementation = _impl,",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java
index e6e6e12..ce33de9 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java
@@ -22,9 +22,13 @@
import com.google.common.collect.ListMultimap;
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 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;
@@ -33,6 +37,20 @@
@RunWith(JUnit4.class)
public class StarlarkAttrTransitionProviderTest 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);
+ }
+
private void writeWhitelistFile() throws Exception {
scratch.file(
"tools/whitelists/function_transition_whitelist/BUILD",
@@ -50,6 +68,7 @@
getAnalysisMock().ccSupport().setupCcToolchainConfigForCpu(mockToolsConfig, "armeabi-v7a");
scratch.file(
"test/skylark/my_rule.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"def transition_func(settings, attr):",
" return {",
" 't0': {'//command_line_option:cpu': 'k8'},",
@@ -58,7 +77,7 @@
"my_transition = transition(implementation = transition_func, inputs = [],",
" outputs = ['//command_line_option:cpu'])",
"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),",
@@ -119,6 +138,7 @@
getAnalysisMock().ccSupport().setupCcToolchainConfigForCpu(mockToolsConfig, "armeabi-v7a");
scratch.file(
"test/not_whitelisted/my_rule.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"def transition_func(settings, attr):",
" return {",
" 't0': {'//command_line_option:cpu': 'k8'},",
@@ -127,7 +147,7 @@
"my_transition = transition(implementation = transition_func, inputs = [],",
" outputs = ['//command_line_option:cpu'])",
"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),",
@@ -161,7 +181,8 @@
// }
@SuppressWarnings("unchecked")
Map<String, List<ConfiguredTarget>> splitDeps =
- (Map<String, List<ConfiguredTarget>>) target.get("split_attr_deps");
+ (Map<String, List<ConfiguredTarget>>)
+ getMyInfoFromTarget(target).getValue("split_attr_deps");
assertThat(splitDeps).containsKey("k8");
assertThat(splitDeps).containsKey("armeabi-v7a");
assertThat(splitDeps.get("k8")).hasSize(2);
@@ -182,7 +203,7 @@
// }
@SuppressWarnings("unchecked")
Map<String, ConfiguredTarget> splitDep =
- (Map<String, ConfiguredTarget>) target.get("split_attr_dep");
+ (Map<String, ConfiguredTarget>) getMyInfoFromTarget(target).getValue("split_attr_dep");
assertThat(splitDep).containsKey("k8");
assertThat(splitDep).containsKey("armeabi-v7a");
assertThat(getConfiguration(splitDep.get("k8")).getCpu()).isEqualTo("k8");
@@ -193,7 +214,8 @@
// 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>) getMyInfoFromTarget(target).getValue("attr_deps");
assertThat(attrDeps).hasSize(4);
ListMultimap<String, Object> attrDepsMap = ArrayListMultimap.create();
for (ConfiguredTarget ct : attrDeps) {
@@ -207,7 +229,8 @@
// 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>) getMyInfoFromTarget(target).getValue("attr_dep");
assertThat(attrDep).hasSize(2);
ListMultimap<String, Object> attrDepMap = ArrayListMultimap.create();
for (ConfiguredTarget ct : attrDep) {
@@ -220,7 +243,8 @@
private void testSplitTransitionCheckK8Deps(ConfiguredTarget target) throws Exception {
// 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>) getMyInfoFromTarget(target).getValue("k8_deps");
assertThat(k8Deps).hasSize(2);
assertThat(getConfiguration(k8Deps.get(0)).getCpu()).isEqualTo("k8");
assertThat(getConfiguration(k8Deps.get(1)).getCpu()).isEqualTo("k8");
@@ -232,6 +256,7 @@
scratch.file(
"test/skylark/my_rule.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"def transition_func(settings, attr):",
" transitions = {}",
" for cpu in settings['//command_line_option:fat_apk_cpu']:",
@@ -243,7 +268,7 @@
" inputs = ['//command_line_option:fat_apk_cpu'],",
" outputs = ['//command_line_option:cpu'])",
"def impl(ctx): ",
- " return struct(split_attr_dep = ctx.split_attr.dep)",
+ " return MyInfo(split_attr_dep = ctx.split_attr.dep)",
"my_rule = rule(",
" implementation = impl,",
" attrs = {",
@@ -275,7 +300,7 @@
@SuppressWarnings("unchecked")
Map<String, ConfiguredTarget> splitDep =
- (Map<String, ConfiguredTarget>) target.get("split_attr_dep");
+ (Map<String, ConfiguredTarget>) getMyInfoFromTarget(target).getValue("split_attr_dep");
assertThat(splitDep).containsKey("k8");
assertThat(splitDep).containsKey("armeabi-v7a");
assertThat(getConfiguration(splitDep.get("k8")).getCpu()).isEqualTo("k8");
@@ -288,6 +313,7 @@
scratch.file(
"test/skylark/my_rule.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"def transition_func(settings, attr):",
" return {",
" '//command_line_option:cpu': 'armeabi-v7a',",
@@ -299,7 +325,7 @@
" '//command_line_option:dynamic_mode',",
" '//command_line_option:crosstool_top'])",
"def impl(ctx): ",
- " return struct(split_attr_dep = ctx.split_attr.dep)",
+ " return MyInfo(split_attr_dep = ctx.split_attr.dep)",
"my_rule = rule(",
" implementation = impl,",
" attrs = {",
@@ -325,7 +351,7 @@
@SuppressWarnings("unchecked")
Map<String, ConfiguredTarget> splitDep =
- (Map<String, ConfiguredTarget>) target.get("split_attr_dep");
+ (Map<String, ConfiguredTarget>) getMyInfoFromTarget(target).getValue("split_attr_dep");
assertThat(splitDep).containsKey("armeabi-v7a");
assertThat(getConfiguration(splitDep.get("armeabi-v7a")).getCpu()).isEqualTo("armeabi-v7a");
}
@@ -726,6 +752,7 @@
private void writeRulesWithAttrTransitionBzl() throws Exception {
scratch.file(
"test/skylark/rules.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"load('//test/skylark:build_settings.bzl', 'BuildSettingInfo')",
"def _transition_impl(settings, attr):",
" return {'//test/skylark:the-answer': 42}",
@@ -735,7 +762,7 @@
" outputs = ['//test/skylark:the-answer']",
")",
"def _rule_impl(ctx):",
- " return struct(dep = ctx.attr.dep)",
+ " return MyInfo(dep = ctx.attr.dep)",
"my_rule = rule(",
" implementation = _rule_impl,",
" attrs = {",
@@ -769,9 +796,11 @@
"my_rule(name = 'dep')",
"int_flag(name = 'the-answer', build_setting_default = 0)");
+ @SuppressWarnings("unchecked")
ConfiguredTarget dep =
Iterables.getOnlyElement(
- (List<ConfiguredTarget>) getConfiguredTarget("//test/skylark:test").get("dep"));
+ (List<ConfiguredTarget>)
+ getMyInfoFromTarget(getConfiguredTarget("//test/skylark:test")).getValue("dep"));
assertThat(
getConfiguration(dep)
.getOptions()
@@ -804,7 +833,10 @@
.get(Label.parseAbsoluteUnchecked("//test/skylark:the-answer")))
.isEqualTo(7);
- ConfiguredTarget dep = Iterables.getOnlyElement((List<ConfiguredTarget>) test.get("dep"));
+ @SuppressWarnings("unchecked")
+ ConfiguredTarget dep =
+ Iterables.getOnlyElement(
+ (List<ConfiguredTarget>) getMyInfoFromTarget(test).getValue("dep"));
assertThat(
getConfiguration(dep)
.getOptions()
@@ -821,6 +853,7 @@
writeBuildSettingsBzl();
scratch.file(
"test/skylark/rules.bzl",
+ "load('//myinfo:myinfo.bzl', 'MyInfo')",
"load('//test/skylark:build_settings.bzl', 'BuildSettingInfo')",
"def _transition_impl(settings, attr):",
" return {'//test/skylark:the-answer': 'What do you get if you multiply six by nine?'}",
@@ -830,7 +863,7 @@
" outputs = ['//test/skylark:the-answer']",
")",
"def _rule_impl(ctx):",
- " return struct(dep = ctx.attr.dep)",
+ " return MyInfo(dep = ctx.attr.dep)",
"my_rule = rule(",
" implementation = _rule_impl,",
" attrs = {",