# Copyright 2022 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("subpackaged-echo-realm") {
  testonly = true

  deps = [
    ":subpackaged_echo_realm_cpp",
    ":subpackaged_echo_realm_rust",
  ]
}

fuchsia_package_with_single_component("subpackaged_echo_realm_rust") {
  component_name = "default"
  testonly = true
  manifest = "meta/subpackaged_echo_realm.cml"
  subpackages = [
    "../rust/echo_client",
    "../rust/echo_server",
  ]
}

fuchsia_package_with_single_component("subpackaged_echo_realm_cpp") {
  component_name = "default"
  testonly = true
  manifest = "meta/subpackaged_echo_realm.cml"
  subpackages = [
    "../cpp/echo_client",
    "../cpp/echo_server",
  ]
}

group("hermetic_tests") {
  testonly = true
  deps = [
    "../integration_tests/cpp:subpackaged_echo_integration_test_cpp",
    "../integration_tests/rust:subpackaged_echo_integration_test_rust",
  ]
}
