# 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("$zx_build/public/gn/migrated_targets.gni")

zx_library("zxtest") {
  host = true
  sdk = "source"
  sdk_headers = [
    "zxtest/base/assertion.h",
    "zxtest/base/environment.h",
    "zxtest/base/event-broadcaster.h",
    "zxtest/base/log-sink.h",
    "zxtest/base/observer.h",
    "zxtest/base/test-case.h",
    "zxtest/base/test-driver.h",
    "zxtest/base/test-info.h",
    "zxtest/base/test-internal.h",
    "zxtest/base/test.h",
    "zxtest/base/types.h",
    "zxtest/base/runner.h",
  ]
  sdk_migrated = true
  sources = [
    "assertion.cc",
    "c-wrappers.cc",
    "event-broadcaster.cc",
    "file-log-sink.cc",
    "reporter.cc",
    "runner-options.cc",
    "runner.cc",
    "test-case.cc",
    "test-info.cc",
    "test.cc",
    "zxtest-main.cc",
  ]
  public_deps = [
    # Needed for <fbl/string.h>, <fbl/vector.h> and <fbl/function.h>.
    "$zx/system/ulib/fbl:headers",
    "$zx/system/ulib/fit:headers",
    "$zx/system/ulib/zircon:headers",
  ]
  deps = [
    "$zx/system/ulib/fbl",
    "$zx/system/ulib/fit",
  ]
  if (is_fuchsia) {
    sources += [ "death-statement.cc" ]

    public_deps += [
      # Needed for <zircon/status.h>
      "$zx/system/ulib/zircon:headers",

      # Needed for <lib/zx/*>, death-statements.h
      "$zx/system/ulib/fit:headers",
      "$zx/system/ulib/zx:headers",
    ]

    deps += [
      "$zx/system/ulib/zircon",
      "$zx/system/ulib/zx",
    ]
  }
}

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