# Copyright 2018 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/cpp/sdk_source_set.gni")

sdk_source_set("process") {
  category = "internal"

  sources = [
    "process_builder.cc",
    "process_builder.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io_cpp",
    "//sdk/fidl/fuchsia.process:fuchsia.process_cpp",
    "//zircon/system/ulib/zx",
  ]

  deps = [
    "//sdk/lib/component/incoming/cpp",
    "//sdk/lib/fdio",
    "//zircon/system/ulib/fbl",
  ]
}

executable("unittests") {
  testonly = true
  output_name = "process_unittests"

  sources = [ "process_builder_unittest.cc" ]

  deps = [
    ":process",
    "//sdk/lib/component/incoming/cpp",
    "//src/lib/fxl/test:gtest_main",
    "//zircon/system/ulib/fbl",
  ]
}

fuchsia_unittest_package("process_unittests") {
  manifest = "meta/process_unittests.cml"
  deps = [
    ":unittests",
    "//zircon/third_party/uapp/dash",
  ]
}

group("tests") {
  testonly = true
  public_deps = [ ":process_unittests" ]
}
