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

rustc_binary("bin") {
  name = "gtest_v1_runner"
  with_unit_tests = true
  edition = "2018"

  deps = [
    "//garnet/lib/rust/io_util",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.process:fuchsia.process-rustc",
    "//sdk/fidl/fuchsia.sys:fuchsia.sys-rustc",
    "//src/lib/by_addr:by_addr",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/sys/lib/library_loader:library_loader",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:thiserror",
  ]

  non_rust_deps = [
    "//zircon/public/lib/async",
    "//zircon/public/lib/sync",
    "//zircon/system/ulib/async-default",
    "//zircon/system/ulib/async-loop",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/memfs",
  ]

  sources = [ "src/main.rs" ]
}

package("gtest_v1_runner") {
  deps = [ ":bin" ]

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

  meta = [
    {
      path = "meta/gtest_v1_runner.cmx"
      dest = "gtest_v1_runner.cmx"
    },
  ]
}

test_package("gtest_v1_runner_unittests") {
  deps = [ ":bin_test" ]

  tests = [
    {
      name = "gtest_v1_runner_bin_test"
      dest = "gtest_v1_runner_unittests"
      environments = basic_envs
    },
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":gtest_v1_runner",
    ":gtest_v1_runner_unittests",
    "tests",
  ]
}
