# Copyright 2023 The Bazel Authors. All rights reserved.
#
# 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.

load("@rules_bazel_integration_test//bazel_integration_test:defs.bzl", "default_test_runner")
load("//python:py_library.bzl", "py_library")
load(":integration_test.bzl", "rules_python_integration_test")

licenses(["notice"])

_WORKSPACE_FLAGS = [
    "--noenable_bzlmod",
    "--enable_workspace",
]

default_test_runner(
    name = "workspace_test_runner",
    bazel_cmds = [
        "info {}".format(" ".join(_WORKSPACE_FLAGS)),
        "test {} //...".format(" ".join(_WORKSPACE_FLAGS)),
    ],
    visibility = ["//visibility:public"],
)

default_test_runner(
    name = "test_runner",
    visibility = ["//visibility:public"],
)

rules_python_integration_test(
    name = "compile_pip_requirements_test",
)

rules_python_integration_test(
    name = "compile_pip_requirements_workspace_test",
    bzlmod = False,
    workspace_path = "compile_pip_requirements",
)

rules_python_integration_test(
    name = "local_toolchains_test",
    env = {
        "RULES_PYTHON_BZLMOD_DEBUG": "1",
    },
)

rules_python_integration_test(
    name = "local_toolchains_workspace_test",
    bzlmod = False,
    env = {
        "RULES_PYTHON_BZLMOD_DEBUG": "1",
    },
    workspace_path = "local_toolchains",
)

rules_python_integration_test(
    name = "pip_parse_test",
)

rules_python_integration_test(
    name = "pip_parse_workspace_test",
    bzlmod = False,
    workspace_path = "pip_parse",
)

rules_python_integration_test(
    name = "py_cc_toolchain_registered_test",
)

rules_python_integration_test(
    name = "py_cc_toolchain_registered_workspace_test",
    bzlmod = False,
    workspace_path = "py_cc_toolchain_registered",
)

rules_python_integration_test(
    name = "custom_commands_test",
    py_main = "custom_commands_test.py",
)

py_library(
    name = "runner_lib",
    srcs = ["runner.py"],
    imports = ["../../"],
)
