# Copyright 2020 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.

group("diagnostics") {
  deps = [
    "//src/lib/diagnostics/accessor2logger",
    "//src/lib/diagnostics/data",
    "//src/lib/diagnostics/hierarchy",
    "//src/lib/diagnostics/log",
    "//src/lib/diagnostics/reader",
    "//src/lib/diagnostics/testing",
  ]
}

group("tests") {
  testonly = true
  deps = [
    "//src/lib/diagnostics/accessor2logger/tests",
    "//src/lib/diagnostics/data:tests",
    "//src/lib/diagnostics/hierarchy:tests",
    "//src/lib/diagnostics/inspect:tests",
    "//src/lib/diagnostics/log:tests",
    "//src/lib/diagnostics/reader:tests",
    "//src/lib/diagnostics/testing:tests",
  ]
}
