// This file is generated by cargo_embargo.
// Do not modify this file as changes will be overridden on upgrade.

package {
    default_applicable_licenses: ["external_rust_crates_quickcheck_license"],
}

// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
//
// large-scale-change included anything that looked like it might be a license
// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
//
// Please consider removing redundant or irrelevant files from 'license_text:'.
// See: http://go/android-license-faq
license {
    name: "external_rust_crates_quickcheck_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-MIT",
        "SPDX-license-identifier-Unlicense",
    ],
    license_text: [
        "COPYING",
        "LICENSE-MIT",
        "UNLICENSE",
    ],
}

rust_library {
    name: "libquickcheck",
    host_supported: true,
    crate_name: "quickcheck",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.3",
    srcs: ["src/lib.rs"],
    edition: "2018",
    features: [
        "default",
        "env_logger",
        "log",
        "regex",
        "use_logging",
    ],
    rustlibs: [
        "libenv_logger",
        "liblog_rust",
        "librand",
    ],
    apex_available: [
        "//apex_available:platform",
        "//apex_available:anyapex",
    ],
    product_available: true,
    vendor_available: true,
}

rust_test {
    name: "quickcheck_test_src_lib",
    host_supported: true,
    crate_name: "quickcheck",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.3",
    srcs: ["src/lib.rs"],
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "default",
        "env_logger",
        "log",
        "regex",
        "use_logging",
    ],
    rustlibs: [
        "libenv_logger",
        "liblog_rust",
        "librand",
    ],
}
