// 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",
        "asuite_lib_test/*.py",
        "proto/*_pb2.py",
        "proto/__init__.py",
    ],
    libs: [
        "atest_proto",
    ],
    data: [
        "tools/updatedb_darwin.sh",
        ":asuite_version",
    ],
    // Make atest's built name to atest-dev
    stem: "atest-dev",
    defaults: ["atest_py2_default"],
    dist: {
        targets: ["droidcore"],
    },
}

python_library_host {
    name: "atest_module_info",
    defaults: ["atest_lib_default"],
    srcs: [
        "atest_error.py",
        "atest_decorator.py",
        "atest_utils.py",
        "constants.py",
        "constants_default.py",
        "module_info.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",
    ],
}

// Exclude atest_updatedb_unittest due to it's a test for ATest's wrapper of updatedb, but there's
// no updatedb binary on test server.
python_test_host {
    name: "atest_unittests",
    main: "atest_run_unittests.py",
    pkg_path: "atest",
    srcs: [
        "**/*.py",
    ],
    data: [
        "tools/updatedb_darwin.sh",
        "unittest_data/**/*",
        "unittest_data/**/.*",
    ],
    exclude_srcs: [
        "asuite_lib_test/*.py",
        "proto/*_pb2.py",
        "proto/__init__.py",
        "tools/atest_updatedb_unittest.py",
    ],
    libs: [
        "py-mock",
        "atest_proto",
    ],
    test_config: "atest_unittests.xml",
    test_suites: ["general-tests"],
    defaults: ["atest_py2_default"],
}

python_test_host {
    name: "atest_integration_tests",
    main: "atest_integration_tests.py",
    pkg_path: "atest",
    srcs: [
        "atest_integration_tests.py",
    ],
    data: [
        "INTEGRATION_TESTS",
    ],
    test_config: "atest_integration_tests.xml",
    test_suites: ["general-tests"],
    defaults: ["atest_py2_default"],
}

python_library_host {
    name: "atest_proto",
    defaults: ["atest_py2_default"],
    srcs: [
        "proto/*.proto",
    ],
    proto: {
        canonical_path_from_root: false,
    },
}

java_library_host {
    name: "asuite_proto_java",
    srcs: [
        "proto/*.proto",
    ],
    libs: [
        "libprotobuf-java-full",
    ],
    proto: {
        canonical_path_from_root: false,
        include_dirs: ["external/protobuf/src"],
    },
}

python_library_host {
    name: "asuite_proto",
    defaults: ["asuite_default"],
    srcs: [
        "proto/*.proto",
    ],
    proto: {
        canonical_path_from_root: false,
    },
}

python_library_host {
    name: "asuite_cc_client",
    defaults: ["asuite_default"],
    srcs: [
        "atest_error.py",
        "atest_decorator.py",
        "atest_utils.py",
        "constants.py",
        "constants_default.py",
        "metrics/*.py",
    ],
    libs: [
        "asuite_proto",
        "asuite_metrics",
    ],
}


genrule {
    name: "asuite_version",
    cmd: "DATETIME=$$(TZ='America/Log_Angelos' date +'%F');" +
         "if [[ -n $$BUILD_NUMBER ]]; then" +
         "  echo $${DATETIME}_$${BUILD_NUMBER} > $(out);" +
         "else" +
         "  echo $$(date +'%F_%R') > $(out);" +
         "fi",
    out: [
        "VERSION",
    ],
}
