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

import("//build/components.gni")
import("//build/test.gni")
import("//build/testing/bootfs_test.gni")

group("psutils") {
  testonly = true
  deps = [
    ":handles",
    ":ps",
  ]
}

test("ps") {
  output_name = "ps-test"
  sources = [ "ps_test.c" ]
  deps = [
    "//sdk/lib/fdio",
    "//src/sys/bin/psutils:ps_internal",
    "//zircon/system/ulib/pretty",
    "//zircon/system/ulib/task-utils",
    "//zircon/system/ulib/zxtest",
  ]
}

test("handles") {
  output_name = "handles-test"
  sources = [ "handles_test.cc" ]
  deps = [
    "//sdk/lib/fdio",
    "//src/sys/bin/psutils:handles_internal",
    "//zircon/system/ulib/pretty",
    "//zircon/system/ulib/task-utils",
    "//zircon/system/ulib/zxtest",
  ]
}

bootfs_test("ps-bootfs-test") {
  name = "ps-test"
  deps = [ ":ps" ]
}

fuchsia_unittest_package("handles-test-pkg") {
  package_name = "handles-test"
  deps = [ ":handles" ]
}

group("tests") {
  testonly = true
  deps = [ ":handles-test-pkg" ]
}
