"""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)
