# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/rust/rustc_binary.gni")
import("//build/rust/rustc_test.gni")
import("//build/test/test_package.gni")
import("//src/sys/build/components.gni")

rustc_test("tests_bin") {
  edition = "2018"
  source_root = "main.rs"
  name = "run_test_suite_integration_tests"

  deps = [
    "//sdk/fidl/fuchsia.test.manager:fuchsia.test.manager-rustc",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/sys/run_test_suite:lib",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:serde_json",
  ]

  sources = [ "main.rs" ]
}

executable("long_running_test_bin") {
  output_name = "long_running_test"
  testonly = true
  sources = [ "long_running_test.cc" ]

  deps = [
    "//garnet/public/lib/gtest",
    "//src/lib/fxl/test:gtest_main",
  ]
}

fuchsia_component("long_running_test") {
  testonly = true
  deps = [ ":long_running_test_bin" ]
  manifest = "meta/long_running_test.cml"
}

fuchsia_unittest_package("run_test_suite_integration_tests") {
  manifest = "meta/run_test_suite_integration_tests.cmx"
  deps = [
    ":long_running_test",
    ":tests_bin",
    "//examples/components/routing/echo_server:echo_server_component",
    "//examples/tests:disabled-test-example",
    "//examples/tests:echo_test_client",
    "//examples/tests:echo_test_realm",
    "//examples/tests:failing-test-example",
    "//examples/tests:get-tests-closes-channel-example",
    "//examples/tests:get-tests-hangs-example",
    "//examples/tests:huge-test-example",
    "//examples/tests:incomplete-test-example",
    "//examples/tests:invalid-test-example",
    "//examples/tests:no-onfinished-after-test-example",
    "//examples/tests:no-test-example",
    "//examples/tests:passing-test-example",
    "//examples/tests:run-closes-channel-example",
    "//examples/tests:run-hangs-example",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":run_test_suite_integration_tests",
    "//examples/tests",
    "//src/sys/component_manager_for_test",
  ]
}
