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

test("framework-integration-tests") {
  output_name = "component_fuzzing_framework_tests"
  sources = [ "framework-integration-test.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",
  ]
}

executable("fuzzer") {
  testonly = true
  output_name = "component_fuzzing_framework_test_fuzzer"
  sources = [ "fuzzer.cc" ]
  deps = [
    "//src/sys/fuzzing/common/testing:sanitizer",
    "//src/sys/fuzzing/framework/adapters:llvm",
    "//src/sys/fuzzing/framework/target",
  ]
  exclude_toolchain_tags = [ "instrumented" ]
}

executable("fuzzer-uninstrumented") {
  testonly = true
  output_name = "component_fuzzing_framework_test_fuzzer_uninstrumented"
  sources = [ "fuzzer.cc" ]
  deps = [ "//src/sys/fuzzing/framework/adapters:llvm" ]
  exclude_toolchain_tags = [ "instrumented" ]
}
