| """Tools for building QUICHE tests.""" |
| |
| load("@bazel_skylib//lib:dicts.bzl", "dicts") |
| load("@bazel_skylib//lib:paths.bzl", "paths") |
| |
| def test_suite_from_source_list(name, srcs, **kwargs): |
| """ |
| Generates a test target for every individual test source file specified. |
| |
| Args: |
| name: the name of the resulting test_suite target. |
| srcs: the list of source files from which the test targets are generated. |
| **kwargs: other arguments that are passed to the cc_test rule directly.s |
| """ |
| |
| tests = [] |
| for sourcefile in srcs: |
| if not sourcefile.endswith("_test.cc"): |
| fail("All source files passed to test_suite_from_source_list() must end with _test.cc") |
| test_name, _ = paths.split_extension(paths.basename(sourcefile)) |
| extra_kwargs = {} |
| if test_name == "end_to_end_test": |
| extra_kwargs["shard_count"] = 16 |
| native.cc_test( |
| name = test_name, |
| srcs = [sourcefile], |
| **dicts.add(kwargs, extra_kwargs) |
| ) |
| tests.append(test_name) |
| native.test_suite(name = name, tests = tests) |