# 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/package.gni")

source_set("mime_sniffer") {
  sources = [
    "mime_sniffer.cc",
    "mime_sniffer.h",
  ]
  public_deps = [
    "//garnet/public/lib/fxl",
  ]
}

executable("unittests") {
  testonly = true
  output_name = "mime_sniffer_unittests"
  sources = [
    "mime_sniffer_unittest.cc",
  ]

  deps = [
    ":mime_sniffer",
    "//third_party/googletest:gtest_main",
  ]
}

package("mime_sniffer_unittests") {
  testonly = true

  deps = [
    ":unittests",
  ]

  tests = [
    {
      name = "mime_sniffer_unittests"
    },
  ]
}
