# Copyright 2024 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/components.gni")
import("//build/rust/rustc_test.gni")

executable("exit_with_code") {
  sources = [ "exit_with_code.cc" ]
  deps = [ "//src/lib/fxl" ]
}

executable("exit_with_code_from_env") {
  sources = [ "exit_with_code_from_env.cc" ]
  deps = [ "//src/lib/fxl" ]
}

rustc_test("exit_code_integration_test_bin") {
  name = "exit_code_integration_test"
  edition = "2024"
  source_root = "integration_test.rs"
  deps = [
    "//sdk/fidl/fuchsia.component:fuchsia.component_rust",
    "//sdk/fidl/fuchsia.component.decl:fuchsia.component.decl_rust",
    "//sdk/fidl/fuchsia.data:fuchsia.data_rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-component-test",
    "//src/sys/lib/cm_rust",
    "//src/sys/lib/component-events",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:test-case",
  ]

  sources = [ "integration_test.rs" ]
}

fuchsia_component("test_root") {
  testonly = true
  manifest = "meta/test_root.cml"
}

fuchsia_unittest_package("exit_code_integration_test") {
  manifest = "meta/exit_code_integration_test.cml"
  deps = [
    ":exit_code_integration_test_bin",
    ":exit_with_code",
    ":test_root",
    "//src/sys/component_manager:component-manager-realm-builder-debug-cmp",
  ]
}
