# Copyright 2016 The Tulsi 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.

# test_suite mock BUILD file for integration testing.

package(
    default_visibility = ["//TestSuite:__subpackages__"],
)

load(
    "//tools/build_defs/apple:ios.bzl",
    "ios_application",
    "ios_unit_test",
)

test_suite(
    name = "explicit_XCTests",
    tests = [
        "//TestSuite/One:LogicTest",
        "//TestSuite/One:XCTest",
        "//TestSuite/Three:XCTest",
        "//TestSuite/Two:XCTest",
    ],
)

test_suite(
    name = "local_tagged_tests",
    tags = ["tagged"],
)

test_suite(
    name = "recursive_test_suite",
    tests = [
        ":TestSuiteXCTest",
        "//TestSuite/Three:tagged_tests",
    ],
)

ios_application(
    name = "TestApplication",
    bundle_id = "com.example.testapplication",
    families = [
        "iphone",
        "ipad",
    ],
    infoplists = ["Info.plist"],
    minimum_os_version = "8.0",
    deps = [
        ":ApplicationLibrary",
    ],
)

objc_library(
    name = "ApplicationLibrary",
    srcs = [
        "Application/srcs/main.m",
    ],
)

objc_library(
    name = "TestSuiteXCTestLib",
    srcs = ["TestSuite/TestSuiteXCTest.m"],
    deps = [":ApplicationLibrary"],
)

objc_library(
    name = "TestSuiteXCTestNotTaggedLib",
    srcs = ["TestSuite/RootXCTest.m"],
    deps = [":ApplicationLibrary"],
)

ios_unit_test(
    name = "TestSuiteXCTest",
    tags = ["tagged"],
    test_host = ":TestApplication",
    deps = [":TestSuiteXCTestLib"],
)

ios_unit_test(
    name = "TestSuiteXCTestNotTagged",
    test_host = ":TestApplication",
    deps = [":TestSuiteXCTestNotTaggedLib"],
)
