Jacoco coverage support for bazel
Change-Id: Ic94304aa6fed0e18f16cecfdda388d421064d0b6
diff --git a/tools/build/bazel/deps_files.bzl b/tools/build/bazel/deps_files.bzl
new file mode 100644
index 0000000..24c65ca
--- /dev/null
+++ b/tools/build/bazel/deps_files.bzl
@@ -0,0 +1,25 @@
+def _impl(ctx):
+ output = ctx.outputs.deps_files
+
+ dep_list = []
+ for dep in ctx.files.deps:
+ dep_list += [dep.path]
+
+ cmd = [
+ "echo %s >> %s" % (",".join(dep_list), output.path),
+ ]
+
+ ctx.action(
+ inputs = ctx.files.deps,
+ outputs = [output],
+ progress_message = "Generating deps file paths for %s" % ctx.attr.name,
+ command = ";\n".join(cmd),
+ )
+
+deps_files = rule(
+ attrs = {
+ "deps": attr.label_list(allow_files = True),
+ },
+ implementation = _impl,
+ outputs = {"deps_files": "%{name}-deps-files.txt"},
+)
diff --git a/tools/build/bazel/generate_test_rules.bzl b/tools/build/bazel/generate_test_rules.bzl
index 17f811e..4e3d5f8 100644
--- a/tools/build/bazel/generate_test_rules.bzl
+++ b/tools/build/bazel/generate_test_rules.bzl
@@ -20,6 +20,8 @@
files.
"""
+load("//tools/build/bazel:deps_files.bzl", "deps_files")
+
def testIsExcluded(exclude_tests, test):
for excluded_test in exclude_tests:
normalized_excluded_test = excluded_test.replace(".", "/")
@@ -64,20 +66,41 @@
native.package_name() + "/" + _strip_right(test, ".java"),
)
package = java_class[:java_class.rfind(".")]
+
native.java_test(
+ data = ["@jacoco_agent_runtime//jar"],
name = prefix + test,
runtime_deps = deps,
resources = resources,
size = test_size,
- jvm_flags = jvm_flags,
+ #jvm_flags = jvm_flags,
args = args,
flaky = flaky,
tags = tags,
test_class = java_class,
visibility = visibility,
shard_count = shard_count,
+ jvm_flags = jvm_flags,
)
+ jacoco_agent = "$(location @jacoco_agent_runtime//jar)"
+ native.java_test(
+ data = ["@jacoco_agent_runtime//jar"],
+ name = prefix + test + "-coverage",
+ runtime_deps = deps,
+ resources = resources,
+ size = "large",
+ #jvm_flags = jvm_flags,
+ args = args,
+ flaky = flaky,
+ tags = tags,
+ test_class = java_class,
+ visibility = visibility,
+ shard_count = shard_count,
+ jvm_flags = jvm_flags + ["-javaagent:" + jacoco_agent + "=destfile=/tmp/jacoco.exec"],
+ )
+ deps_files(name = name + "-deps", deps = deps)
+
def _get_test_names(test_files):
test_names = []
for test_file in test_files:
diff --git a/tools/build/bazel/generate_workspace.bzl b/tools/build/bazel/generate_workspace.bzl
index 8a3eefc..f449018 100644
--- a/tools/build/bazel/generate_workspace.bzl
+++ b/tools/build/bazel/generate_workspace.bzl
@@ -1,4 +1,4 @@
-# ***** This file was auto-generated at Thu, 17 Jan 2019 02:17:59 GMT. Do not edit this file manually. *****
+# ***** This file was auto-generated at Sat, 19 Jan 2019 00:49:49 GMT. Do not edit this file manually. *****
# ***** Use onos-lib-gen *****
load("//tools/build/bazel:variables.bzl", "ONOS_GROUP_ID", "ONOS_VERSION")
@@ -459,6 +459,12 @@
jar_sha256 = "4633c331f50642ebe795dc089d6a5928aff43071c9d17e7840a009eea2fe95a3",
licenses = ["notice"],
jar_urls = ["http://repo1.maven.org/maven2/com/squareup/okio/okio/1.14.0/okio-1.14.0.jar"], )
+ if "jacoco_agent_runtime" not in native.existing_rules():
+ java_import_external(
+ name = "jacoco_agent_runtime",
+ jar_sha256 = "940056732802d1cbaf243840e0f8f2c786f5deb6c1dcac786637366a051257d8",
+ licenses = ["notice"],
+ jar_urls = ["http://repo1.maven.org/maven2/org/jacoco/org.jacoco.agent/0.8.2/org.jacoco.agent-0.8.2-runtime.jar"], )
if "jackson_annotations" not in native.existing_rules():
java_import_external(
name = "jackson_annotations",
@@ -1467,6 +1473,7 @@
artifact_map["@logging_interceptor//:logging_interceptor"] = "mvn:com.squareup.okhttp3:logging-interceptor:jar:NON-OSGI:3.9.1"
artifact_map["@moshi//:moshi"] = "mvn:com.squareup.moshi:moshi:jar:NON-OSGI:1.4.0"
artifact_map["@okio//:okio"] = "mvn:com.squareup.okio:okio:jar:NON-OSGI:1.14.0"
+artifact_map["@jacoco_agent_runtime//:jacoco_agent_runtime"] = "mvn:org.jacoco:org.jacoco.agent:jar:runtime:NON-OSGI:0.8.2"
artifact_map["@jackson_annotations//:jackson_annotations"] = "mvn:com.fasterxml.jackson.core:jackson-annotations:jar:2.9.5"
artifact_map["@jackson_core//:jackson_core"] = "mvn:com.fasterxml.jackson.core:jackson-core:jar:2.9.5"
artifact_map["@jackson_databind//:jackson_databind"] = "mvn:com.fasterxml.jackson.core:jackson-databind:jar:2.9.5"