# Copyright 2018 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/components.gni")
import("//build/go/go_library.gni")
import("//build/go/go_test.gni")
import("//build/go/toolchain.gni")
import("//build/testing/environments.gni")

go_library("go") {
  deps = [
    "//sdk/fidl/fuchsia.diagnostics($go_toolchain)",
    "//sdk/fidl/fuchsia.logger($go_toolchain)",
  ]
  sources = [
    "logger.go",
    "logger_test.go",
  ]
}

go_test("syslog_test") {
  gopackages = [ "go.fuchsia.dev/fuchsia/src/lib/syslog/go" ]
  deps = [
    ":go",
    "//src/lib/component($go_toolchain)",
  ]
}

fuchsia_unittest_package("syslog-gotests") {
  manifest = "meta/syslog_test.cml"
  deps = [ ":syslog_test" ]
  test_specs = {
    environments = [ emu_env ]
  }
}

group("tests") {
  testonly = true
  deps = [ ":syslog-gotests" ]
}
