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

group("embed_shell") {
  testonly = true
  deps = [
    ":defs",
    ":embed_shell_test_child_module",
    ":embed_shell_test_parent_module",
    ":embed_shell_test_session_shell",
    ":embed_shell_test_story_shell",
  ]
}

source_set("defs") {
  testonly = true

  sources = [
    "defs.h",
  ]
}

executable_package("embed_shell_test_child_module") {
  testonly = true

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

  sources = [
    "embed_shell_test_child_module.cc",
  ]

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

executable_package("embed_shell_test_session_shell") {
  testonly = true

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

  sources = [
    "embed_shell_test_session_shell.cc",
  ]

  deps = [
    ":defs",
    "//garnet/public/lib/callback",
    "//peridot/lib/testing:component_main",
    "//peridot/lib/testing:session_shell_base",
    "//peridot/public/lib/integration_testing/cpp",
    "//peridot/tests/common:defs",
    "//sdk/fidl/fuchsia.modular",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

executable_package("embed_shell_test_parent_module") {
  testonly = true

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

  sources = [
    "embed_shell_test_parent_module.cc",
  ]

  deps = [
    ":defs",
    "//garnet/public/lib/callback",
    "//peridot/public/lib/app_driver/cpp:module_driver",
    "//peridot/public/lib/integration_testing/cpp",
    "//peridot/tests/common:defs",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.ui.app",
    "//sdk/fidl/fuchsia.ui.views",
    "//sdk/lib/ui/scenic/cpp",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

executable_package("embed_shell_test_story_shell") {
  testonly = true

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

  sources = [
    "embed_shell_test_story_shell.cc",
  ]

  deps = [
    ":defs",
    "//peridot/lib/fidl:array_to_string",
    "//peridot/lib/rapidjson",
    "//peridot/lib/testing:component_base",
    "//peridot/public/lib/app_driver/cpp",
    "//peridot/public/lib/integration_testing/cpp",
    "//peridot/tests/common:defs",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.testing.runner",
    "//sdk/fidl/fuchsia.ui.views",
    "//sdk/lib/fidl/cpp",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
  ]
}
