BazelUtils: Correctly quote parameters when querying for tests
Change-Id: I3d100282e3323431654e34f533fba3fb5be48ffc
diff --git a/jenkins/lib/src/build/bazel/ci/BazelUtils.groovy b/jenkins/lib/src/build/bazel/ci/BazelUtils.groovy
index 3f88e50..23889ef 100644
--- a/jenkins/lib/src/build/bazel/ci/BazelUtils.groovy
+++ b/jenkins/lib/src/build/bazel/ci/BazelUtils.groovy
@@ -111,10 +111,18 @@
}
}
+ @NonCPS
+ private def makeTestQuery(tests) {
+ // Lambda are not working well with CPS, so NonCPS...
+ def quote = isWindows ? { s -> s.replace('"', '""') } : { s -> s.replace("'", "'\\''") }
+ def q = isWindows ? '"' : "'"
+ return "query ${q}tests(${tests.collect(quote).join(' + ')})${q}"
+ }
+
// Execute a bazel tests
def test(tests = ["//..."]) {
if (!tests.isEmpty()) {
- def filteredTests = bazelCommand("query \"tests(${tests.join ' + '})\"", false, true)
+ def filteredTests = bazelCommand(makeTestQuery(tests), false, true)
if (filteredTests.isEmpty()) {
script.echo "Skipped tests (no tests found)"
} else {