# Copyright 2018 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/fuzzing/fuzzer.gni")
import("//build/package.gni")
import("//build/test/test_package.gni")

source_set("pkg_url") {
  sources = [
    "fuchsia_pkg_url.cc",
    "fuchsia_pkg_url.h",
    "url_resolver.cc",
    "url_resolver.h",
  ]

  public_deps = [ "//src/lib/fxl" ]
}

executable("tests") {
  testonly = true

  output_name = "pkg_url_unittests"

  sources = [
    "fuchsia_pkg_url_unittest.cc",
    "url_resolver_unittest.cc",
  ]

  deps = [
    ":pkg_url",
    "//src/lib/fxl/test:gtest_main",
  ]
}

test_package("pkg_url_unittests") {
  deps = [ ":tests" ]
  tests = [
    {
      name = "pkg_url_unittests"
    },
  ]
}

fuzzers_package("pkg_url_fuzzers") {
  fuzzers = [
    ":fuchsia_pkg_url_fuzzer",
    ":url_resolver_fuzzer",
  ]
}

fuzzer("fuchsia_pkg_url_fuzzer") {
  sources = [ "fuchsia_pkg_url_fuzztest.cc" ]
  deps = [ ":pkg_url" ]
}

fuzzer("url_resolver_fuzzer") {
  sources = [ "url_resolver_fuzztest.cc" ]
  deps = [ ":pkg_url" ]
}
