Add dependencies locally
This commit is contained in:
72
deps/protobuf/java/internal/testing.bzl
vendored
Normal file
72
deps/protobuf/java/internal/testing.bzl
vendored
Normal file
@ -0,0 +1,72 @@
|
||||
"""
|
||||
Generates a side-car JUnit suite test runner class for each
|
||||
input src.
|
||||
"""
|
||||
_template = """import org.junit.runners.Suite;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@RunWith(Suite.class)
|
||||
@Suite.SuiteClasses({%s})
|
||||
public class %s {}
|
||||
"""
|
||||
|
||||
def _as_classname(fname, pkg):
|
||||
path_name = [x.path for x in fname.files.to_list()][0]
|
||||
file_name = path_name.split("/")[-1]
|
||||
return ".".join([pkg, file_name.split(".")[0]]) + ".class"
|
||||
|
||||
def _gen_suite_impl(ctx):
|
||||
classes = ",".join(
|
||||
[_as_classname(x, ctx.attr.package_name) for x in ctx.attr.srcs],
|
||||
)
|
||||
ctx.actions.write(output = ctx.outputs.out, content = _template % (
|
||||
classes,
|
||||
ctx.attr.outname,
|
||||
))
|
||||
|
||||
_gen_suite = rule(
|
||||
attrs = {
|
||||
"srcs": attr.label_list(allow_files = True),
|
||||
"package_name": attr.string(),
|
||||
"outname": attr.string(),
|
||||
},
|
||||
outputs = {"out": "%{name}.java"},
|
||||
implementation = _gen_suite_impl,
|
||||
)
|
||||
|
||||
def junit_tests(name, srcs, data = [], deps = [], package_name = "com.google.protobuf", test_prefix = None, **kwargs):
|
||||
testlib_name = "%s_lib" % name
|
||||
native.java_library(
|
||||
name = testlib_name,
|
||||
srcs = srcs,
|
||||
deps = deps,
|
||||
resources = data,
|
||||
data = data,
|
||||
)
|
||||
test_names = []
|
||||
prefix = name.replace("-", "_") + "TestSuite"
|
||||
for src in srcs:
|
||||
test_name = src.rsplit("/", 1)[1].split(".")[0]
|
||||
if not test_name.endswith("Test") or test_name.startswith("Abstract"):
|
||||
continue
|
||||
if test_prefix:
|
||||
test_name = "%s%s" % (test_prefix, test_name)
|
||||
test_names = test_names + [test_name]
|
||||
suite_name = prefix + '_' + test_name
|
||||
_gen_suite(
|
||||
name = suite_name,
|
||||
srcs = [src],
|
||||
package_name = package_name,
|
||||
outname = suite_name,
|
||||
)
|
||||
native.java_test(
|
||||
name = test_name,
|
||||
test_class = suite_name,
|
||||
srcs = [src] + [":" + suite_name],
|
||||
deps = deps + [":%s" % testlib_name],
|
||||
**kwargs
|
||||
)
|
||||
native.test_suite(
|
||||
name = name,
|
||||
tests = test_names,
|
||||
)
|
Reference in New Issue
Block a user