# Copyright 2017 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")

package("cloud_provider_firestore") {
  deps = [
    "app",
    "//peridot/bin/ledger/cobalt:ledger_metrics_registry",
  ]

  resources = [
    {
      path =
          rebase_path(get_label_info(
                          "//peridot/bin/ledger/cobalt:ledger_metrics_registry",
                          "target_gen_dir") + "/ledger_metrics_registry.pb")
      dest = "firebase_auth_ledger_metrics_config.pb"
    },
  ]

  binary = "cloud_provider_firestore"

  meta = [
    {
      path = rebase_path("app/meta/cloud_provider_firestore.cmx")
      dest = "cloud_provider_firestore.cmx"
    },
  ]
}

executable("unittests") {
  testonly = true

  output_name = "cloud_provider_firestore_unittests"

  deps = [
    "//peridot/bin/cloud_provider_firestore/app:unittests",
    "//peridot/bin/cloud_provider_firestore/firestore:unittests",
    "//peridot/bin/cloud_provider_firestore/grpc:unittests",
    "//third_party/googletest:gtest_main",
  ]
}

group("tests") {
  testonly = true

  public_deps = [
    ":unittests",
    "//peridot/bin/cloud_provider_firestore/validation",
  ]
}
