# Copyright 2016 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/package.gni")
import("//build/rust/rustc_test.gni")
import("//build/test/test_package.gni")

executable("getaddrinfo_test_client") {
  testonly = true

  sources = [ "getaddrinfo_test_client.cc" ]

  deps = [ "//src/lib/fxl/test:gtest_main" ]
}

rustc_test("getaddrinfo_test") {
  edition = "2018"

  deps = [
    "//sdk/fidl/fuchsia.net:fuchsia.net-rustc",
    "//sdk/fidl/fuchsia.sys:fuchsia.sys-rustc",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:thiserror",
  ]
}

# TODO move these tests into fdio, once rust is supported in the zircon build
test_package("getaddrinfo_tests") {
  deps = [
    ":getaddrinfo_test",
    ":getaddrinfo_test_client",
  ]

  binaries = [
    {
      name = "getaddrinfo_test_client"
    },
  ]

  meta = [
    {
      path = rebase_path("meta/getaddrinfo_test_client.cmx")
      dest = "getaddrinfo_test_client.cmx"
    },
  ]

  tests = [
    {
      name = "getaddrinfo_test"
    },
  ]
}
