From a7c4f869f38d587178b44efee1e44bb35f2e0e0a Mon Sep 17 00:00:00 2001 From: Sergei Vorobyov Date: Wed, 30 Jan 2019 16:14:51 +0300 Subject: [PATCH] added wrapping tasks with spaces and cleanup configurator --- .../TestGradleConfigurationProducerUtil.kt | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/plugins/gradle/java/src/execution/test/runner/TestGradleConfigurationProducerUtil.kt b/plugins/gradle/java/src/execution/test/runner/TestGradleConfigurationProducerUtil.kt index a1effcacbe5f..0b5676cc7d79 100644 --- a/plugins/gradle/java/src/execution/test/runner/TestGradleConfigurationProducerUtil.kt +++ b/plugins/gradle/java/src/execution/test/runner/TestGradleConfigurationProducerUtil.kt @@ -76,33 +76,37 @@ fun ExternalSystemTaskExecutionSettings.applyTestConfiguration( if (testRunConfigurations.size > 1) { unorderedParameters.add("--continue") } + setFrom(taskSettings, unorderedParameters) + return true +} +private fun ExternalSystemTaskExecutionSettings.setFrom(taskSettings: List>>, unorderedParameters: List) { val hasTasksAfterTaskWithArguments = taskSettings.dropWhile { it.second.isEmpty() }.size > 1 if (hasTasksAfterTaskWithArguments) { val joiner = StringJoiner(" ") for ((task, arguments) in taskSettings) { - joiner.add(task) - for (argument in arguments) { - joiner.add(argument) + when { + task.contains(' ') -> joiner.add("'$task'") + else -> joiner.add(task) } + joiner.addAll(arguments) } - for (argument in unorderedParameters) { - joiner.add(argument) - } + joiner.addAll(unorderedParameters) taskNames = emptyList() scriptParameters = joiner.toString() } else { - val arguments = taskSettings.lastOrNull()?.second ?: emptyList() val joiner = StringJoiner(" ") - for (argument in arguments) { - joiner.add(argument) - } - for (argument in unorderedParameters) { - joiner.add(argument) - } + joiner.addAll(taskSettings.lastOrNull()?.second ?: emptyList()) + joiner.addAll(unorderedParameters) taskNames = taskSettings.map { it.first } scriptParameters = joiner.toString() } - return true } + +private fun StringJoiner.addAll(elements: Iterable) = apply { + for (element in elements) { + add(element) + } +} +