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

group("test") {
  testonly = true
  deps = [
    ":syslog",
    ":syslog-bootfs-test",
    ":syslog-static",
    ":syslog-static-bootfs-test",
  ]
}

test("syslog") {
  output_name = "syslog-test"
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [
    "syslog_socket_tests.cc",
    "syslog_tests.cc",
  ]
  deps = [
    "//sdk/fidl/fuchsia.logger:fuchsia.logger_llcpp",
    "//sdk/lib/fdio",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/syslog",
    "//zircon/system/ulib/syslog:helpers",
  ]
}

test("syslog-static") {
  output_name = "syslog-static-test"
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [
    "syslog_socket_tests.cc",
    "syslog_tests.cc",
  ]
  deps = [
    "//sdk/fidl/fuchsia.logger:fuchsia.logger_llcpp",
    "//sdk/lib/fdio",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/syslog:helpers",
    "//zircon/system/ulib/syslog:syslog-static",
  ]
  defines = [ "SYSLOG_STATIC" ]
}

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

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