Skip to content

Commit 22dd4e9

Browse files
authored
Merge pull request #30 from robotframework/default_value_and_vararg_handling
Added default value handling fixes
2 parents c2e0ab6 + 0e5c326 commit 22dd4e9

7 files changed

Lines changed: 83 additions & 7 deletions

File tree

pom.xml

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,27 @@
162162
<autoReleaseAfterClose>true</autoReleaseAfterClose>
163163
</configuration>
164164
</plugin>
165+
<plugin>
166+
<groupId>org.apache.maven.plugins</groupId>
167+
<artifactId>maven-site-plugin</artifactId>
168+
<version>3.7.1</version>
169+
</plugin>
170+
<plugin>
171+
<groupId>com.github.github</groupId>
172+
<artifactId>site-maven-plugin</artifactId>
173+
<version>0.12</version>
174+
<configuration>
175+
<message>Creating site for ${project.version}</message>
176+
</configuration>
177+
<executions>
178+
<execution>
179+
<goals>
180+
<goal>site</goal>
181+
</goals>
182+
<phase>site</phase>
183+
</execution>
184+
</executions>
185+
</plugin>
165186
</plugins>
166187
</build>
167188

@@ -230,9 +251,9 @@
230251
<plugin>
231252
<groupId>org.apache.maven.plugins</groupId>
232253
<artifactId>maven-javadoc-plugin</artifactId>
233-
<version>2.8.1</version>
254+
<version>3.1.1</version>
234255
<configuration>
235-
<use>false</use>
256+
<show>public</show>
236257
</configuration>
237258
</plugin>
238259
</plugins>

src/main/java/org/robotframework/javalib/reflection/ArgumentCollector.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ private int getVarargsIndex() {
7575
}
7676

