# 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/test.gni")
import("//build/testing/bootfs_test.gni")

test("svchost") {
  output_name = "svchost-test"
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "main.cc" ]
  deps = [
    "//sdk/fidl/fuchsia.boot:fuchsia.boot_c",
    "//sdk/fidl/fuchsia.kernel:fuchsia.kernel_c",
    "//sdk/fidl/fuchsia.kernel:fuchsia.kernel_llcpp",
    "//sdk/fidl/fuchsia.scheduler:fuchsia.scheduler_c",
    "//sdk/lib/fdio",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
  ]
}

bootfs_test("svchost-bootfs-test") {
  name = "svchost-test"
  deps = [ ":svchost" ]
}
