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

package {
    default_team: "trendy_team_aaos_framework",
    default_applicable_licenses: ["Android-Apache-2.0"],
}

python_defaults {
    name: "torq_defaults",
    srcs: [
        "torq.py",
        "command.py",
        "command_executor.py",
        "validation_error.py",
        "device.py",
        "config_builder.py",
        "open_ui.py",
        "utils.py",
        "validate_simpleperf.py",
    ],
}

python_binary_host {
    name: "torq",
    main: "torq.py",
    defaults: ["torq_defaults"],
}

python_test_host {
    name: "torq_unit_test",
    main: "tests/torq_unit_test.py",
    srcs: ["tests/torq_unit_test.py"],
    defaults: ["torq_defaults"],
    version: {
        py3: {
            enabled: true,
            embedded_launcher: false,
        },
    },
    test_options: {
        unit_test: true,
    },
}

python_test_host {
    name: "device_unit_test",
    main: "tests/device_unit_test.py",
    srcs: ["tests/device_unit_test.py"],
    defaults: ["torq_defaults"],
    version: {
        py3: {
            enabled: true,
            embedded_launcher: false,
        },
    },
    test_options: {
        unit_test: true,
    },
}

python_test_host {
    name: "config_builder_unit_test",
    main: "tests/config_builder_unit_test.py",
    srcs: ["tests/config_builder_unit_test.py"],
    defaults: ["torq_defaults"],
    version: {
        py3: {
            enabled: true,
            embedded_launcher: false,
        },
    },
    test_options: {
        unit_test: true,
    },
}

python_test_host {
    name: "command_executor_unit_test",
    main: "tests/command_executor_unit_test.py",
    srcs: ["tests/command_executor_unit_test.py"],
    defaults: ["torq_defaults"],
    version: {
        py3: {
            enabled: true,
            embedded_launcher: false,
        },
    },
    test_options: {
        unit_test: true,
    },
}

python_test_host {
    name: "validate_simpleperf_unit_test",
    main: "tests/validate_simpleperf_unit_test.py",
    srcs: ["tests/validate_simpleperf_unit_test.py"],
    defaults: ["torq_defaults"],
    version: {
        py3: {
            enabled: true,
            embedded_launcher: false,
        },
    },
    test_options: {
        unit_test: true,
    },
}
