# 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/rust/rustc_test.gni")
import("//build/testing/environments.gni")
import("//build/testing/host_test_data.gni")
import("//src/sys/build/components.gni")

rustc_library("font_info") {
  edition = "2018"

  deps = [
    "//src/fonts/char_set",
    "//src/fonts/freetype_ffi",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:libc",
    "//third_party/rust_crates:thiserror",
  ]

  if (is_fuchsia) {
    deps += [
      "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
      "//sdk/fidl/fuchsia.mem:fuchsia.mem-rustc",
      "//src/lib/zircon/rust:fuchsia-zircon",
    ]
  }

  sources = [
    "src/lib.rs",
    "src/sources.rs",
    "src/vmo_stream.rs",
  ]
}

rustc_test("font_info_test_bin") {
  name = "font_info_test"
  edition = "2018"
  deps = [
    ":font_info",
    "//src/fonts/char_set",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:thiserror",
  ]
  source_root = "tests/tests.rs"
  non_rust_deps = []
  if (is_host) {
    non_rust_deps += [ ":test_data" ]
  }

  sources = [ "tests/tests.rs" ]

  # TODO(fxbug.dev/38228): Fix leak in font_info_test.
  non_rust_deps += [ "//build/config/sanitizers:suppress-lsan.DO-NOT-USE-THIS" ]
}

# Needed for testing on Fuchsia
fuchsia_component("font_info_tests_cmp") {
  testonly = true
  manifest = "meta/font_info_test.cmx"
  component_name = "font_info_test"
  deps = [ ":font_info_test_bin" ]
}

resource("testdata") {
  sources = [ "//src/fonts/test_data/sample_font.ttf" ]
  outputs = [ "data/{{source_file_part}}" ]
}

fuchsia_test_package("font_info_tests") {
  test_components = [ ":font_info_tests_cmp" ]
  deps = [ ":testdata" ]
}

if (is_host) {
  host_test_data("test_data") {
    sources = [ "//src/fonts/test_data/sample_font.ttf" ]
    outputs = [ "$root_out_dir/test_data/font_info/{{source_file_part}}" ]
  }
}

group("tests") {
  testonly = true

  public_deps = [
    ":font_info_test_bin($host_toolchain)",
    ":font_info_tests",
  ]
}
