load("//tools/base/bazel:bazel.bzl", "iml_module")
load("//tools/base/bazel:kotlin.bzl", "kotlin_library", "kotlin_test")

# managed by go/iml_to_build
iml_module(
    name = "intellij.android.render-resources",
    srcs = ["src"],
    iml_files = ["intellij.android.render-resources.iml"],
    lint_baseline = "lint_baseline.xml",
    resources = ["resources"],
    visibility = ["//visibility:public"],
    # do not sort: must match IML order
    deps = [
        "@intellij//:intellij-sdk",
        "@intellij//:com.intellij.java",
        "//tools/base/sdklib:studio.android.sdktools.sdklib",
        "//tools/adt/idea/layoutlib-loader:intellij.android.layoutlib-loader",
        "//tools/base/resource-repository:studio.android.sdktools.resource-repository",
        "//tools/base/zipflinger:studio.android.sdktools.zipflinger",
        "//tools/base/apkparser/analyzer:studio.android.sdktools.analyzer",
        "//tools/base/apkparser:studio.android.sdktools.binary-resources",
        "//tools/base/environment-services:studio.intellij.android.environment-services",
        "//tools/adt/idea/.idea/libraries:asm-tools",
        "//tools/base/annotations:studio.android.sdktools.android-annotations",
    ],
)

# Build target to verify that render-resources builds for tools/base
kotlin_library(
    name = "tools.render-resources",
    # buildifier: disable=bad-recursive-glob
    srcs = glob([
        "src/**/*.java",
        "src/**/*.kt",
    ]),
    lint_baseline = "lint_baseline_render_resources.xml",
    resource_strip_prefix = "tools/adt/idea/render-resources/resources",
    resources = glob(["resources/**"]),
    visibility = ["//visibility:public"],
    deps = [
        "//prebuilts/tools/common/lint-psi/intellij-core",
        "//tools/adt/idea/layoutlib-loader:tools.layoutlib-loader",
        "//tools/base/apkparser:tools.binary-resources",
        "//tools/base/apkparser/analyzer:tools.analyzer",
        "//tools/base/common:tools.common",
        "//tools/base/environment-services:tools.environment-services",
        "//tools/base/layoutlib-api:tools.layoutlib-api",
        "//tools/base/resource-repository:tools.resource-repository",
        "//tools/base/sdk-common:tools.sdk-common",
        "//tools/base/sdklib:tools.sdklib",
        "//tools/base/zipflinger",
        "@maven//:net.sf.kxml.kxml2",
        "@maven//:org.ow2.asm.asm",
        "@maven//:org.ow2.asm.asm-util",
    ],
)

# managed by go/iml_to_build
iml_module(
    name = "intellij.android.render-resources.tests",
    iml_files = ["intellij.android.render-resources.tests.iml"],
    # keep sorted
    test_data = [
        "//prebuilts/studio/layoutlib/data:framework_res.jar",
        "//tools/adt/idea/render-resources/testData",
        "//tools/base/resource-repository/test/resources",
    ],
    # do not sort: must match IML order
    test_deps = [
        "//tools/adt/idea/.idea/libraries:junit4",
        "@intellij//:intellij-sdk",
        "//tools/base/testutils:studio.android.sdktools.testutils",
        "//tools/base/resource-repository:studio.android.sdktools.resource-repository",
        "//tools/adt/idea/render-resources:intellij.android.render-resources",
        "//tools/adt/idea/.idea/libraries:truth",
        "//tools/adt/idea/layoutlib-loader:intellij.android.layoutlib-loader",
        "//tools/adt/idea/.idea/libraries:mockito",
        "//tools/base/apkparser/analyzer:studio.android.sdktools.analyzer",
        "//tools/adt/idea/layoutlib:intellij.android.layoutlib",
    ],
    test_friends = ["//tools/adt/idea/render-resources:intellij.android.render-resources"],
    test_srcs = ["testSrc"],
    visibility = ["//visibility:public"],
    # do not sort: must match IML order
    deps = ["@intellij//:com.intellij.java"],
)

# Build target to verify that render-resources tests succeed for tools/base
kotlin_test(
    name = "tools.render-resources.tests",
    # buildifier: disable=bad-recursive-glob
    srcs = glob([
        "testSrc/**/*.kt",
        "testSrc/**/*.java",
    ]),
    # keep sorted
    data = [
        "//prebuilts/studio/layoutlib/data:framework_res.jar",
        "//tools/adt/idea/render-resources/testData",
        "//tools/base/resource-repository/test/resources",
    ],
    friends = [":tools.render-resources"],
    jvm_flags = ["-Dtest.suite.jar=tools.render-resources.tests.jar"],
    lint_baseline = "lint_baseline_tests.xml",
    test_class = "com.android.testutils.JarTestSuite",
    deps = [
        ":tools.render-resources",
        "//prebuilts/tools/common/lint-psi/intellij-core",
        "//tools/adt/idea/.idea/libraries:aapt-proto",
        "//tools/adt/idea/layoutlib:tools.layoutlib",
        "//tools/adt/idea/layoutlib-loader:tools.layoutlib-loader",
        "//tools/analytics-library/shared:tools.analytics-shared",
        "//tools/base/apkparser/analyzer:tools.analyzer.maven",
        "//tools/base/common:tools.common",
        "//tools/base/layoutlib-api:tools.layoutlib-api",
        "//tools/base/resource-repository:tools.resource-repository",
        "//tools/base/resource-repository:tools.resource-repository.test.util",
        "//tools/base/sdk-common:tools.sdk-common",
        "//tools/base/sdklib:tools.sdklib",
        "//tools/base/testutils:tools.testutils",
        "@maven//:com.google.truth.truth",
        "@maven//:junit.junit",
        "@maven//:net.sf.kxml.kxml2",
    ],
)
