# Copyright 2016 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/fidl/fidl.gni")
import("//build/fidl/toolchain.gni")

group("lib") {
  testonly = true
  deps = [
    ":just_fidl",
    ":services",
    "app_driver",
    "async",
    "base64url",
    "common",
    "device_info",
    "fidl",
    "integration_testing",
    "ledger_client",
    "lifecycle",
    "pseudo_dir",
    "scoped_tmpfs",
    "testing",
  ]
}

group("services") {
  deps = [ "//sdk/fidl/fuchsia.modular" ]
}

group("just_fidl") {
  deps = [ "//sdk/fidl/fuchsia.modular($fidl_toolchain)" ]
}

executable("modular_lib_unittests") {
  testonly = true

  deps = [
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/lib/async/cpp:unittests",
    "//src/modular/lib/base64url:unittests",
    "//src/modular/lib/fidl:unittests",
    "//src/modular/lib/ledger_client:unittests",
    "//src/modular/lib/modular_config:unittests",
    "//src/modular/lib/modular_test_harness/cpp:unittests",
    "//src/modular/lib/pseudo_dir:unittests",
    "//src/modular/lib/scoped_tmpfs:unittests",
    "//src/modular/lib/string_escape:unittests",
  ]
}
