Skip to content

Commit

Permalink
Drop varargs collector before invoking a user method.
Browse files Browse the repository at this point in the history
  • Loading branch information
raphw committed Aug 22, 2022
1 parent e123c2c commit 160e3da
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
Expand Up @@ -235,6 +235,9 @@ public Object invoke(Method method, Object target, Object... arguments)
if (!Modifier.isStatic(method.getModifiers())) {
handle = handle.bindTo(target);
}
if (handle.isVarargsCollector()) {
handle = handle.asFixedArity();
}
try {
return DISPATCHER.invokeWithArguments(handle, arguments);
} catch (Throwable t) {
Expand Down
Expand Up @@ -212,6 +212,15 @@ public void testStaticMockMustUseValidMatchers() {
}
}

@Test
public void testStaticMockVarargs() {
assertEquals("foobar", Dummy.fooVarargs("foo", "bar"));
try (MockedStatic<Dummy> ignored = Mockito.mockStatic(Dummy.class)) {
assertNull(Dummy.fooVarargs("foo", "bar"));
}
assertEquals("foobar", Dummy.fooVarargs("foo", "bar"));
}

static class Dummy {

static String var1 = null;
Expand All @@ -227,5 +236,13 @@ static void fooVoid(String var2) {
static void fooVoid(String var2, String var3) {
var1 = var2;
}

static String fooVarargs(String... args) {
StringBuilder sb = new StringBuilder();
for (String arg : args) {
sb.append(arg);
}
return sb.toString();
}
}
}

0 comments on commit 160e3da

Please sign in to comment.