"""Test definitions for rustfmt test rules"""

load(
    "@rules_rust//rust:defs.bzl",
    "rust_binary",
    "rust_library",
    "rust_shared_library",
    "rust_static_library",
    "rustfmt_test",
)

_VARIANTS = {
    "rust_binary": rust_binary,
    "rust_library": rust_library,
    "rust_shared_library": rust_shared_library,
    "rust_static_library": rust_static_library,
}

def rustfmt_integration_test_suite(name, **kwargs):
    """Generate a test suite for rustfmt integration tests.

    Targets generated are expected to be executed using a target
    named: `{name}.test_runner`

    Args:
        name (str): The name of the test suite
        **kwargs (dict): Additional keyword arguments for the underlying test_suite.
    """

    tests = []
    for variant, rust_rule in _VARIANTS.items():
        #
        # Test edition 2018
        #
        rust_rule(
            name = "{}_formatted_2018".format(variant),
            srcs = ["srcs/2018/formatted.rs"],
            edition = "2018",
        )

        rustfmt_test(
            name = "{}_formatted_2018_test".format(variant),
            targets = [":{}_formatted_2018".format(variant)],
        )

        rust_rule(
            name = "{}_unformatted_2018".format(variant),
            srcs = ["srcs/2018/unformatted.rs"],
            edition = "2018",
            tags = ["norustfmt"],
        )

        rustfmt_test(
            name = "{}_unformatted_2018_test".format(variant),
            tags = ["manual"],
            targets = [":{}_unformatted_2018".format(variant)],
        )

        #
        # Test edition 2015
        #
        rust_rule(
            name = "{}_formatted_2015".format(variant),
            srcs = ["srcs/2015/formatted.rs"],
            edition = "2015",
        )

        rustfmt_test(
            name = "{}_formatted_2015_test".format(variant),
            targets = [":{}_formatted_2015".format(variant)],
        )

        rust_rule(
            name = "{}_unformatted_2015".format(variant),
            srcs = ["srcs/2015/unformatted.rs"],
            edition = "2015",
            tags = ["norustfmt"],
        )

        rustfmt_test(
            name = "{}_unformatted_2015_test".format(variant),
            tags = ["manual"],
            targets = [":{}_unformatted_2015".format(variant)],
        )

        #
        # Test targets with generated sources
        #
        rust_rule(
            name = "{}_generated".format(variant),
            srcs = [
                "srcs/generated/lib.rs",
                "srcs/generated/generated.rs",
            ],
            crate_root = "srcs/generated/lib.rs",
            edition = "2021",
        )

        rustfmt_test(
            name = "{}_generated_test".format(variant),
            targets = [":{}_generated".format(variant)],
        )

        tests.extend([
            "{}_formatted_2015_test".format(variant),
            "{}_formatted_2018_test".format(variant),
            "{}_unformatted_2015_test".format(variant),
            "{}_unformatted_2018_test".format(variant),
            "{}_generated_test".format(variant),
        ])

    native.test_suite(
        name = name,
        tests = tests,
        **kwargs
    )

    native.sh_binary(
        name = "{}.test_runner".format(name),
        srcs = ["rustfmt_failure_test.sh"],
        testonly = True,
    )
