# 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 = [
    ":registry-integration-tests",
    "//src/sys/fuzzing/registry",
  ]
}

test("integration-tests-bin") {
  output_name = "registry_integration_tests"
  testonly = true
  sources = [ "integration-tests.cc" ]
  deps = [
    "//sdk/lib/fdio",
    "//sdk/lib/sys/cpp",
    "//src/lib/fxl",
    "//src/lib/fxl/test:gtest_main",
    "//src/sys/fuzzing/common",
    "//src/sys/fuzzing/common/testing",
    "//src/sys/fuzzing/fidl:fuchsia.fuzzer",
    "//third_party/googletest:gtest",
    "//zircon/system/ulib/sync",
  ]
}

fuchsia_test_component("integration-tests") {
  visibility = [ ":*" ]
  manifest = "meta/integration-tests.cml"
  deps = [
    ":integration-tests-bin",
    "//src/sys/fuzzing/common/testing:fuzzer",
  ]
}

fuchsia_test_component("test-realm") {
  visibility = [ ":*" ]
  manifest = "meta/test-realm.cml"
  deps = [ ":integration-tests" ]
}

fuchsia_test_package("registry-integration-tests") {
  test_components = [ ":test-realm" ]
  deps = [ "//src/sys/fuzzing/registry:fuzz-registry" ]
}
