# Copyright 2019 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/rust/rustc_library.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

# Library for working with Font Provider font manifests.
rustc_library("manifest") {
  edition = "2018"
  with_unit_tests = true

  deps = [
    "//garnet/lib/rust/fidl_fuchsia_fonts_ext",
    "//sdk/fidl/fuchsia.fonts:fuchsia.fonts-rustc",
    "//src/fonts/char_set",
    "//src/fonts/offset_string",
    "//src/lib/error/clonable_error",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-url",
    "//src/lib/intl/unicode_utils/char_collection",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:itertools",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:regex",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:thiserror",
    "//third_party/rust_crates:unic-char-range",
    "//third_party/rust_crates:unicase",
  ]

  test_deps = [
    "//third_party/rust_crates:matches",
    "//third_party/rust_crates:pretty_assertions",
  ]

  sources = [
    "src/lib.rs",
    "src/serde_ext.rs",
    "src/v1_to_v2.rs",
    "src/v2.rs",
  ]
}

test_package("manifest_tests") {
  deps = [ ":manifest_test" ]

  tests = [
    {
      name = "manifest_lib_test"
      environments = basic_envs
    },
  ]
}

# The host target is called `manifest_test`, but the binary's name is `manifest_lib_test`.
#
# fx run-host-tests manifest_lib_test # Host
# fx run-test manifest_tests          # Fuchsia
group("tests") {
  testonly = true
  public_deps = [
    ":manifest_test($host_toolchain)",
    ":manifest_tests",
  ]
}
