# 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")

rustc_test("cs2_test_bin") {
  name = "cs2_test"
  edition = "2018"
  source_root = "cs2_test.rs"
  deps = [
    "//src/lib/fuchsia-async",
    "//src/sys/component_manager/tests:test_utils_lib",
    "//src/sys/tools/cs2:lib",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:thiserror",
  ]
}

test_package("cs2_test") {
  deps = [
    ":cs2_test_bin",
    "//examples/components/routing/echo_client",
    "//examples/components/routing/echo_server",
  ]
  meta = [
    {
      path = rebase_path("//examples/components/routing/meta/echo_server.cml")
      dest = "echo_server.cm"
    },
    {
      path = rebase_path("//examples/components/routing/meta/echo_client.cml")
      dest = "echo_client.cm"
    },
    {
      path = rebase_path("meta/echo_realm.cml")
      dest = "echo_realm.cm"
    },
    {
      path = rebase_path("meta/empty.cml")
      dest = "empty.cm"
    },
    {
      path = rebase_path("meta/tree/root.cml")
      dest = "root.cm"
    },
    {
      path = rebase_path("meta/tree/foo.cml")
      dest = "foo.cm"
    },
    {
      path = rebase_path("meta/tree/bar.cml")
      dest = "bar.cm"
    },
    {
      path = rebase_path("meta/tree/baz.cml")
      dest = "baz.cm"
    },
  ]
  binaries = [
    {
      name = "echo_client"
    },
    {
      name = "echo_server"
    },
  ]
  tests = [
    {
      name = "cs2_test"
    },
  ]
}
