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

##########################################
# Though under //zircon, this build file #
# is meant to be used in the Fuchsia GN  #
# build.                                 #
# See fxbug.dev/36139.                   #
##########################################

assert(!defined(zx) || zx != "/",
       "This file can only be used in the Fuchsia GN build.")

import("//build/package.gni")
import("//build/test.gni")

test("stdio-test") {
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [
    "stdio.c",
    "util.c",
  ]
  deps = [
    "//sdk/lib/fdio",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/elfload",
    "//zircon/system/ulib/runtime",
    "//zircon/system/ulib/test-utils",
  ]
}

executable("stdio-test-util") {
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "test-util.cc" ]
  deps = [ "//sdk/lib/fdio" ]
}

package("stdio-test-package") {
  testonly = true

  deps = [
    ":stdio-test",
    ":stdio-test-util",
  ]

  meta = [
    {
      path = "stdio-test.cmx"
      dest = "stdio-test.cmx"
    },
  ]

  tests = [
    {
      name = "stdio-test"
    },
  ]

  binaries = [
    {
      name = "stdio-test-util"
      dest = "stdio-test-util"
    },
  ]
}
