# 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_library.gni")
import("//src/sys/build/components.gni")
import("//tools/cmc/build/expect_includes.gni")

rustc_library("lib") {
  name = "test_runners_lib"
  with_unit_tests = true
  edition = "2018"

  # Only for internal use.
  visibility = [ "./*" ]

  deps = [
    "//garnet/lib/rust/io_util",
    "//sdk/fidl/fuchsia.component.runner:fuchsia.component.runner-rustc",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.process:fuchsia.process-rustc",
    "//sdk/fidl/fuchsia.test:fuchsia.test-rustc",
    "//sdk/fidl/fuchsia.test:rust_measure_tape_for_case",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/lib/zircon/rust:fuchsia-zircon-sys",
    "//src/sys/lib/runner",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:matches",
    "//third_party/rust_crates:rand",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:test-case",
    "//third_party/rust_crates:thiserror",
  ]

  sources = [
    "src/cases.rs",
    "src/elf/elf_component.rs",
    "src/elf/mod.rs",
    "src/elf/server.rs",
    "src/errors.rs",
    "src/launch.rs",
    "src/lib.rs",
    "src/logs.rs",
  ]
}

rustc_library("test_lib") {
  testonly = true
  name = "test_runners_test_lib"
  with_unit_tests = true
  edition = "2018"
  source_root = "src/test_lib.rs"

  # Only for internal use.
  visibility = [ "./*" ]

  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-component",
    "//src/lib/test_executor/rust:test_executor",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
  ]

  sources = [ "src/test_lib.rs" ]
}

rustc_binary("echo_server_for_concurrency_test_bin") {
  name = "echo_server_for_concurrency_test"
  edition = "2018"
  source_root = "src/echo_server_for_concurrency_test.rs"
  deps = [
    "//examples/components/routing/fidl:echo-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
  ]

  sources = [ "src/echo_server_for_concurrency_test.rs" ]
}

fuchsia_component("echo_server_for_concurrency_test") {
  testonly = true
  manifest = "meta/echo-server-for-concurrency-test.cml"
  component_name = "echo-server-for-concurrency-test"
  deps = [ ":echo_server_for_concurrency_test_bin" ]
}

fuchsia_unittest_package("test-runner-unit-tests") {
  deps = [ ":lib_test" ]
}

fuchsia_unittest_package("test-runner-test-lib-unit-tests") {
  deps = [ ":test_lib_test" ]
}

expect_includes("tmp_storage") {
  includes = [
    "tmp_storage.shard.cml",
    "tmp_storage.shard.cmx",
  ]
}

group("test_runners") {
  testonly = true
  deps = [
    "elf",
    "gotests",
    "gtest",
    "rust",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":test-runner-test-lib-unit-tests",
    ":test-runner-unit-tests",
    "elf:tests",
    "gotests:tests",
    "gtest:tests",
    "rust:tests",
  ]
}
