diff --git a/subprojects/workers/src/integTest/groovy/org/gradle/workers/internal/WorkerExecutorParametersIntegrationTest.groovy b/subprojects/workers/src/integTest/groovy/org/gradle/workers/internal/WorkerExecutorParametersIntegrationTest.groovy index 791b35151248..aba7b7d88ed4 100644 --- a/subprojects/workers/src/integTest/groovy/org/gradle/workers/internal/WorkerExecutorParametersIntegrationTest.groovy +++ b/subprojects/workers/src/integTest/groovy/org/gradle/workers/internal/WorkerExecutorParametersIntegrationTest.groovy @@ -122,7 +122,7 @@ class WorkerExecutorParametersIntegrationTest extends AbstractIntegrationSpec { buildFile << """ ext.testObject = ["foo", "bar"] as String[] - ${parameterRunnableWithType('String[]', 'println param.join(",")') } + ${parameterRunnableWithType('String[]', 'println "param = " + Arrays.asList(param)') } task runWork(type: ParameterTask) { isolationMode = ${isolationMode} @@ -134,7 +134,29 @@ class WorkerExecutorParametersIntegrationTest extends AbstractIntegrationSpec { succeeds("runWork") then: - outputContains("foo,bar") + outputContains("param = [foo, bar]") + + where: + isolationMode << ISOLATION_MODES + } + + def "can provide zero-length array parameters with isolation mode #isolationMode"() { + buildFile << """ + ext.testObject = [] as String[] + + ${parameterRunnableWithType('String[]', 'println "param = " + Arrays.asList(param)') } + + task runWork(type: ParameterTask) { + isolationMode = ${isolationMode} + params = [testObject] + } + """ + + when: + succeeds("runWork") + + then: + outputContains("param = []") where: isolationMode << ISOLATION_MODES diff --git a/subprojects/workers/src/test/groovy/org/gradle/workers/internal/IsolatableSerializerRegistryTest.groovy b/subprojects/workers/src/test/groovy/org/gradle/workers/internal/IsolatableSerializerRegistryTest.groovy index c0f4dbcbe985..d618c7bc13dd 100644 --- a/subprojects/workers/src/test/groovy/org/gradle/workers/internal/IsolatableSerializerRegistryTest.groovy +++ b/subprojects/workers/src/test/groovy/org/gradle/workers/internal/IsolatableSerializerRegistryTest.groovy @@ -283,6 +283,22 @@ class IsolatableSerializerRegistryTest extends Specification { newIsolatables[0].isolate().class == String[].class } + def "can serialize/deserialize isolated zero-length Array"() { + String[] array = [] + + when: + serialize(isolatableFactory.isolate(array)) + + and: + Isolatable[] newIsolatables = deserialize() + + then: + newIsolatables[0].isolate() == array + + and: + newIsolatables[0].isolate().class == String[].class + } + def "can serialize/deserialize isolated List"() { List list = ["foo", "bar"]