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

dart_library("fuchsia_logger") {
  package_name = "fuchsia_logger"
  null_safe = true

  sdk_category = "partner"

  source_dir = "lib"

  sources = [
    "logger.dart",
    "src/internal/_fuchsia_log_writer.dart",
    "src/internal/_log_message.dart",
    "src/internal/_log_writer.dart",
    "src/internal/_stdout_log_writer.dart",
    "src/logger/logger.dart",
  ]

  deps = [
    "//sdk/dart/fuchsia_services",
    "//sdk/dart/zircon",
    "//sdk/fidl/fuchsia.logger",
    "//third_party/dart-pkg/pub/collection",
    "//third_party/dart-pkg/pub/logging",
    "//third_party/dart-pkg/pub/meta",
  ]
}

# Runs these tests using:
#   fx run-host-tests fuchsia_logger_package_unittests
dart_test("fuchsia_logger_package_unittests") {
  sources = [
    "internal/log_message_test.dart",
    "internal/log_writer_test.dart",
    "internal/stdout_log_writer_test.dart",
  ]

  deps = [
    ":fuchsia_logger",
    "//sdk/dart/zircon",
    "//sdk/fidl/fuchsia.logger",
    "//third_party/dart-pkg/pub/logging",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
  ]
}
