//
// 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
// =====================================
java_sdk_library {
    name: "android.test.runner",

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

    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,
}

// 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",
    ],
}

// Build the repackaged.android.test.runner library
// ================================================
java_library_static {
    name: "repackaged.android.test.runner",

    srcs: ["src/**/*.java"],
    exclude_srcs: [
        "src/android/test/ActivityUnitTestCase.java",
        "src/android/test/ApplicationTestCase.java",
        "src/android/test/IsolatedContext.java",
        "src/android/test/ProviderTestCase.java",
        "src/android/test/ProviderTestCase2.java",
        "src/android/test/RenamingDelegatingContext.java",
        "src/android/test/ServiceTestCase.java",
    ],

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

    jarjar_rules: "jarjar-rules.txt",
    // Pin java_version until jarjar is certified to support later versions. http://b/72703434
    java_version: "1.8",
}

// 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",
    ],
}
