// 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.

package {
    default_team: "trendy_team_java_core_libraries",
    default_applicable_licenses: ["Android-Apache-2.0"],
}

java_defaults {
    name: "libcore_okhttp_test_cases_defaults",
    defaults: ["cts_support_defaults"],
    platform_apis: true,
    min_sdk_version: "29",
    static_libs: [
        "bouncycastle-unbundled",
        "cts-core-test-runner-axt",

        // Jar containing expectations files.
        "libcore-expectations-knownfailures-jar",

        "okhttp-nojarjar",
        "okhttp-tests-nojarjar",
    ],
    dex_preopt: {
        enabled: false,
    },
    optimize: {
        enabled: false,
    },
    // Include both the 32 and 64 bit versions of libjavacoretests,
    // where applicable.
    compile_multilib: "both",
}

// Tests used in CTS and in Conscrypt MTS.
android_test {
    name: "CtsLibcoreOkHttpTestCases",
    defaults: ["libcore_okhttp_test_cases_defaults"],
    // Tag this module as a cts test artifact
    test_suites: [
        "cts",
        "general-tests",
        "mts-conscrypt",
    ],
    host_required: ["cts-dalvik-host-test-runner"],
    test_config: "CtsLibcoreOkHttpTestCases.xml",
}

// Tests used in ART MTS.
android_test {
    name: "MtsLibcoreOkHttpTestCases",
    defaults: ["libcore_okhttp_test_cases_defaults"],
    test_suites: [
        "general-tests",
        "mts-art",
    ],
    host_required: ["cts-dalvik-host-test-runner"],
    test_config: "MtsLibcoreOkHttpTestCases.xml",
}
