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

// This file contains all the build target that we expect tests writers
// to need to build tests.

java_import_host {
    name: "tradefed",
    jars: [
        ":tradefed-prebuilt",
        ":tradefed-test-framework-prebuilt",
        // The following are for platform branches only
        ":platformprotos",
    ],
    installable: true,
}

// Target used for backward compatibility with suites
java_import_host {
    name: "tradefed-no-fwk",
    jars: [":tradefed-prebuilt"],
    installable: true,
}

java_import_host {
    name: "tradefed-test-framework",
    jars: [":tradefed-test-framework-prebuilt"],
    installable: true,
}

java_import_host {
    name: "loganalysis",
    jars: [":loganalysis-prebuilt"],
    installable: true,
}

// Targets for test suites
java_import_host {
    name: "compatibility-tradefed",
    jars: [":compatibility-tradefed-prebuilt"],
    installable: true,
}

java_import_host {
    name: "compatibility-host-util",
    jars: [":compatibility-host-util-prebuilt"],
    installable: true,
}
