|  | """Tools for building QUICHE tests.""" | 
|  |  | 
|  | load("@bazel_skylib//lib:dicts.bzl", "dicts") | 
|  | load("@bazel_skylib//lib:paths.bzl", "paths") | 
|  | load("@rules_cc//cc:cc_test.bzl", "cc_test") | 
|  |  | 
|  | 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 | 
|  | cc_test( | 
|  | name = test_name, | 
|  | srcs = [sourcefile], | 
|  | **dicts.add(kwargs, extra_kwargs) | 
|  | ) | 
|  | tests.append(test_name) | 
|  | native.test_suite(name = name, tests = tests) |