From 8f3c3712485bf5a21c6e007f7b7accb3d748e189 Mon Sep 17 00:00:00 2001 From: Benjamin Lee Date: Mon, 1 Feb 2021 21:32:55 -0800 Subject: [PATCH 1/2] Fix Class-Path url encoding in java_stub_template --- .../devtools/build/lib/bazel/rules/java/java_stub_template.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt index 3eb28e06726caa..507e544fb0c041 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt @@ -313,7 +313,7 @@ function create_and_run_classpath_jar() { path="file:${path}" # e.g. "file:/usr/local/foo.jar" fi - path=$(sed "s/ /%20/g" <<< "${path}") + path=$(sed "s/ /%20/g; s/%/%25/g" <<< "${path}") MANIFEST_CLASSPATH+=("${path}") done IFS="$OLDIFS" From 045788fe3b8f8adfd3b38d39fdada2d7f142ddc6 Mon Sep 17 00:00:00 2001 From: Benjamin Lee Date: Tue, 2 Feb 2021 08:19:52 -0800 Subject: [PATCH 2/2] Add some tests --- src/test/shell/bazel/java_launcher_test.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/test/shell/bazel/java_launcher_test.sh b/src/test/shell/bazel/java_launcher_test.sh index 81ef4b7dc145f0..bc0c6b00d515e0 100755 --- a/src/test/shell/bazel/java_launcher_test.sh +++ b/src/test/shell/bazel/java_launcher_test.sh @@ -57,6 +57,16 @@ java_binary( deps = [":hellolib"], main_class = "hello.Hello", ) +java_library( + name = "hellolib%special%lib", + srcs = ["HelloLib.java"], +) +java_binary( + name = "hello_special", + srcs = ["Hello.java"], + deps = [":hellolib%special%lib"], + main_class = "hello.Hello", +) EOF bazel build //$pkg/java/hello:hello || fail "expected success" ${PRODUCT_NAME}-bin/$pkg/java/hello/hello >& "$TEST_log" || \ @@ -66,6 +76,15 @@ EOF ${PRODUCT_NAME}-bin/$pkg/java/hello/hello --classpath_limit=0 >& "$TEST_log" || \ fail "expected success" expect_log "Hello World!" + + bazel build //$pkg/java/hello:hello_special || fail "expected success" + ${PRODUCT_NAME}-bin/$pkg/java/hello/hello_special >& "$TEST_log" || \ + fail "expected success" + expect_log "Hello World!" + + ${PRODUCT_NAME}-bin/$pkg/java/hello/hello_special --classpath_limit=0 >& "$TEST_log" || \ + fail "expected success" + expect_log "Hello World!" } run_suite "Java launcher tests"