//
// Copyright (C) 2016 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.base library
// ===================================
// This contains the junit.framework and android.test classes that were in
// Android API level 25 excluding those from android.test.runner.
// Also contains the com.android.internal.util.Predicate[s] classes.
java_library {
    name: "android.test.base",
    installable: true,

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

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

    // Needs to be consistent with the repackaged version of this make target.
    java_version: "1.8",

    sdk_version: "current",
    hostdex: true,
}

// Build the legacy-test library
// =============================
// This contains the junit.framework and android.test classes that were in
// Android API level 25 excluding those from android.test.runner.
// Also contains the com.android.internal.util.Predicate[s] classes.
java_library {
    name: "legacy-test",
    installable: true,

    sdk_version: "current",
    static_libs: ["android.test.base"],
}

// Build the repackaged.android.test.base library
// ==============================================
// This contains repackaged versions of the classes from
// android.test.base.
java_library_static {
    name: "repackaged.android.test.base",

    sdk_version: "current",
    static_libs: ["android.test.base"],

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

// Build the android.test.base-minus-junit library
// ===============================================
// This contains the android.test classes from android.test.base plus
// the com.android.internal.util.Predicate[s] classes. This is only
// intended for inclusion in the android.test.legacy and
// legacy-android-test static libraries and must not be used elsewhere.
java_library_static {
    name: "android.test.base-minus-junit",

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

    sdk_version: "current",
    libs: [
        "junit",
    ],
}

droiddoc {
    name: "android-test-base-api-stubs-gen-docs",
    srcs: [
        "src/**/*.java",
    ],
    custom_template: "droiddoc-templates-sdk",
    installable: false,
    args: "-stubpackages android.test:" +
          "android.test.suitebuilder.annotation:" +
          "com.android.internal.util:" +
          "junit.framework -stubsourceonly -nodocs",
    sdk_version: "current",
    api_tag_name: "ANDROID_TEST_BASE",
    api_filename: "android-test-base-api.txt",
    removed_api_filename: "android-test-base-removed.txt",
}

// Build the android.test.base.stubs library
// =========================================
java_library_static {
    name: "android.test.base.stubs",
    srcs: [
        ":android-test-base-api-stubs-gen-docs",
    ],
    product_variables: {
        pdk: {
            enabled: false,
        },
        unbundled_build: {
            enabled: false,
        },
    },
    sdk_version: "current",
    compile_dex: true,
}
