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

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

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