# Copyright 2020 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_test.gni")
import("//build/test/test_package.gni")

group("integration") {
  testonly = true
  deps = [ ":font_provider_integration_tests" ]
}

# Integration tests without a `main()` function.
rustc_test("font_provider_integration_tests_bin") {
  name = "font_provider_integration_tests"
  edition = "2018"
  deps = [
    "//garnet/lib/rust/fidl_fuchsia_fonts_ext",
    "//sdk/fidl/fuchsia.fonts:fuchsia.fonts-rustc",
    "//sdk/fidl/fuchsia.fonts.experimental:fuchsia.fonts.experimental-rustc",
    "//sdk/fidl/fuchsia.intl:fuchsia.intl-rustc",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.pkg:fuchsia.pkg-rustc",
    "//src/fonts/char_set",
    "//src/fonts/manifest",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-url",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:itertools",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:thiserror",
  ]
  visibility = [ ":*" ]

  sources = [
    "src/experimental_api/get_typeface_by_id.rs",
    "src/experimental_api/get_typefaces_by_family.rs",
    "src/experimental_api/list_typefaces.rs",
    "src/experimental_api/mod.rs",
    "src/experimental_api/util/mod.rs",
    "src/lib.rs",
    "src/old_api/mod.rs",
    "src/reviewed_api/ephemeral.rs",
    "src/reviewed_api/get_font_family_info.rs",
    "src/reviewed_api/get_typeface.rs",
    "src/reviewed_api/mod.rs",
    "src/reviewed_api/util/mod.rs",
    "src/util.rs",
  ]
}

# Generate arg-specialized manifests for font_provider_integration_test

cmx_merge("fonts_with_ephemeral_fonts_cml") {
  sources = [
    rebase_path("../../meta/fonts.cml"),
    rebase_path("meta/ephemeral_fonts_shard.cml"),
  ]
  output_name = "fonts_with_ephemeral_fonts.cml"
}

cmx_merge("fonts_with_aliases_fonts_cml") {
  sources = [
    rebase_path("../../meta/fonts.cml"),
    rebase_path("meta/aliases_fonts_shard.cml"),
  ]
  output_name = "fonts_with_aliases_fonts.cml"
}

cmx_merge("fonts_with_small_fonts_cml") {
  sources = [
    rebase_path("../../meta/fonts.cml"),
    rebase_path("meta/small_fonts_shard.cml"),
  ]
  output_name = "fonts_with_small_fonts.cml"
}

cmx_merge("fonts_with_medium_fonts_cml") {
  sources = [
    rebase_path("../../meta/fonts.cml"),
    rebase_path("meta/medium_fonts_shard.cml"),
  ]
  output_name = "fonts_with_medium_fonts.cml"
}

cmx_merge("fonts_with_large_fonts_cml") {
  sources = [
    rebase_path("../../meta/fonts.cml"),
    rebase_path("meta/large_fonts_shard.cml"),
  ]
  output_name = "fonts_with_large_fonts.cml"
}

test_package("font_provider_integration_tests") {
  deps = [
    ":font_provider_integration_tests_bin",
    ":fonts_with_aliases_fonts_cml",
    ":fonts_with_ephemeral_fonts_cml",
    ":fonts_with_large_fonts_cml",
    ":fonts_with_medium_fonts_cml",
    ":fonts_with_small_fonts_cml",
    "//src/fonts:font_provider",
    "//src/fonts/collections:test-fonts-large-collection",
    "//src/fonts/collections:test-fonts-medium-collection",
    "//src/fonts/collections:test-fonts-small-collection",
    "//src/fonts/testing/mock_font_resolver:mock_font_resolver_bin",
  ]

  meta = [
    {
      path = rebase_path("${target_out_dir}/fonts_with_ephemeral_fonts.cml")
      dest = "fonts_with_ephemeral_fonts.cm"
    },
    {
      path = rebase_path("${target_out_dir}/fonts_with_aliases_fonts.cml")
      dest = "fonts_with_aliases_fonts.cm"
    },
    {
      path = rebase_path("${target_out_dir}/fonts_with_small_fonts.cml")
      dest = "fonts_with_small_fonts.cm"
    },
    {
      path = rebase_path("${target_out_dir}/fonts_with_medium_fonts.cml")
      dest = "fonts_with_medium_fonts.cm"
    },
    {
      path = rebase_path("${target_out_dir}/fonts_with_large_fonts.cml")
      dest = "fonts_with_large_fonts.cm"
    },
    {
      path = rebase_path(
              "../../testing/mock_font_resolver/meta/mock_font_resolver.cml")
      dest = "mock_font_resolver.cm"
    },
    {
      path = rebase_path("meta/font_provider_integration_tests_driver.cml")
      dest = "test_driver.cm"
    },
  ]

  binaries = [
    {
      name = "mock_font_resolver"
    },
    {
      name = "font_provider"
    },
  ]

  v2_tests = [
    {
      name = "font_provider_integration_tests"
      environments = basic_envs
    },
  ]

  resources = [
    {
      path = rebase_path("ephemeral.font_manifest.json")
      dest = "testdata/ephemeral.font_manifest.json"
    },
    {
      path = rebase_path("aliases.font_manifest.json")
      dest = "testdata/aliases.font_manifest.json"
    },
  ]
}
