// Copyright (C) 2020 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_applicable_licenses: ["Android-Apache-2.0"],
}

java_test_host {
    name: "CtsInstallHostTestCases",
    defaults: ["cts_defaults"],
    srcs:  ["src/**/*.java"],
    libs: [
        "cts-tradefed",
        "cts-shim-host-lib",
        "tradefed",
        "truth-prebuilt",
        "hamcrest",
        "hamcrest-library",
    ],
    data: [
        ":InstallTest",
    ],
    test_suites: [
        "cts",
        "general-tests",
    ],
}

android_test_helper_app {
    name: "InstallTest",
    srcs:  ["app/src/**/*.java", "src/android/cts/install/*.java"],
    manifest : "app/AndroidManifest.xml",
    static_libs: [
        "androidx.test.runner",
        "androidx.test.core",
        "truth-prebuilt",
        "cts-install-lib",
        "cts-rollback-lib",
    ],
    java_resources: [
        ":StagedInstallTestApexV1",
        ":StagedInstallTestApexV2",
        ":StagedInstallTestApexV3",
    ],
    sdk_version: "test_current",
    test_suites: ["device-tests"],
}
