# 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")
import("//build/testing/environments.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"
      environments = basic_envs
    },
  ]
}

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" ]
}
