// Copyright (C) 2018 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.

python_defaults {
    name: "atest_lib_default",
    pkg_path: "atest",
    version: {
        py2: {
            enabled: false,
            embedded_launcher: false,
        },
        py3: {
            enabled: true,
            embedded_launcher: false,
        },
    },
}

// Remove this defaults after python3 migration is finished.
python_defaults {
    name: "atest_py2_default",
    pkg_path: "atest",
    version: {
        py2: {
            enabled: true,
            embedded_launcher: false,
        },
        py3: {
            enabled: false,
            embedded_launcher: false,
        },
    },
}

python_binary_host {
    name: "atest",
    main: "atest.py",
    srcs: [
        "**/*.py",
    ],
    exclude_srcs: [
        "*_unittest.py",
        "*/*_unittest.py",
    ],
    libs: [
        "py-mock",
    ],
    defaults: ["atest_py2_default"],
}

python_library_host {
    name: "atest_module_info",
    defaults: ["atest_lib_default"],
    srcs: [
        "module_info.py",
        "atest_utils.py",
        "constants.py",
        "constants_default.py"
    ],
}

// Move asuite_default and asuite_metrics to //tools/asuite when atest is
// running as a prebuilt.
python_defaults {
    name: "asuite_default",
    pkg_path: "asuite",
    version: {
        py2: {
            enabled: true,
            embedded_launcher: false,
        },
        py3: {
            enabled: true,
            embedded_launcher: false,
        },
    },
}

python_library_host {
    name: "asuite_metrics",
    defaults: ["asuite_default"],
    srcs: [
        "asuite_metrics.py",
    ],
}

python_test_host {
    name: "atest_unittests",
    main: "atest_run_unittests.py",
    pkg_path: "atest",
    srcs: [
        "**/*.py",
    ],
    data: [
        "unittest_data/**/*",
        "unittest_data/**/.*",
    ],
    test_config: "atest_unittests.xml",
    test_suites: ["general-tests"],
    defaults: ["atest_py2_default"],
}
