# Copyright 2019 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

load("@rules_python//python:proto.bzl", "py_proto_library")
load(
    "//pw_build:pigweed.bzl",
    "pw_cc_binary",
    "pw_cc_test",
    "pw_facade",
)
load("//pw_protobuf_compiler:pw_proto_library.bzl", "pw_proto_library")

package(default_visibility = ["//visibility:public"])

licenses(["notice"])

label_flag(
    name = "main",
    build_setting_default = ":simple_printing_main",
)

cc_library(
    name = "config",
    hdrs = ["public/pw_unit_test/config.h"],
    includes = ["public"],
    deps = [
        ":config_override",
        "//pw_polyfill",
    ],
)

label_flag(
    name = "config_override",
    build_setting_default = "//pw_build:default_module_config",
)

pw_facade(
    name = "pw_unit_test",
    testonly = True,
    hdrs = ["public/pw_unit_test/framework.h"],
    backend = ":backend",
    includes = ["public"],
)

label_flag(
    name = "backend",
    build_setting_default = ":light",
)

cc_library(
    name = "light",
    testonly = True,
    srcs = ["framework_light.cc"],
    hdrs = [
        "light_public_overrides/pw_unit_test/framework_backend.h",
        # The facade header is included here since
        # public_overrides/gtest/gtest.h includes it. This avoids a circular
        # dependency in the build system.
        "public/pw_unit_test/framework.h",
        "public_overrides/gtest/gtest.h",
    ],
    includes = [
        "light_public_overrides",
        "public",
        "public_overrides",
    ],
    deps = [
        ":config",
        ":event_handler",
        "//pw_assert",
        "//pw_polyfill",
        "//pw_preprocessor",
        "//pw_span",
        "//pw_string",
    ],
)

cc_library(
    name = "googletest",
    testonly = True,
    hdrs = [
        "googletest_public_overrides/pw_unit_test/framework_backend.h",
    ],
    includes = ["googletest_public_overrides"],
    deps = [
        ":googletest_handler_adapter",
        "@com_google_googletest//:gtest",
    ],
)

# Identifies when the light framework is being used.
config_setting(
    name = "light_setting",
    testonly = True,
    flag_values = {
        "@pigweed//pw_unit_test:backend": "@pigweed//pw_unit_test:light",
    },
    # Do not depend on this config_setting outside upstream Pigweed. Config
    # settings based on label flags are unreliable. See
    # https://github.com/bazelbuild/bazel/issues/21189.
    visibility = ["//:__subpackages__"],
)

config_setting(
    name = "gtest_setting",
    testonly = True,
    flag_values = {
        "@pigweed//pw_unit_test:backend": "@pigweed//pw_unit_test:googletest",
    },
    # Do not depend on this config_setting outside upstream Pigweed. Config
    # settings based on label flags are unreliable. See
    # https://github.com/bazelbuild/bazel/issues/21189.
    visibility = ["//:__subpackages__"],
)

cc_library(
    name = "event_handler",
    hdrs = ["public/pw_unit_test/event_handler.h"],
    includes = ["public"],
)

cc_library(
    name = "googletest_style_event_handler",
    srcs = ["googletest_style_event_handler.cc"],
    hdrs = ["public/pw_unit_test/googletest_style_event_handler.h"],
    deps = [
        ":event_handler",
        "//pw_preprocessor",
    ],
)

cc_library(
    name = "googletest_handler_adapter",
    testonly = True,
    srcs = ["googletest_handler_adapter.cc"],
    hdrs = ["public/pw_unit_test/googletest_handler_adapter.h"],
    includes = ["public"],
    deps = [
        ":event_handler",
        "//pw_preprocessor",
        "@com_google_googletest//:gtest",
    ],
)

cc_library(
    name = "googletest_test_matchers",
    testonly = True,
    hdrs = ["public/pw_unit_test/googletest_test_matchers.h"],
    includes = ["public"],
    deps = [
        "//pw_result",
        "//pw_status",
        "@com_google_googletest//:gtest",
    ],
)

pw_cc_test(
    name = "googletest_test_matchers_test",
    srcs = ["googletest_test_matchers_test.cc"],
    deps = [
        ":googletest_test_matchers",
    ],
)

cc_library(
    name = "simple_printing_event_handler",
    testonly = True,
    srcs = ["simple_printing_event_handler.cc"],
    hdrs = [
        "public/pw_unit_test/simple_printing_event_handler.h",
    ],
    includes = [
        "public",
    ],
    deps = [
        ":googletest_style_event_handler",
        "//pw_preprocessor",
    ],
)

cc_library(
    name = "simple_printing_main",
    testonly = True,
    srcs = [
        "simple_printing_main.cc",
    ],
    deps = [
        ":pw_unit_test",
        ":simple_printing_event_handler",
        "//pw_span",
        "//pw_sys_io",
    ],
)

cc_library(
    name = "printf_event_handler",
    testonly = True,
    hdrs = ["public/pw_unit_test/printf_event_handler.h"],
    deps = [
        ":googletest_style_event_handler",
        "//pw_preprocessor",
    ],
)

cc_library(
    name = "printf_main",
    testonly = True,
    srcs = ["printf_main.cc"],
    deps = [
        ":printf_event_handler",
        ":pw_unit_test",
    ],
)

