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

import("//build/dist/distribution_manifest.gni")
import("//src/tests/fidl/conformance_suite/gidl-conformance-suite.gni")
import("//tools/fidl/gidl/gidl.gni")

#
# Fuzzer
#

# TODO(65098): Implement fuzzer that uses corpus below.

#
# Corpus
#

conformance_test_source = "$target_gen_dir/corpus.distribution_entries"

gidl("generate_conformance_test") {
  type = "conformance"
  language = "fuzzer_corpus"
  inputs = conformance_suite_gidl_files
  fidl = conformance_suite_fidl_target
  output = conformance_test_source
  extra_args = [
    "--fuzzer-corpus-dir",
    rebase_path("$target_gen_dir/corpus", root_build_dir),
  ]
  testonly = true
}

distribution_entries_file("conformance_test_distribution_entries_file") {
  file = conformance_test_source
  deps = [ ":generate_conformance_test" ]
  testonly = true
}

distribution_manifest("conformance_test_distribution_manifest") {
  deps = [ ":conformance_test_distribution_entries_file" ]
  testonly = true
}

group("tests") {
  testonly = true
  deps = [ ":conformance_test_distribution_manifest" ]
}
