aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-04-11 11:09:17 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-11 11:11:22 -0700
commit4baafaca73cee2d3237999048acfc0d5f5f59a5b (patch)
treef67e4fa76f74c9458c579f4bec0e09d892cbb7da /src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
parent51ae67a626aae45163175a1eee518b9e96e33fbc (diff)
Introduce Param.legacyNamed() to handle migration from @SkylarkSignature to @SkylarkCallable.
@SkylarkSignature.parameters() treat named()=true for parameters regardless of whether named() was actually set to true, and thus for ease of migration we mark migrated parameters as legacyNamed() = true, which is currently semantically equivalent to named() = true. We make a distinction so that it's easier to bulk fix these later. RELNOTES: None. PiperOrigin-RevId: 192477405
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java49
1 files changed, 49 insertions, 0 deletions
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 ab2245bcae..7657ced3bb 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
@@ -164,6 +164,24 @@ public class SkylarkEvaluationTest extends EvaluationTest {
return ImmutableMap.of("a", ImmutableList.of("b", "c"));
}
+ @SkylarkCallable(
+ name = "legacy_method",
+ documented = false,
+ parameters = {
+ @Param(name = "pos", positional = true, type = Boolean.class),
+ @Param(name = "legacyNamed", type = Boolean.class, positional = true, named = false,
+ legacyNamed = true),
+ @Param(name = "named", type = Boolean.class, positional = false, named = true),
+ })
+ public String legacyMethod(Boolean pos, Boolean legacyNamed, Boolean named) {
+ return "legacy_method("
+ + pos
+ + ", "
+ + legacyNamed
+ + ", "
+ + named
+ + ")";
+ }
@SkylarkCallable(
name = "with_params",
@@ -1020,6 +1038,36 @@ public class SkylarkEvaluationTest extends EvaluationTest {
.testLookup("b", "with_params(1, true, false, true, false, a)");
}
+ @Test
+ public void testLegacyNamed() throws Exception {
+ new SkylarkTest()
+ .update("mock", new Mock())
+ .setUp(
+ "b = mock.legacy_method(True, legacyNamed=True, named=True)")
+ .testLookup("b", "legacy_method(true, true, true)");
+
+ new SkylarkTest()
+ .update("mock", new Mock())
+ .setUp(
+ "b = mock.legacy_method(True, True, named=True)")
+ .testLookup("b", "legacy_method(true, true, true)");
+
+ // Verify legacyNamed also works with proxy method objects.
+ new SkylarkTest()
+ .update("mock", new Mock())
+ .setUp(
+ "m = mock.proxy_methods_object()",
+ "b = m.legacy_method(True, legacyNamed=True, named=True)")
+ .testLookup("b", "legacy_method(true, true, true)");
+
+ new SkylarkTest()
+ .update("mock", new Mock())
+ .setUp(
+ "m = mock.proxy_methods_object()",
+ "b = m.legacy_method(True, True, named=True)")
+ .testLookup("b", "legacy_method(true, true, true)");
+ }
+
/**
* This test verifies an error is raised when a method parameter is set both positionally and
* by name.
@@ -1758,6 +1806,7 @@ public class SkylarkEvaluationTest extends EvaluationTest {
"dir(mock)",
"function",
"is_empty",
+ "legacy_method",
"nullfunc_failing",
"nullfunc_working",
"proxy_methods_object",