Update tests to avoid implicit depset iteration
Progress towards https://github.com/bazelbuild/bazel/issues/5816
RELNOTES: None.
PiperOrigin-RevId: 249341642
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
index 1533fdb..1b8065d 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
@@ -494,7 +494,7 @@
"test/aspect.bzl",
"def _impl(target, ctx):",
" g = target.output_group('_hidden_top_level" + INTERNAL_SUFFIX + "')",
- " return struct(output_groups = { 'my_result' : [ f for f in g] })",
+ " return struct(output_groups = { 'my_result' : g.to_list() })",
"",
"MyAspect = aspect(",
" implementation=_impl,",
@@ -526,7 +526,7 @@
"test/aspect.bzl",
"def _impl(target, ctx):",
" g = target[OutputGroupInfo]._hidden_top_level" + INTERNAL_SUFFIX,
- " return [OutputGroupInfo(my_result= [ f for f in g])]",
+ " return [OutputGroupInfo(my_result=g.to_list())]",
"",
"MyAspect = aspect(",
" implementation=_impl,",
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 7d1b2c8..c0b6ca4 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
@@ -332,7 +332,7 @@
"load('//myinfo:myinfo.bzl', 'MyInfo')",
"def _impl(ctx):",
" f = ctx.attr.dep.output_group('_hidden_top_level" + INTERNAL_SUFFIX + "')",
- " g = list(f)",
+ " g = f.to_list()",
" return [MyInfo(result = f),",
" OutputGroupInfo(my_group = g, my_empty_group = [])]",
"my_rule = rule(implementation = _impl,",
@@ -361,7 +361,7 @@
"load('//myinfo:myinfo.bzl', 'MyInfo')",
"def _impl(ctx):",
" f = ctx.attr.dep[OutputGroupInfo]._hidden_top_level" + INTERNAL_SUFFIX,
- " g = list(f)",
+ " g = f.to_list()",
" return [MyInfo(result = f),",
" OutputGroupInfo(my_group = g, my_empty_group = [])]",
"my_rule = rule(implementation = _impl,",
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
index 9cac217..566e25c 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
@@ -1530,13 +1530,14 @@
SkylarkRuleContext ruleContext = createRuleContext("//test:foo");
Object filenames =
evalRuleContextCode(
- ruleContext, "[f.short_path for f in ruleContext.attr.dep.default_runfiles.files]");
+ ruleContext,
+ "[f.short_path for f in ruleContext.attr.dep.default_runfiles.files.to_list()]");
assertThat(filenames).isInstanceOf(SkylarkList.class);
SkylarkList filenamesList = (SkylarkList) filenames;
assertThat(filenamesList).containsAtLeast("test/lib.py", "test/lib2.py");
Object emptyFilenames =
evalRuleContextCode(
- ruleContext, "list(ruleContext.attr.dep.default_runfiles.empty_filenames)");
+ ruleContext, "ruleContext.attr.dep.default_runfiles.empty_filenames.to_list()");
assertThat(emptyFilenames).isInstanceOf(SkylarkList.class);
SkylarkList emptyFilenamesList = (SkylarkList) emptyFilenames;
assertThat(emptyFilenamesList).containsExactly("test/__init__.py");
@@ -1544,7 +1545,7 @@
SkylarkRuleContext ruleWithInitContext = createRuleContext("//test:foo_with_init");
Object noEmptyFilenames =
evalRuleContextCode(
- ruleWithInitContext, "list(ruleContext.attr.dep.default_runfiles.empty_filenames)");
+ ruleWithInitContext, "ruleContext.attr.dep.default_runfiles.empty_filenames.to_list()");
assertThat(noEmptyFilenames).isInstanceOf(SkylarkList.class);
SkylarkList noEmptyFilenamesList = (SkylarkList) noEmptyFilenames;
assertThat(noEmptyFilenamesList).isEmpty();
@@ -1587,7 +1588,7 @@
evalRuleContextCode(
ruleWithSymlinkContext,
"[s.path for s in",
- "ruleContext.attr.data[0].data_runfiles.symlinks]");
+ "ruleContext.attr.data[0].data_runfiles.symlinks.to_list()]");
assertThat(symlinkPaths).isInstanceOf(SkylarkList.class);
SkylarkList<String> symlinkPathsList = (SkylarkList<String>) symlinkPaths;
assertThat(symlinkPathsList).containsExactly("symlink_test/a.py").inOrder();
@@ -1595,7 +1596,7 @@
evalRuleContextCode(
ruleWithSymlinkContext,
"[s.target_file.short_path for s in",
- "ruleContext.attr.data[0].data_runfiles.symlinks]");
+ "ruleContext.attr.data[0].data_runfiles.symlinks.to_list()]");
assertThat(symlinkFilenames).isInstanceOf(SkylarkList.class);
SkylarkList<String> symlinkFilenamesList = (SkylarkList<String>) symlinkFilenames;
assertThat(symlinkFilenamesList).containsExactly("test/a.py").inOrder();
@@ -1638,7 +1639,7 @@
evalRuleContextCode(
ruleWithSymlinkContext,
"[s.path for s in",
- "ruleContext.attr.data[0].data_runfiles.symlinks]");
+ "ruleContext.attr.data[0].data_runfiles.symlinks.to_list()]");
assertThat(symlinkPaths).isInstanceOf(SkylarkList.class);
SkylarkList<String> symlinkPathsList = (SkylarkList<String>) symlinkPaths;
assertThat(symlinkPathsList).containsExactly("symlink_test/a.py").inOrder();
@@ -1646,7 +1647,7 @@
evalRuleContextCode(
ruleWithSymlinkContext,
"[s.target_file.short_path for s in",
- "ruleContext.attr.data[0].data_runfiles.symlinks]");
+ "ruleContext.attr.data[0].data_runfiles.symlinks.to_list()]");
assertThat(symlinkFilenames).isInstanceOf(SkylarkList.class);
SkylarkList<String> symlinkFilenamesList = (SkylarkList<String>) symlinkFilenames;
assertThat(symlinkFilenamesList).containsExactly("test/a.py").inOrder();
@@ -1690,7 +1691,7 @@
evalRuleContextCode(
ruleWithRootSymlinkContext,
"[s.path for s in",
- "ruleContext.attr.data[0].data_runfiles.root_symlinks]");
+ "ruleContext.attr.data[0].data_runfiles.root_symlinks.to_list()]");
assertThat(rootSymlinkPaths).isInstanceOf(SkylarkList.class);
SkylarkList<String> rootSymlinkPathsList = (SkylarkList<String>) rootSymlinkPaths;
assertThat(rootSymlinkPathsList).containsExactly("root_symlink_test/a.py").inOrder();
@@ -1698,7 +1699,7 @@
evalRuleContextCode(
ruleWithRootSymlinkContext,
"[s.target_file.short_path for s in",
- "ruleContext.attr.data[0].data_runfiles.root_symlinks]");
+ "ruleContext.attr.data[0].data_runfiles.root_symlinks.to_list()]");
assertThat(rootSymlinkFilenames).isInstanceOf(SkylarkList.class);
SkylarkList<String> rootSymlinkFilenamesList = (SkylarkList<String>) rootSymlinkFilenames;
assertThat(rootSymlinkFilenamesList).containsExactly("test/a.py").inOrder();
@@ -1742,7 +1743,7 @@
evalRuleContextCode(
ruleWithRootSymlinkContext,
"[s.path for s in",
- "ruleContext.attr.data[0].data_runfiles.root_symlinks]");
+ "ruleContext.attr.data[0].data_runfiles.root_symlinks.to_list()]");
assertThat(rootSymlinkPaths).isInstanceOf(SkylarkList.class);
SkylarkList<String> rootSymlinkPathsList = (SkylarkList<String>) rootSymlinkPaths;
assertThat(rootSymlinkPathsList).containsExactly("root_symlink_test/a.py").inOrder();
@@ -1750,7 +1751,7 @@
evalRuleContextCode(
ruleWithRootSymlinkContext,
"[s.target_file.short_path for s in",
- "ruleContext.attr.data[0].data_runfiles.root_symlinks]");
+ "ruleContext.attr.data[0].data_runfiles.root_symlinks.to_list()]");
assertThat(rootSymlinkFilenames).isInstanceOf(SkylarkList.class);
SkylarkList<String> rootSymlinkFilenamesList = (SkylarkList<String>) rootSymlinkFilenames;
assertThat(rootSymlinkFilenamesList).containsExactly("test/a.py").inOrder();
@@ -1851,7 +1852,7 @@
Object mapping = eval("actions.by_file");
assertThat(mapping).isInstanceOf(SkylarkDict.class);
assertThat((SkylarkDict<?, ?>) mapping).hasSize(1);
- update("file", eval("list(ruleContext.attr.dep.files)[0]"));
+ update("file", eval("ruleContext.attr.dep.files.to_list()[0]"));
Object actionUnchecked = eval("actions.by_file[file]");
assertThat(actionUnchecked).isInstanceOf(ActionAnalysisMetadata.class);
}
@@ -1913,10 +1914,10 @@
assertThat(eval("action2.content")).isEqualTo(Runtime.NONE);
assertThat(eval("action1.substitutions")).isEqualTo(Runtime.NONE);
- assertThat(eval("list(action1.inputs)")).isEqualTo(eval("[]"));
- assertThat(eval("list(action1.outputs)")).isEqualTo(eval("[file1]"));
- assertThat(eval("list(action2.inputs)")).isEqualTo(eval("[file1]"));
- assertThat(eval("list(action2.outputs)")).isEqualTo(eval("[file2]"));
+ assertThat(eval("action1.inputs.to_list()")).isEqualTo(eval("[]"));
+ assertThat(eval("action1.outputs.to_list()")).isEqualTo(eval("[file1]"));
+ assertThat(eval("action2.inputs.to_list()")).isEqualTo(eval("[file1]"));
+ assertThat(eval("action2.outputs.to_list()")).isEqualTo(eval("[file2]"));
}
// For created_actions() tests, the "undertest" rule represents both the code under test and the
@@ -1991,7 +1992,7 @@
simpleBuildDefinition);
SkylarkRuleContext ruleContext = createRuleContext("//test:testing");
update("ruleContext", ruleContext);
- update("file", eval("list(ruleContext.attr.dep.files)[0]"));
+ update("file", eval("ruleContext.attr.dep.files.to_list()[0]"));
update("action", eval("ruleContext.attr.dep[Actions].by_file[file]"));
assertThat(eval("type(action)")).isEqualTo("Action");
@@ -2102,7 +2103,7 @@
simpleBuildDefinition);
SkylarkRuleContext ruleContext = createRuleContext("//test:testing");
update("ruleContext", ruleContext);
- update("file", eval("list(ruleContext.attr.dep.files)[0]"));
+ update("file", eval("ruleContext.attr.dep.files.to_list()[0]"));
update("action", eval("ruleContext.attr.dep[Actions].by_file[file]"));
assertThat(eval("type(action)")).isEqualTo("Action");
@@ -2141,7 +2142,7 @@
")");
SkylarkRuleContext ruleContext = createRuleContext("//test:testing");
update("ruleContext", ruleContext);
- update("file", eval("list(ruleContext.attr.dep.files)[0]"));
+ update("file", eval("ruleContext.attr.dep.files.to_list()[0]"));
update("action", eval("ruleContext.attr.dep[Actions].by_file[file]"));
assertThat(eval("type(action)")).isEqualTo("Action");
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
index 6f38acc..baa1c16 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
@@ -67,6 +67,7 @@
import com.google.devtools.build.lib.syntax.SkylarkList;
import com.google.devtools.build.lib.syntax.SkylarkList.MutableList;
import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
+import com.google.devtools.build.lib.syntax.StarlarkSemantics;
import com.google.devtools.build.lib.testutil.MoreAsserts;
import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.util.OsUtils;
@@ -248,6 +249,13 @@
@SuppressWarnings("unchecked")
@Test
public void testListComprehensionsWithNestedSet() throws Exception {
+ ev =
+ createEvaluationTestCase(
+ StarlarkSemantics.DEFAULT_SEMANTICS.toBuilder()
+ .incompatibleDepsetIsNotIterable(false)
+ .build());
+ ev.initialize();
+
Object result = eval("[x + x for x in depset([1, 2, 3])]");
assertThat((Iterable<Object>) result).containsExactly(2, 4, 6).inOrder();
}
@@ -706,8 +714,8 @@
" label_dict = {}",
" all = []",
" for dep in ruleContext.attr.srcs + ruleContext.attr.tools:",
- " all.extend(list(dep.files))",
- " label_dict[dep.label] = list(dep.files)",
+ " all.extend(dep.files.to_list())",
+ " label_dict[dep.label] = dep.files.to_list()",
" return ruleContext.resolve_command(",
" command='A$(locations //foo:mytool) B$(location //foo:file3.dat)',",
" attribute='cmd', expand_locations=True, label_dict=label_dict)",
@@ -3185,4 +3193,3 @@
}
}
}
-
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java b/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java
index 7745179..c68ea65 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java
@@ -78,7 +78,7 @@
+ LINE_SEPARATOR
+ "\t\ts[0]",
"def foo():",
- " s = depset()",
+ " s = []",
" if s[0] == 1:",
" x = 1",
"foo()");
@@ -249,7 +249,6 @@
.testEval("sorted([True, False, True])", "[False, True, True]")
.testEval("sorted(['a','x','b','z'])", "[\"a\", \"b\", \"x\", \"z\"]")
.testEval("sorted({1: True, 5: True, 4: False})", "[1, 4, 5]")
- .testEval("sorted(depset([1, 5, 4]))", "[1, 4, 5]")
.testIfExactError("Cannot compare function with function", "sorted([sorted, sorted])");
}
@@ -637,8 +636,7 @@
.testStatement("str(zip([1], {2: 'a'}))", "[(1, 2)]")
.testStatement("str(zip([1], []))", "[]")
.testIfErrorContains("type 'int' is not iterable", "zip(123)")
- .testIfErrorContains("type 'int' is not iterable", "zip([1], 1)")
- .testStatement("str(zip([1], depset([2])))", "[(1, 2)]");
+ .testIfErrorContains("type 'int' is not iterable", "zip([1], 1)");
}
/**
@@ -701,7 +699,6 @@
public void testTupleCoercion() throws Exception {
new BothModesTest()
.testStatement("tuple([1, 2]) == (1, 2)", true)
- .testStatement("tuple(depset([1, 2])) == (1, 2)", true)
// Depends on current implementation of dict
.testStatement("tuple({1: 'foo', 2: 'bar'}) == (1, 2)", true);
}
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
index 12a789a..2e8fdc7 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
@@ -1487,8 +1487,8 @@
}
@Test
- public void testInSet() throws Exception {
- new SkylarkTest()
+ public void testInSetDeprecated() throws Exception {
+ new SkylarkTest("--incompatible_depset_is_not_iterable=false")
.testStatement("'b' in depset(['a', 'b'])", Boolean.TRUE)
.testStatement("'c' in depset(['a', 'b'])", Boolean.FALSE)
.testStatement("1 in depset(['a', 'b'])", Boolean.FALSE);