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 {