load("//tools:defaults.bzl", "jasmine_node_test", "karma_web_test_suite", "ts_library")
load("//tools/circular_dependency_test:index.bzl", "circular_dependency_test")

# Test that should only be run in node
NODE_ONLY = [
    "**/*_node_only_spec.ts",
    "aot/**/*.ts",
]

UTILS = [
    "aot/test_util.ts",
]

circular_dependency_test(
    name = "circular_deps_test",
    entry_point = "angular/packages/compiler/index.js",
    deps = ["//packages/compiler"],
)

ts_library(
    name = "test_utils",
    testonly = True,
    srcs = UTILS,
    visibility = [
        "//packages/compiler-cli/test:__subpackages__",
        "//packages/compiler/test:__subpackages__",
    ],
    deps = [
        "//packages:types",
        "//packages/compiler",
        "//packages/compiler-cli",
        "//packages/compiler-cli/test/helpers",
        "@npm//typescript",
    ],
)

ts_library(
    name = "test_lib",
    testonly = True,
    srcs = glob(
        ["**/*.ts"],
        exclude = NODE_ONLY + UTILS,
    ),
    deps = [
        "//packages:types",
        "//packages/common",
        "//packages/compiler",
        "//packages/compiler/test/expression_parser/utils",
        "//packages/compiler/test/ml_parser/util",
        "//packages/compiler/testing",
        "//packages/core",
        "//packages/core/src/compiler",
        "//packages/core/testing",
        "//packages/platform-browser",
        "//packages/platform-browser-dynamic",
        "//packages/platform-browser/testing",
    ],
)

ts_library(
    name = "test_node_only_lib",
    testonly = True,
    srcs = glob(
        NODE_ONLY,
        exclude = UTILS,
    ),
    deps = [
        ":test_lib",
        ":test_utils",
        "//packages/compiler",
        "//packages/compiler-cli",
        "//packages/compiler/test/expression_parser/utils",
        "//packages/compiler/testing",
        "//packages/core",
        "@npm//typescript",
    ],
)

jasmine_node_test(
    name = "test",
    bootstrap = ["//tools/testing:node_es5"],
    data = [
        "//packages/animations:npm_package",
        "//packages/common:npm_package",
        "//packages/core:npm_package",
    ],
    tags = [
        # Disabled as these tests pertain to the old ngc compilation and are not relevant in Ivy.
        "no-ivy-aot",
    ],
    deps = [
        ":test_lib",
        ":test_node_only_lib",
        "@npm//base64-js",
        "@npm//source-map",
    ],
)

karma_web_test_suite(
    name = "test_web",
    tags = [
        # Disabled as these tests pertain to the old ngc compilation and are not relevant in Ivy.
        "no-ivy-aot",
    ],
    deps = [
        ":test_lib",
    ],
)