# 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/components.gni")

group("cobalt") {
  testonly = true
  deps = [
    ":cobalt_lib_tests",
    ":tests",
    ":unittests",
  ]
}

executable("unittests") {
  testonly = true
  output_name = "cobalt_lib_unittests"

  deps = [
    "//src/lib/cobalt/cpp:unittests",
    "//src/lib/fxl/test:gtest_main",
  ]
}

fuchsia_unittest_component("cobalt_lib_unittests") {
  deps = [ ":unittests" ]
  manifest = "meta/cobalt_lib_unittests.cml"
}

fuchsia_unittest_component("fuchsia_cobalt_builders_lib_test") {
  deps = [ "//src/lib/cobalt/rust/builders:builders_test" ]
}

fuchsia_test_package("cobalt_lib_tests") {
  test_components = [
    ":cobalt_lib_unittests",
    ":fuchsia_cobalt_builders_lib_test",
  ]
  test_specs = {
    log_settings = {
      max_severity = "FATAL"
    }
  }
}

group("tests") {
  testonly = true

  deps = [ ":cobalt_lib_tests" ]
}
