blob: d4d7508c94ebbfe5751b4bf2f886a6e0d40005ec [file] [log] [blame]
package(
default_visibility = ["//visibility:legacy_public"],
)
licenses(["notice"])
filegroup(
name = "bazel-srcs",
testonly = 0,
srcs = glob(
["**"],
exclude = ["BUILD"],
),
visibility = ["//third_party/bazel:__subpackages__"],
)
filegroup(
name = "srcs",
srcs = glob(["**"]),
)
filegroup(
name = "embedded_tools",
srcs = [
"JacocoCoverage_jarjar_deploy.jar",
],
)
filegroup(
name = "jacoco_coverage_runtime",
srcs = ["JacocoCoverage_deploy.jar"],
)
# Bazel custom Jacoco runner used to provide proper initialization and lcov
# report generation when using offline Jacoco instrumentation.
# This target should not be used as a dependency (except when writing tests for
# it).
#
# An implicit dependency of all "java_binary" rules.
java_binary(
name = "JacocoCoverage",
srcs = [
"BranchCoverageDetail.java",
"BranchDetailAnalyzer.java",
"BranchExp.java",
"ClassProbesMapper.java",
"CovExp.java",
"JacocoCoverageRunner.java",
"JacocoLCOVFormatter.java",
"MethodProbesMapper.java",
"ProbeExp.java",
],
deps = [
":bitfield",
"//third_party/java/jacoco:blaze-agent",
"//third_party/java/jacoco:core",
"//third_party/java/jacoco:report",
],
)
java_library(
name = "bitfield",
srcs = [
"BitField.java",
"IllegalStringException.java",
],
deps = [
"//third_party:apache_commons_lang",
],
)
genrule(
name = "Jacoco_jarjar",
srcs = [
":JacocoCoverage_deploy.jar",
":JacocoCoverage.jarjar",
],
outs = ["JacocoCoverage_jarjar_deploy.jar"],
cmd = "\n".join([
# Bazel 0.4.3 contains two bugs: a quoting bug in the Java cmd.exe
# wrapper script that makes it unable to handle $ signs in paths (#2306)
# and one that makes it occasionally put $ signs in the output base
# (#2342).
#
# These two collude to make it impossible to run built Java binaries on
# Windows if the output base happens to contain a $ sign.
#
# Thus, don't call jarjar when on Windows. This makes Java coverage not
# work if the code under test uses libraries the test runner also does
# (e.g. ASM).
#
# TODO(lberki): Remove this once a Bazel version with a fix to either of
# these bugs is out.
#
# Additionally, there is a hard-coded path to /bin/bash which is wrong on
# freebsd; so disable there as well until a fixed version is in there as
# well.
# TODO(aehlig): fix and remove once a version with the fix is out.
#
# We don't invoke jarjar_bin directly because this command is invoked
# during bootstrapping when we don't have build-runfiles, thus no
# runfiles trees. The Java launcher script looks in the runfiles tree
# for the jars (and rightfully so), thus, invoking the binary directly
# won't work.
"if [[ $$(uname -a) =~ MSYS ]] || [[ $$(uname -a) =~ CYGWIN ]] || [[ $$(uname -a) =~ freebsd ]]; then",
" cp \"$(location :JacocoCoverage_deploy.jar)\" \"$@\";",
"else",
" \"$(JAVA)\" -jar \"$(location //third_party/java/jarjar:jarjar_bin_deploy.jar)\" process \"$(location :JacocoCoverage.jarjar)\" \"$(location :JacocoCoverage_deploy.jar)\" \"$@\"",
"fi",
]),
tools = [
"//third_party/java/jarjar:jarjar_bin_deploy.jar",
"//tools/defaults:jdk",
],
)