# Copyright 2021 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/test.gni")

group("tests") {
  testonly = true
  deps = [
    ":fatal-unittests-pkg",
    ":unittests-pkg",
    "tests",
  ]
}

# This package contains "normal" unit tests.

test("unittests-bin") {
  output_name = "component_fuzzing_framework_unittests"
  visibility = [ ":*" ]
  testonly = true
  deps = [
    "adapters:unittests",
    "coverage:unittests",
    "engine:unittests",
    "target:unittests",
    "//src/lib/fxl/test:gtest_main",
  ]
}

fuchsia_test_component("unittests") {
  manifest = "meta/unittests.cml"
  deps = [
    ":unittests-bin",
    "testing/data:corpus",
  ]
}

fuchsia_test_package("unittests-pkg") {
  package_name = "component-fuzzing-framework-tests"
  test_components = [ ":unittests" ]
}

# This package contains unit tests that produce fatal error messages.

test("fatal-unittests-bin") {
  output_name = "component_fuzzing_framework_fatal_unittests"
  visibility = [ "../*" ]
  testonly = true
  deps = [
    "engine:fatal-unittests",
    "//src/lib/fxl/test:gtest_main",
  ]
}

fuchsia_test_component("fatal-unittests") {
  manifest = "meta/fatal-unittests.cml"
  deps = [ ":fatal-unittests-bin" ]
}

fuchsia_test_package("fatal-unittests-pkg") {
  package_name = "component-fuzzing-framework-fatal-tests"

  # Some tests involve handling intentional crashes.
  test_specs = {
    log_settings = {
      max_severity = "FATAL"
    }
  }
  test_components = [ ":fatal-unittests" ]
}
