Last active
June 12, 2019 14:23
-
-
Save kevingessner/8e4c9856a5f630eb12ea4b888fb85a6c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
JAVACOPTS = [ ... ] | |
def java_library(javacopts = [], **kwargs): | |
"""Loaded by prelude_bazel to shadow the existing `java_library` and add additional javacopts when building local java code.""" | |
updated_opts = [] | |
updated_opts += javacopts | |
if native.repository_name() == "@": | |
# When building any java target in our repository (i.e. not ones that are loaded into the WORKSPACE with | |
# http_archive and friends), apply our javac options. We don't apply them to external code because that code | |
# may not adhere to our rules. | |
updated_opts += JAVACOPTS | |
# Generate a test target for every source package, containing a no-op test that imports the package. If a | |
# package is not imported by any test, the package and its sources will be completely excluded from the coverage | |
# report. That's bad, as it artificially increases our coverage numbers by skipping many packages. Thus these | |
# PackageCoverageTests are generated and executed when running coverage, to ensure that every package is | |
# referenced and evey source is included. The test needs to assert *something* but doesn't need to actually | |
# test the code, so it runs a cheap assert. | |
if kwargs.get("srcs") and native.existing_rule("PackageCoverageTest") == None: | |
native.genrule( | |
name = "PackageCoverageTestSource", | |
srcs = [kwargs["srcs"][0]], | |
outs = ["PackageCoverageTest.java"], | |
# Grab the package name from one of the package's sources. | |
cmd = '''grep '^package ' $< | head -n1 > $@; echo "public class PackageCoverageTest { | |
@org.junit.Test | |
public void testFoo() { | |
org.junit.Assert.assertNotNull(1); | |
} | |
}" >> $@''', | |
) | |
native.java_test( | |
name = "PackageCoverageTest", | |
srcs = [":PackageCoverageTest.java"], | |
deps = [ | |
kwargs["name"], | |
"//third_party/jvm/junit", | |
] + kwargs.get("deps", []), | |
tags = ["coverage-only"], | |
) | |
native.java_library(javacopts = updated_opts, **kwargs) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment