# 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("//peridot/build/executable_package.gni")

source_set("defs") {
  testonly = true

  sources = [
    "defs.h",
  ]
}

executable_package("link_context_entities_test_session_shell") {
  testonly = true

  meta = [
    {
      path = "meta/link_context_entities_test_session_shell.cmx"
      dest = "link_context_entities_test_session_shell.cmx"
    },
  ]

  sources = [
    "link_context_entities_test_session_shell.cc",
  ]

  deps = [
    ":defs",
    "//garnet/public/fidl/fuchsia.testing.runner",
    "//garnet/public/fidl/fuchsia.ui.viewsv1",
    "//garnet/public/lib/fidl/cpp",
    "//garnet/public/lib/fxl",
    "//peridot/lib/fidl:array_to_string",
    "//peridot/lib/fidl:single_service_app",
    "//peridot/lib/rapidjson",
    "//peridot/lib/testing:component_main",
    "//peridot/lib/testing:session_shell_base",
    "//peridot/public/fidl/fuchsia.modular",
    "//peridot/public/lib/context/cpp:context_helper",
    "//peridot/public/lib/fostr/fidl/fuchsia.modular",
    "//peridot/public/lib/integration_testing/cpp",
    "//peridot/tests/common:defs",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

executable_package("link_context_entities_test_module") {
  testonly = true

  meta = [
    {
      path = "meta/link_context_entities_test_module.cmx"
      dest = "link_context_entities_test_module.cmx"
    },
  ]

  sources = [
    "link_context_entities_test_module.cc",
  ]

  deps = [
    ":defs",
    "//garnet/public/fidl/fuchsia.ui.viewsv1",
    "//peridot/lib/testing:component_base",
    "//peridot/public/fidl/fuchsia.modular",
    "//peridot/public/lib/app_driver/cpp:module_driver",
    "//peridot/public/lib/integration_testing/cpp",
    "//peridot/tests/common:defs",
    "//zircon/public/lib/async-loop-cpp",
  ]
}
