diff --git a/pom.xml b/pom.xml
index 87ded2f..59bc9c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -162,6 +162,27 @@
true
+
+ org.apache.maven.plugins
+ maven-site-plugin
+ 3.7.1
+
+
+ com.github.github
+ site-maven-plugin
+ 0.12
+
+ Creating site for ${project.version}
+
+
+
+
+ site
+
+ site
+
+
+
@@ -230,9 +251,9 @@
org.apache.maven.plugins
maven-javadoc-plugin
- 2.8.1
+ 3.1.1
-
+ public
diff --git a/src/main/java/org/robotframework/javalib/reflection/ArgumentCollector.java b/src/main/java/org/robotframework/javalib/reflection/ArgumentCollector.java
index 51bdd9b..73a1623 100644
--- a/src/main/java/org/robotframework/javalib/reflection/ArgumentCollector.java
+++ b/src/main/java/org/robotframework/javalib/reflection/ArgumentCollector.java
@@ -75,7 +75,7 @@ private int getVarargsIndex() {
}
private Object getParameterValue(String parameterName, int i, List args, Map kwargs) {
- String parameterDefaultValue = parameterName.contains("=") && parameterName.split("=").length > 1 ? parameterName.split("=")[1] : null;
+ String parameterDefaultValue = this.parameterNames.get(i).contains("=") && this.parameterNames.get(i).split("=").length > 1 ? this.parameterNames.get(i).split("=")[1] : null;
Object value = args != null && args.size() > i ? args.get(i) : parameterDefaultValue;
if (kwargs != null && kwargs.containsKey(parameterName)) {
value = kwargs.get(parameterName);
@@ -101,7 +101,7 @@ private Object ensureCorrectVarargsType(List varargs) {
private boolean keywordHasVarargs() {
int varargIndex = this.getVarargsIndex();
return varargIndex > -1 && parameterTypes != null && parameterTypes.length > 0 &&
- (parameterTypes[parameterTypes.length-1] == List.class || parameterTypes[parameterTypes.length-varargIndex].isArray() ||
+ (parameterTypes[parameterTypes.length-1] == List.class || parameterTypes[parameterTypes.length-1].isArray() ||
(parameterTypes.length > 1 && (parameterTypes[parameterTypes.length-2] == List.class || parameterTypes[parameterTypes.length-2].isArray())));
}
diff --git a/src/test/java/com/some/own/keyword/AnnotatedKeywords.java b/src/test/java/com/some/own/keyword/AnnotatedKeywords.java
index 4eacd18..02b1a13 100644
--- a/src/test/java/com/some/own/keyword/AnnotatedKeywords.java
+++ b/src/test/java/com/some/own/keyword/AnnotatedKeywords.java
@@ -1,7 +1,9 @@
package com.some.own.keyword;
+import org.junit.jupiter.api.Assertions;
import org.opentest4j.AssertionFailedError;
+import org.robotframework.javalib.annotation.ArgumentNames;
import org.robotframework.javalib.annotation.RobotKeyword;
import org.robotframework.javalib.annotation.RobotKeywords;
@@ -22,5 +24,4 @@ public void myFailingKeyword() {
public String myKeywordThatReturnsItsArguments(String arg) {
return arg;
}
-
}
diff --git a/src/test/java/org/robotframework/javalib/keyword/AnnotatedKeywords.java b/src/test/java/org/robotframework/javalib/keyword/AnnotatedKeywords.java
index c3c5949..bc0b77b 100644
--- a/src/test/java/org/robotframework/javalib/keyword/AnnotatedKeywords.java
+++ b/src/test/java/org/robotframework/javalib/keyword/AnnotatedKeywords.java
@@ -3,6 +3,7 @@
import java.util.List;
import java.util.Map;
+import org.junit.jupiter.api.Assertions;
import org.opentest4j.AssertionFailedError;
import org.robotframework.javalib.annotation.ArgumentNames;
import org.robotframework.javalib.annotation.RobotKeyword;
@@ -102,4 +103,27 @@ public class SomeObject implements SomeInterface {
public String value;
}
+ @RobotKeyword
+ @ArgumentNames({"*Technical arguments"})
+ public String[] onlyVarargs(String[] arguments) {
+ return arguments;
+ }
+
+ @RobotKeyword
+ @ArgumentNames({"Image or text to wait", "Similarity of images=0.7", "*Technical arguments"})
+ public void defaultAndVarargs(String imageNameOrText, double similarity, String[] arguments) {
+ Assertions.assertEquals(0.7, similarity);
+ }
+
+ @RobotKeyword
+ @ArgumentNames({"port=0"})
+ public int useInt(int port) {
+ return port;
+ }
+
+ @RobotKeyword
+ @ArgumentNames({"port=0"})
+ public Integer useInteger(Integer port) {
+ return port;
+ }
}
diff --git a/src/test/java/org/robotframework/javalib/library/AnnotationLibraryIntegrationTest.java b/src/test/java/org/robotframework/javalib/library/AnnotationLibraryIntegrationTest.java
index e907ca3..f58b10c 100644
--- a/src/test/java/org/robotframework/javalib/library/AnnotationLibraryIntegrationTest.java
+++ b/src/test/java/org/robotframework/javalib/library/AnnotationLibraryIntegrationTest.java
@@ -22,7 +22,8 @@ public void findsAnnotatedKeywordsFromClassPath() throws Exception {
List keywordNames = annotationLibrary.getKeywordNames();
List expectedKeywordNames = Arrays.asList("failingKeyword", "someKeyword", "overloaded",
keywordThatReturnsItsArguments, "keywordWithVariableArgumentCount", "variousArgs", "defaultValues",
- "keywordWithObjectArgument", "getSomeObject", "keywordWithNumericArguments", byteArrayTest );
+ "keywordWithObjectArgument", "getSomeObject", "keywordWithNumericArguments", byteArrayTest, "defaultAndVarargs", "onlyVarargs",
+ "useInt", "useInteger");
keywordNames.sort(Comparator.naturalOrder());
expectedKeywordNames.sort(Comparator.naturalOrder());
assertIterableEquals(keywordNames, expectedKeywordNames);
@@ -92,4 +93,26 @@ public void testByteArrayHandlingResponse() {
Object response = annotationLibrary.runKeyword(byteArrayTest, Arrays.asList(testString, testString.getBytes()));
assertEquals(testString, new String((byte[]) response));
}
+
+ @Test
+ public void onlyVarargs() {
+ annotationLibrary.runKeyword("onlyVarargs", Arrays.asList("one given argument"));
+ }
+
+ @Test
+ public void defaultAndVarargs() {
+ annotationLibrary.runKeyword("defaultAndVarargs", Arrays.asList("one given argument"));
+ }
+
+ @Test
+ public void useInt() {
+ Object response = annotationLibrary.runKeyword("useInt", Arrays.asList());
+ assertEquals(0, response);
+ }
+
+ @Test
+ public void useInteger() {
+ Object response = annotationLibrary.runKeyword("useInteger", Arrays.asList());
+ assertEquals(0, response);
+ }
}
diff --git a/src/test/java/org/robotframework/javalib/library/AnnotationLibraryMultipleKeywordsWithSameNameIntegrationTest.java b/src/test/java/org/robotframework/javalib/library/AnnotationLibraryMultipleKeywordsWithSameNameIntegrationTest.java
index 3db80cc..4ac4429 100644
--- a/src/test/java/org/robotframework/javalib/library/AnnotationLibraryMultipleKeywordsWithSameNameIntegrationTest.java
+++ b/src/test/java/org/robotframework/javalib/library/AnnotationLibraryMultipleKeywordsWithSameNameIntegrationTest.java
@@ -29,7 +29,8 @@ public void testFindsAnnotatedKeywordsFromClassPath() {
List expectedKeywordNames = Arrays.asList("failingKeyword", "someKeyword", "overloaded",
keywordThatReturnsItsArguments, "keywordWithVariableArgumentCount", "variousArgs", "defaultValues",
"keywordWithObjectArgument", "getSomeObject", "keywordWithNumericArguments",
- "myFailingKeyword", "myKeywordThatReturnsItsArguments", "byteArrayTest");
+ "myFailingKeyword", "myKeywordThatReturnsItsArguments", "byteArrayTest", "defaultAndVarargs", "onlyVarargs",
+ "useInt", "useInteger");
keywordNames.sort(Comparator.naturalOrder());
expectedKeywordNames.sort(Comparator.naturalOrder());
assertIterableEquals(keywordNames, expectedKeywordNames);
diff --git a/src/test/robotframework/acceptance/annotationlibrary.robot b/src/test/robotframework/acceptance/annotationlibrary.robot
index edea548..fb9d655 100644
--- a/src/test/robotframework/acceptance/annotationlibrary.robot
+++ b/src/test/robotframework/acceptance/annotationlibrary.robot
@@ -49,3 +49,9 @@ Positional and kwargs
Named and kwargs
Various Args arg=value hello=world # Logs 'arg: value' and 'kwarg: hello world'.
Various Args hello=world arg=value # Same as above. Order does not matter.
+
+Only varargs
+ Only varargs testThing
+
+Default and varargs
+ Default and varargs Non-default