# 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("parent_child") {
  testonly = true
  deps = [
    ":defs",
    ":parent_child_test_child_module1",
    ":parent_child_test_child_module2",
    ":parent_child_test_parent_module",
  ]
}

source_set("defs") {
  testonly = true

  sources = [
    "defs.h",
  ]
}

executable_package("parent_child_test_child_module1") {
  testonly = true

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

  sources = [
    "parent_child_test_child_module1.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",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

executable_package("parent_child_test_child_module2") {
  testonly = true

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

  sources = [
    "parent_child_test_child_module2.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",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

executable_package("parent_child_test_parent_module") {
  testonly = true

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

  sources = [
    "parent_child_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",
    "//zircon/public/lib/async-loop-cpp",
  ]
}
