# 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/package.gni")
import("//build/rust/rustc_test.gni")

rustc_test("test_manager_test_bin") {
  edition = "2018"
  name = "test_manager_test"
  source_root = "src/main.rs"
  deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
    "//sdk/fidl/fuchsia.test:fuchsia.test-rustc",
    "//sdk/fidl/fuchsia.test.manager:fuchsia.test.manager-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/test_executor/rust:test_executor",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:maplit",
    "//third_party/rust_crates:pretty_assertions",
    "//third_party/rust_crates:thiserror",
  ]

  sources = [ "src/main.rs" ]

  inputs = [
    "//src/sys/test_runners/gtest/test_data/sample_tests_golden_events.rsf",
  ]
}

package("test_manager_test") {
  testonly = true

  deps = [
    ":test_manager_test_bin",
    "test_data",
  ]

  meta = [
    {
      path = rebase_path("meta/test_manager_test.cml")
      dest = "test_manager_test.cm"
    },
    {
      path = rebase_path("test_data/meta/no_suite_service.cml")
      dest = "no_suite_service.cm"
    },
  ]

  tests = [
    {
      name = "test_manager_test"
    },
  ]

  binaries = [
    {
      name = "no_suite_service"
    },
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":test_manager_test",
    "//examples/tests:example-tests",
    "//src/sys/test_manager",
    "//src/sys/test_runners/gtest/test_data:gtest-runner-example-tests",
  ]
}
