# Copyright 2021 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.

assert(is_fuchsia, "These targets are only compiled in the fuchsia toolchain.")

import("//build/components.gni")

group("hermetic_tests") {
  testonly = true
  deps = [ ":package" ]
}

fuchsia_component("cpp-component") {
  testonly = true
  manifest = "cpp/meta/sample_realm.cml"
  component_name = "cpp"
  deps = [ "cpp:bin" ]
}

fuchsia_component("rust-component") {
  testonly = true
  manifest = "rust/meta/sample_realm.cml"
  component_name = "rust"
  deps = [ "rust:bin" ]
}

fuchsia_component("echo_client_component") {
  component_name = "echo_client"
  manifest = "meta/echo_client.cml"
  deps = [ "//examples/components/routing/rust/echo_client:bin" ]
}

fuchsia_component("echo_server_component") {
  component_name = "echo_server"
  manifest = "meta/echo_server.cml"
  deps = [ "//examples/components/routing/rust/echo_server:bin" ]
}

# Run with `fx test realm-builder-examples`.
fuchsia_test_package("package") {
  package_name = "realm-builder-examples"
  test_components = [
    ":cpp-component",
    ":rust-component",
  ]

  deps = [
    ":echo_client_component",
    ":echo_server_component",
  ]
}
