# Copyright 2021 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/config.gni")
import("//build/rust/rustc_library.gni")

group("tests") {
  testonly = true
  deps = [ ":pty_tests" ]
}

rustc_library("pty") {
  with_unit_tests = true
  edition = "2021"

  deps = [
    "//sdk/fidl/fuchsia.hardware.pty:fuchsia.hardware.pty_rust",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-component",
    "//src/lib/trace/rust:trace",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:libc",
  ]

  test_deps = [
    "//src/lib/cstr",
    "//src/lib/fuchsia-async",
    "//third_party/rust_crates:futures",
  ]

  sources = [
    "src/key_util.rs",
    "src/lib.rs",
    "src/pty.rs",
  ]
}

fuchsia_test_component("pty_tests_component") {
  component_name = "pty_tests"
  manifest = "meta/pty_tests.cml"
  deps = [
    ":pty_test",
    "//src/lib/zircon/rust:exit_with_code_util",
    "//zircon/third_party/uapp/dash",
  ]
}

fuchsia_test_package("pty_tests") {
  test_components = [ ":pty_tests_component" ]
  subpackages = [ "//src/bringup/bin/ptysvc:package" ]
}
