//
// Copyright (C) 2008 The Android Open Source Project
//
// 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
//
//      http://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.
//

// Build the android.test.runner library
// =====================================
package {
    // See: http://go/android-license-faq
    default_applicable_licenses: ["frameworks_base_test-runner_license"],
}

license {
    name: "frameworks_base_test-runner_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-CPL-1.0",
    ],
    license_text: [
        "src/junit/cpl-v10.html",
    ],
}

java_sdk_library {
    name: "android.test.runner",

    srcs: [":android-test-runner-sources"],

    errorprone: {
        javacflags: ["-Xep:DepAnn:ERROR"],
    },

    libs: [
        "android.test.base",
        "android.test.mock",
    ],
    stub_only_libs: [
        "android.test.base",
        "android.test.mock",
    ],
    api_packages: [
        "android.test",
        "android.test.suitebuilder",
        "junit.runner",
        "junit.textui",
    ],

    compile_dex: true,
    default_to_stubs: true,
    dist_group: "android",
}

// Build the android.test.runner-minus-junit library
// =================================================
// This is only intended for inclusion in the android.test.legacy static
// library and must not be used elsewhere.
java_library {
    name: "android.test.runner-minus-junit",

    srcs: ["src/android/**/*.java"],

    sdk_version: "current",
    libs: [
        "android.test.base_static",
        "android.test.mock",
        "junit",
    ],
}

// Make the current.txt available for use by the cts/tests/signature tests.
// ========================================================================
filegroup {
    name: "android-test-runner-current.txt",
    visibility: [
        "//cts/tests/signature/api",
    ],
    srcs: [
        "api/current.txt",
    ],
}

filegroup {
    name: "android-test-runner-sources",
    srcs: ["src/**/*.java"],
    path: "src",
}
