/*
 * Copyright 2022 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 was created using the `create_project.py` script located in the
 * `<AndroidX root>/development/project-creator` directory.
 *
 * Please use that script when creating a new project, rather than copying an existing project and
 * modifying its settings.
 */
import androidx.build.BundleInsideHelper
import androidx.build.LibraryType

plugins {
    id("AndroidXPlugin")
    id("kotlin")
}

BundleInsideHelper.forInsideJar(
        project,
        "com.google.protobuf",
        // b/268288856 untangle this mess.
        // Currently this has to match test/screenshot/screenshot/build.gradle because sometimes
        // both :internal-testutils-paparazzi and :test:screenshot:screenshot are added to the
        // classpath and picking a different package will cause missing class exceptions due to
        // class shadowing
        "androidx.test.screenshot.protobuf",
        // proto-lite dependency includes .proto files, which are not used and would clash if
        // users also use proto library directly
        /* dropResourcesWithSuffix = */ ".proto"
)

dependencies {
    api(project(":external:paparazzi:paparazzi"))
    bundleInside(project(path: ":test:screenshot:screenshot-proto"))

    testImplementation(libs.junit)
    testImplementation(libs.kotlinTestJunit)
}

androidx {
    type = LibraryType.INTERNAL_HOST_TEST_LIBRARY
}