diff options
author | 2018-07-12 16:46:31 -0700 | |
---|---|---|
committer | 2018-07-12 16:47:43 -0700 | |
commit | 365424cd732367c94f9aaaeccbb902e87973990b (patch) | |
tree | 365697ac3076f8e068c1ce8ef2229995c7682787 /src/test/java/com/google | |
parent | d8a2d52495d457e9cff81b77bbac5c9ccdd7c548 (diff) |
make tests for singlejar's --check_desugar_deps flag run in Bazel's CI
RELNOTES: None.
PiperOrigin-RevId: 204388732
Diffstat (limited to 'src/test/java/com/google')
-rw-r--r-- | src/test/java/com/google/devtools/build/android/desugar/BUILD | 157 | ||||
-rwxr-xr-x | src/test/java/com/google/devtools/build/android/desugar/desugar_deps_consistency_test.sh | 10 |
2 files changed, 165 insertions, 2 deletions
diff --git a/src/test/java/com/google/devtools/build/android/desugar/BUILD b/src/test/java/com/google/devtools/build/android/desugar/BUILD index fb86fe924b..8d6b50ddd4 100644 --- a/src/test/java/com/google/devtools/build/android/desugar/BUILD +++ b/src/test/java/com/google/devtools/build/android/desugar/BUILD @@ -1870,6 +1870,163 @@ grep lambda $(location subclass_disassembled.txt) > $(location subclass_lambda_s ], ) +sh_test( + name = "desugar_deps_consistent_test", + srcs = ["desugar_deps_consistency_test.sh"], + args = [ + "$(location //src/tools/singlejar:singlejar_local)", + "$(location @bazel_tools//tools/jdk:jar)", + "$(location :testdata_desugared_default_methods.jar)", + "$(location :separate_java8_desugared_default_methods.jar)", + "$(location :guava_at_head_desugared.jar)", + ], + data = [ + ":guava_at_head_desugared.jar", + ":separate_java8_desugared_default_methods.jar", + ":testdata_desugared_default_methods.jar", + "//src/tools/singlejar:singlejar_local", + "@bazel_tools//tools/jdk:jar", + ], + tags = ["no_windows"], +) + +# Tests that deps checking fails due to missing default method: libseparate_java8.jar defines +# default methods which testdata_desugared_default_methods.jar assumes have been moved to companion. +sh_test( + name = "desugar_deps_missing_fail_test", + srcs = ["desugar_deps_consistency_test.sh"], + args = [ + "$(location //src/tools/singlejar:singlejar_local)", + "$(location @bazel_tools//tools/jdk:jar)", + "$(location :testdata_desugared_default_methods.jar)", + "$(location :libseparate_java8.jar)", + "$(location :guava_at_head_desugared.jar)", + ], + data = [ + ":guava_at_head_desugared.jar", + ":libseparate_java8.jar", + ":testdata_desugared_default_methods.jar", + "//src/tools/singlejar:singlejar_local", + "@bazel_tools//tools/jdk:jar", + ], + tags = ["no_windows"], +) + +# Regression test for b/68049457 with deps checking failing due to missing static method: +# b68049457_caller_desugared.jar assumes presence of companion class that's missing (in fact, +# the whole Jar is missing, similar to neverlink situations). +sh_test( + name = "desugar_deps_b68049457_fail_test", + srcs = ["desugar_deps_consistency_test.sh"], + args = [ + "$(location //src/tools/singlejar:singlejar_local)", + "$(location @bazel_tools//tools/jdk:jar)", + "$(location :b68049457_caller_desugared.jar)", + ], + data = [ + ":b68049457_caller_desugared.jar", + "//src/tools/singlejar:singlejar_local", + "@bazel_tools//tools/jdk:jar", + ], + tags = ["no_windows"], +) + +sh_test( + name = "desugar_deps_missed_default_method_fail_test", + srcs = ["desugar_deps_consistency_test.sh"], + args = [ + "$(location //src/tools/singlejar:singlejar_local)", + "$(location @bazel_tools//tools/jdk:jar)", + "$(location :testdata_desugared_with_missing_dep.jar)", + "$(location :separate_java8_desugared_default_methods.jar)", + "$(location :guava_at_head_desugared.jar)", + ], + data = [ + ":guava_at_head_desugared.jar", + ":separate_java8_desugared_default_methods.jar", + ":testdata_desugared_with_missing_dep.jar", + "//src/tools/singlejar:singlejar_local", + "@bazel_tools//tools/jdk:jar", + ], + tags = ["no_windows"], +) + +# Tests that any Jar entry starting with j$/ causes singlejar to fail when run +# with --check_desugar_deps. This is a backstop against such entries being +# included in deploy.jars. +sh_test( + name = "bad_entry_jar_fail_test", + srcs = ["desugar_deps_consistency_test.sh"], + args = [ + "$(location //src/tools/singlejar:singlejar_local)", + "$(location @bazel_tools//tools/jdk:jar)", + "$(location :mock_bad_entry_jar)", + ], + data = [ + ":mock_bad_entry_jar", + "//src/tools/singlejar:singlejar_local", + "@bazel_tools//tools/jdk:jar", + ], + tags = ["no_windows"], +) + +genrule( + name = "desugar_testdata_with_missing_dep", + srcs = [ + ":separate", + ":testdata_java8", + "//third_party:guava-jars", + "//third_party/java/jacoco:blaze-agent", + "@bazel_tools//tools/android:android_jar", + ], + outs = ["testdata_desugared_with_missing_dep.jar"], + cmd = "$(location //src/tools/android/java/com/google/devtools/build/android/desugar:Desugar) " + + "-i $(location :testdata_java8) -o $@ " + + "--emit_dependency_metadata_as_needed " + + "--classpath_entry $(location :separate) " + + "--classpath_entry $(location //third_party:guava-jars) " + + "--classpath_entry $(location //third_party/java/jacoco:blaze-agent) " + + "--bootclasspath_entry $(location @bazel_tools//tools/android:android_jar)", + tools = ["//src/tools/android/java/com/google/devtools/build/android/desugar:Desugar"], +) + +genrule( + name = "desugar_b68049457_caller", + srcs = [ + ":b68049457_caller", + ":b68049457_interface", + "//third_party/java/jacoco:blaze-agent", + "@bazel_tools//tools/android:android_jar", + ], + outs = ["b68049457_caller_desugared.jar"], + cmd = "$(location //src/tools/android/java/com/google/devtools/build/android/desugar:Desugar) " + + "-i $(location :b68049457_caller) -o $@ " + + "--emit_dependency_metadata_as_needed " + + "--classpath_entry $(location :b68049457_interface) " + + "--bootclasspath_entry $(location @bazel_tools//tools/android:android_jar)", + tools = ["//src/tools/android/java/com/google/devtools/build/android/desugar:Desugar"], +) + +java_library( + name = "b68049457_interface", + srcs = ["testdata/b68049457/StaticInterfaceMethod.java"], + neverlink = 1, +) + +java_library( + name = "b68049457_caller", + srcs = ["testdata/b68049457/StaticInterfaceMethodCaller.java"], + deps = [":b68049457_interface"], +) + +# Creates simple .jar file with empty file entry called "j$/hello" +genrule( + name = "mock_bad_entry_jar", + outs = ["mock_bad_entry.jar"], + cmd = """$(location //tools/zip:zipper) c $@ "j\$$/hello=" """, + tools = ["//tools/zip:zipper"], +) + # b/62623509 regression test. Calls to jacoco-generated method in interface # need to be rewritten to call the companion class even though the original # bytecode falsely doesn't indicate that the method is declared in an diff --git a/src/test/java/com/google/devtools/build/android/desugar/desugar_deps_consistency_test.sh b/src/test/java/com/google/devtools/build/android/desugar/desugar_deps_consistency_test.sh index e8e7e23c6a..7a0bea55b5 100755 --- a/src/test/java/com/google/devtools/build/android/desugar/desugar_deps_consistency_test.sh +++ b/src/test/java/com/google/devtools/build/android/desugar/desugar_deps_consistency_test.sh @@ -14,9 +14,15 @@ # See the License for the specific language governing permissions and # limitations under the License. set -eu +set -o pipefail + +SINGLEJAR="$1" +shift +JAR="$1" +shift out="$(mktemp)" -if ! "devtools/blaze/singlejar/singlejar" --output "${out}" --check_desugar_deps --sources "$@"; then +if ! "${SINGLEJAR}" --output "${out}" --check_desugar_deps --sources "$@"; then rm "${out}" case "$0" in *_fail_test) echo "Singlejar failed as expected!"; exit 0;; @@ -29,7 +35,7 @@ case "$0" in *_fail_test) rm "${out}"; echo "Singlejar unexpectedly succeeded :("; exit 1;; esac -if third_party/java/jdk/jar/jar tf "${out}" | grep 'desugar_deps'; then +if "${JAR}" tf "${out}" | grep 'desugar_deps'; then rm "${out}" echo "Singlejar output unexpectedly contains desugaring metadata" exit 2 |