aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/skylarkinterface
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-03-20 11:35:33 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-20 11:37:24 -0700
commitbe61041a69a614fd009fd613a70ac1ac8af5d507 (patch)
treec3c1bef8028dbcc743d5fd798de1df7e8d39e5e2 /src/test/java/com/google/devtools/build/lib/skylarkinterface
parent7ba9d764dfdea96da470f612d360824269fda132 (diff)
Force @SkylarkCallable Params with defaultValue = "None" to be noneable.
Previously, usage was fairly inconsistent. From now on, if the @Param is mandatory, use defaultValue = "" instead. RELNOTES: None. PiperOrigin-RevId: 189777905
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/skylarkinterface')
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/InvalidParamNoneDefault.java35
3 files changed, 47 insertions, 1 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java
index 074d52a8e9..6459051e0c 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java
@@ -123,4 +123,14 @@ public final class SkylarkCallableProcessorTest {
+ "but annotation declared 1 user-supplied parameters "
+ "and 0 extra interpreter parameters.");
}
+
+ @Test
+ public void testInvalidParamNoneDefault() throws Exception {
+ assertAbout(javaSource())
+ .that(getFile("InvalidParamNoneDefault.java"))
+ .processedWith(new SkylarkCallableProcessor())
+ .failsToCompile()
+ .withErrorContaining(
+ "Parameter 'a_parameter' has 'None' default value but is not noneable.");
+ }
}
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java
index a1cfe5fa15..815ba22bf1 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java
@@ -74,7 +74,8 @@ public class GoldenCase {
parameters = {
@Param(name = "one", type = String.class, named = true),
@Param(name = "two", type = Integer.class, named = true),
- @Param(name = "three", type = String.class, named = true),
+ @Param(name = "three", type = String.class, named = true, defaultValue = "None",
+ noneable = true),
})
public String threeArgMethodWithParams(String one, Integer two, String three) {
return "baz";
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/InvalidParamNoneDefault.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/InvalidParamNoneDefault.java
new file mode 100644
index 0000000000..d74cd631c4
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/InvalidParamNoneDefault.java
@@ -0,0 +1,35 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.skylarkinterface.processor.testsources;
+
+import com.google.devtools.build.lib.skylarkinterface.Param;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+
+/**
+ * Test case for a SkylarkCallable method which has a parameter with "None" set as the default,
+ * but noneable is not true.
+ */
+public class InvalidParamNoneDefault {
+
+ @SkylarkCallable(
+ name = "method_with_invalid_default",
+ doc = "",
+ parameters = {
+ @Param(name = "a_parameter", type = String.class, named = true, defaultValue = "None"),
+ })
+ public String methodWithParams() {
+ return "lamb";
+ }
+}