# TODO: b/324116813 - Remove this alias once no downstream project depends on
# it.
alias(
    name = "logging_event_handler",
    actual = "logging",
)

cc_library(
    name = "logging",
    testonly = True,
    srcs = [
        "logging_event_handler.cc",
    ],
    hdrs = [
        "public/pw_unit_test/logging_event_handler.h",
    ],
    includes = [
        "public",
    ],
    deps = [
        ":googletest_style_event_handler",
        "//pw_log",
    ],
)

pw_cc_binary(
    name = "logging_main",
    testonly = True,
    srcs = [
        "logging_main.cc",
    ],
    deps = [
        ":logging",
        "//pw_unit_test",
    ],
)

cc_library(
    name = "multi_event_handler",
    testonly = True,
    hdrs = [
        "public/pw_unit_test/multi_event_handler.h",
    ],
    includes = [
        "public",
    ],
    deps = [
        ":event_handler",
    ],
)

pw_cc_test(
    name = "multi_event_handler_test",
    srcs = ["multi_event_handler_test.cc"],
    deps = [
        ":multi_event_handler",
        ":pw_unit_test",
    ],
)

cc_library(
    name = "test_record_event_handler",
    testonly = True,
    srcs = ["public/pw_unit_test/internal/test_record_trie.h"],
    hdrs = [
        "public/pw_unit_test/test_record_event_handler.h",
    ],
    includes = [
        "public",
    ],
    deps = [
        ":event_handler",
        "//pw_assert",
        "//pw_json:builder",
    ],
)

pw_cc_test(
    name = "test_record_event_handler_test",
    srcs = ["test_record_event_handler_test.cc"],
    deps = [
        ":pw_unit_test",
        ":test_record_event_handler",
    ],
)

proto_library(
    name = "unit_test_proto",
    srcs = ["pw_unit_test_proto/unit_test.proto"],
    strip_import_prefix = "/pw_unit_test",
)

py_proto_library(
    name = "unit_test_py_pb2",
    deps = [":unit_test_proto"],
)

pw_proto_library(
    name = "unit_test_cc",
    deps = [":unit_test_proto"],
)

cc_library(
    name = "rpc_service",
    testonly = True,
    srcs = ["unit_test_service.cc"] + select({
        ":light_setting": ["rpc_light_event_handler.cc"],
        "//conditions:default": [":rpc_gtest_event_handler.cc"],
    }),
    hdrs = [
        "public/pw_unit_test/config.h",
        "public/pw_unit_test/unit_test_service.h",
    ] + select({
        ":light_setting": [
            "rpc_light_public/pw_unit_test/internal/rpc_event_handler.h",
        ],
        "//conditions:default": [
            "rpc_gtest_public/pw_unit_test/internal/rpc_event_handler.h",
        ],
    }),
    includes = ["public"] + select({
        ":light_setting": ["rpc_light_public"],
        "//conditions:default": ["rpc_gtest_public"],
    }),
    deps = [
        ":event_handler",
        ":pw_unit_test",
        ":unit_test_cc.pwpb",
        ":unit_test_cc.raw_rpc",
        "//pw_log",
    ],
)

cc_library(
    name = "rpc_main",
    testonly = True,
    srcs = [
        "rpc_main.cc",
    ],
    deps = [
        ":pw_unit_test",
        ":rpc_service",
        "//pw_hdlc:default_addresses",
        "//pw_log",
        "//pw_rpc",
        "//pw_rpc/system_server",
    ],
)

cc_library(
    name = "static_library_support",
    testonly = True,
    srcs = ["static_library_support.cc"],
    hdrs = ["public/pw_unit_test/static_library_support.h"],
    includes = ["public"],
    # This library only works with the light backend
    target_compatible_with = select({
        ":light_setting": [],
        "//conditions:default": ["@platforms//:incompatible"],
    }),
    deps = [":pw_unit_test"],
)

cc_library(
    name = "tests_in_archive",
    testonly = True,
    srcs = [
        "static_library_archived_tests.cc",
        "static_library_missing_archived_tests.cc",
    ],
    linkstatic = True,
    visibility = ["//visibility:private"],
    deps = [":pw_unit_test"],
)

pw_cc_test(
    name = "static_library_support_test",
    srcs = ["static_library_support_test.cc"],
    deps = [
        ":pw_unit_test",
        ":static_library_support",
        ":tests_in_archive",
        "//pw_assert",
    ],
)

pw_cc_test(
    name = "framework_test",
    srcs = ["framework_test.cc"],
    deps = [
        ":pw_unit_test",
        "//pw_assert",
        "//pw_status",
    ],
)

pw_cc_test(
    name = "framework_light_test",
    srcs = ["framework_light_test.cc"],
    target_compatible_with = select({
        ":light_setting": [],
        "//conditions:default": ["@platforms//:incompatible"],
    }),
    deps = [
        ":pw_unit_test",
        "//pw_status",
        "//pw_string",
    ],
)

# TODO(hepler): Build this as a cc_binary and use it in integration tests.
filegroup(
    name = "test_rpc_server",
    srcs = ["test_rpc_server.cc"],
    # deps = [
    #     ":pw_unit_test",
    #     ":rpc_service",
    #     "//pw_log",
    #     "//pw_rpc/system_server",
    # ],
)