7777
private Object getParameterValue(String parameterName, int i, List args, Map<String, Object> kwargs) {
78-
String parameterDefaultValue = parameterName.contains("=") && parameterName.split("=").length > 1 ? parameterName.split("=")[1] : null;
78+
String parameterDefaultValue = this.parameterNames.get(i).contains("=") && this.parameterNames.get(i).split("=").length > 1 ? this.parameterNames.get(i).split("=")[1] : null;
7979
Object value = args != null && args.size() > i ? args.get(i) : parameterDefaultValue;
8080
if (kwargs != null && kwargs.containsKey(parameterName)) {
8181
value = kwargs.get(parameterName);
@@ -101,7 +101,7 @@ private Object ensureCorrectVarargsType(List varargs) {
101101
private boolean keywordHasVarargs() {
102102
int varargIndex = this.getVarargsIndex();
103103
return varargIndex > -1 && parameterTypes != null && parameterTypes.length > 0 &&
104-
(parameterTypes[parameterTypes.length-1] == List.class || parameterTypes[parameterTypes.length-varargIndex].isArray() ||
104+
(parameterTypes[parameterTypes.length-1] == List.class || parameterTypes[parameterTypes.length-1].isArray() ||
105105
(parameterTypes.length > 1 && (parameterTypes[parameterTypes.length-2] == List.class || parameterTypes[parameterTypes.length-2].isArray())));
106106
}
107107

src/test/java/com/some/own/keyword/AnnotatedKeywords.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.some.own.keyword;
22

3+
import org.junit.jupiter.api.Assertions;
34
import org.opentest4j.AssertionFailedError;
45

6+
import org.robotframework.javalib.annotation.ArgumentNames;
57
import org.robotframework.javalib.annotation.RobotKeyword;
68
import org.robotframework.javalib.annotation.RobotKeywords;
79

@@ -22,5 +24,4 @@ public void myFailingKeyword() {
2224
public String myKeywordThatReturnsItsArguments(String arg) {
2325
return arg;
2426
}
25-
2627
}

src/test/java/org/robotframework/javalib/keyword/AnnotatedKeywords.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.List;
44
import java.util.Map;
55

6+
import org.junit.jupiter.api.Assertions;
67
import org.opentest4j.AssertionFailedError;
78
import org.robotframework.javalib.annotation.ArgumentNames;
89
import org.robotframework.javalib.annotation.RobotKeyword;
@@ -102,4 +103,27 @@ public class SomeObject implements SomeInterface {
102103
public String value;
103104
}
104105

106+
@RobotKeyword
107+
@ArgumentNames({"*Technical arguments"})
108+
public String[] onlyVarargs(String[] arguments) {
109+
return arguments;
110+
}
111+
112+
@RobotKeyword
113+
@ArgumentNames({"Image or text to wait", "Similarity of images=0.7", "*Technical arguments"})
114+
public void defaultAndVarargs(String imageNameOrText, double similarity, String[] arguments) {
115+
Assertions.assertEquals(0.7, similarity);
116+
}
117+
118+
@RobotKeyword
119+
@ArgumentNames({"port=0"})
120+
public int useInt(int port) {
121+
return port;
122+
}
123+
124+
@RobotKeyword
125+
@ArgumentNames({"port=0"})
126+
public Integer useInteger(Integer port) {
127+
return port;
128+
}
105129
}

src/test/java/org/robotframework/javalib/library/AnnotationLibraryIntegrationTest.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ public void findsAnnotatedKeywordsFromClassPath() throws Exception {
2222
List keywordNames = annotationLibrary.getKeywordNames();
2323
List expectedKeywordNames = Arrays.asList("failingKeyword", "someKeyword", "overloaded",
2424
keywordThatReturnsItsArguments, "keywordWithVariableArgumentCount", "variousArgs", "defaultValues",
25-
"keywordWithObjectArgument", "getSomeObject", "keywordWithNumericArguments", byteArrayTest );
25+
"keywordWithObjectArgument", "getSomeObject", "keywordWithNumericArguments", byteArrayTest, "defaultAndVarargs", "onlyVarargs",
26+
"useInt", "useInteger");
2627
keywordNames.sort(Comparator.naturalOrder());
2728
expectedKeywordNames.sort(Comparator.naturalOrder());
2829
assertIterableEquals(keywordNames, expectedKeywordNames);
@@ -92,4 +93,26 @@ public void testByteArrayHandlingResponse() {
9293
Object response = annotationLibrary.runKeyword(byteArrayTest, Arrays.asList(testString, testString.getBytes()));
9394
assertEquals(testString, new String((byte[]) response));
9495
}
96+
97+
@Test
98+
public void onlyVarargs() {
99+
annotationLibrary.runKeyword("onlyVarargs", Arrays.asList("one given argument"));
100+
}
101+
102+
@Test
103+
public void defaultAndVarargs() {
104+
annotationLibrary.runKeyword("defaultAndVarargs", Arrays.asList("one given argument"));
105+
}
106+
107+
@Test
108+
public void useInt() {
109+
Object response = annotationLibrary.runKeyword("useInt", Arrays.asList());
110+
assertEquals(0, response);
111+
}
112+
113+
@Test
114+
public void useInteger() {
115+
Object response = annotationLibrary.runKeyword("useInteger", Arrays.asList());
116+
assertEquals(0, response);
117+
}
95118
}

src/test/java/org/robotframework/javalib/library/AnnotationLibraryMultipleKeywordsWithSameNameIntegrationTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ public void testFindsAnnotatedKeywordsFromClassPath() {
2929
List expectedKeywordNames = Arrays.asList("failingKeyword", "someKeyword", "overloaded",
3030
keywordThatReturnsItsArguments, "keywordWithVariableArgumentCount", "variousArgs", "defaultValues",
3131
"keywordWithObjectArgument", "getSomeObject", "keywordWithNumericArguments",
32-
"myFailingKeyword", "myKeywordThatReturnsItsArguments", "byteArrayTest");
32+
"myFailingKeyword", "myKeywordThatReturnsItsArguments", "byteArrayTest", "defaultAndVarargs", "onlyVarargs",
33+
"useInt", "useInteger");
3334
keywordNames.sort(Comparator.naturalOrder());
3435
expectedKeywordNames.sort(Comparator.naturalOrder());
3536
assertIterableEquals(keywordNames, expectedKeywordNames);

src/test/robotframework/acceptance/annotationlibrary.robot

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,9 @@ Positional and kwargs
4949
Named and kwargs
5050
Various Args arg=value hello=world # Logs 'arg: value' and 'kwarg: hello world'.
5151
Various Args hello=world arg=value # Same as above. Order does not matter.
52+
53+
Only varargs
54+
Only varargs testThing
55+
56+
Default and varargs
57+
Default and varargs Non-default

0 commit comments

Comments
 (0)