diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy index 25da3588aa6..dac78e3daf4 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy @@ -391,6 +391,17 @@ class ClusterFormationTasks { return configureExecTask(name, project, setup, node, args) } + /** Surround strings that contains a comma with double quotes **/ + private static String escapeComma(Object o) { + if (o instanceof String) { + String s = (String)o + if (s.indexOf(',') != -1) { + return "\"${s}\"" + } + } + return o + } + /** Adds a task to execute a command to help setup the cluster */ static Task configureExecTask(String name, Project project, Task setup, NodeInfo node, Object[] execArgs) { return project.tasks.create(name: name, type: LoggedExec, dependsOn: setup) { @@ -398,10 +409,13 @@ class ClusterFormationTasks { if (Os.isFamily(Os.FAMILY_WINDOWS)) { executable 'cmd' args '/C', 'call' + // On Windows the comma character is considered a parameter separator: + // argument that contains a comma must be quoted + args execArgs.collect { a -> escapeComma(a) } } else { executable 'sh' + args execArgs } - args execArgs } }