# 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",
    "fidl",
    "integration_testing",
    "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/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",
  ]
}
