aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/skylarkinterface
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-03-22 08:42:22 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-22 08:43:31 -0700
commit52c3d908e2d0beffff7336052cf3fc9849d8092b (patch)
tree9fdfe115d2d25d6e3e257119df1b41cfd702b8de /src/test/java/com/google/devtools/build/lib/skylarkinterface
parent8c434685584388a6e5e1b70685e9d9acbb948831 (diff)
Add annotation-processor verification that only one of Param.type or Param.allowedTypes is used.
RELNOTES: None. PiperOrigin-RevId: 190070309
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.java11
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java11
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ParamTypeConflict.java41
3 files changed, 60 insertions, 3 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 6459051e0c..7e7291a14e 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
@@ -133,4 +133,15 @@ public final class SkylarkCallableProcessorTest {
.withErrorContaining(
"Parameter 'a_parameter' has 'None' default value but is not noneable.");
}
+
+ @Test
+ public void testParamTypeConflict() throws Exception {
+ assertAbout(javaSource())
+ .that(getFile("ParamTypeConflict.java"))
+ .processedWith(new SkylarkCallableProcessor())
+ .failsToCompile()
+ .withErrorContaining(
+ "Parameter 'a_parameter' has both 'type' and 'allowedTypes' specified."
+ + " Only one may be specified.");
+ }
}
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 815ba22bf1..1eb207719f 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
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.skylarkinterface.processor.testsources;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
+import com.google.devtools.build.lib.skylarkinterface.ParamType;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.syntax.Environment;
import com.google.devtools.build.lib.syntax.FuncallExpression;
@@ -74,10 +75,14 @@ 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, defaultValue = "None",
- noneable = true),
+ @Param(name = "three",
+ allowedTypes = {
+ @ParamType(type = String.class),
+ @ParamType(type = Integer.class),
+ },
+ named = true, defaultValue = "None", noneable = true),
})
- public String threeArgMethodWithParams(String one, Integer two, String three) {
+ public String threeArgMethodWithParams(String one, Integer two, Object three) {
return "baz";
}
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ParamTypeConflict.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ParamTypeConflict.java
new file mode 100644
index 0000000000..cda282f9ac
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ParamTypeConflict.java
@@ -0,0 +1,41 @@
+// 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.ParamType;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+
+/**
+ * Test case for a SkylarkCallable method which has a parameter with both type and allowedTypes
+ * specified.
+ */
+public class ParamTypeConflict {
+
+ @SkylarkCallable(
+ name = "param_type_conflict",
+ doc = "",
+ parameters = {
+ @Param(name = "a_parameter",
+ type = String.class,
+ named = true,
+ allowedTypes = {
+ @ParamType(type = String.class),
+ })
+ })
+ public Integer paramTypeConflict() {
+ return 42;
+ }
+}