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

assert(is_fuchsia, "component manager is for the Fuchsia toolchain only")

import("//build/rust/rustc_binary.gni")

group("non_hermetic_tests") {
  testonly = true
  deps = [
    "bootfs:tests",
    "capability_provider_vfs_compliance:tests",
    "fuchsia_boot_resolver:tests($default_toolchain)",
    "fuchsia_io:tests",
    "job_with_available_exception_channel:tests",
    "security_policy:tests",
    "structured_config:tests",
  ]
}

group("hermetic_tests") {
  testonly = true
  deps = [
    "abi_compatibility:tests",
    "attributed_logging:attributed-logging-test",
    "binder:tests",
    "builtin_runner:tests",
    "collections:collections_integration_test",
    "component-time:tests",
    "controller:tests",
    "crash_introspect:tests",
    "destruction:destruction_integration_test",
    "diagnostics:tests",
    "dictionaries:tests",
    "dynamic_offers:tests",
    "elf_runner:tests",
    "events:events_integration_test",
    "introspector:tests",
    "lifecycle_controller:tests",
    "namespace_capabilities:tests",
    "panic-test:component_manager_panic_test",
    "pkg_from_framework:tests",
    "realm:tests",
    "reboot_on_terminate:tests",
    "resolvers:tests",
    "rights:tests",
    "routing:tests",
    "security_policy/capability_allowlist:security-policy-capability-allowlist-integration-test",
    "security_policy/next_vdso:security-policy-next-vdso-test",
    "services:tests",
    "shutdown:shutdown_integration_test",
    "stop_with_escrow:tests",
    "storage:storage_integration_test",
    "structured_config/client_integration/cpp_driver:cpp_driver",
    "structured_config/client_integration/cpp_elf:cpp_elf",
    "structured_config/client_integration/rust:rust",
    "structured_config/different_values:different_values_false",
    "structured_config/different_values:different_values_true",
    "structured_config/parent_overrides:parent_overrides_integration_test",
    "utc-time:tests",
  ]
}

rustc_binary("trigger_bin") {
  testonly = true
  name = "trigger"
  edition = "2021"
  source_root = "trigger.rs"
  deps = [
    "//examples/components/routing/fidl:echo_rust",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/sys/component_manager/tests/fidl:components_rust",
    "//third_party/rust_crates:futures",
  ]

  sources = [ "trigger.rs" ]
}
