# Copyright 2019 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/component/config.gni")
import("//build/package.gni")

component_config("component_manager_config") {
  sources = [ "config.json" ]
}

package("component_manager_for_test_pkg") {
  deps = [
    ":component_manager_config",
    "//src/sys/component_manager:bin",
  ]
  package_name = "component_manager_for_test"

  resources = [
    {
      path = "${target_gen_dir}/component_manager_config"
      dest = "component_manager_config"
    },
  ]

  binaries = [
    {
      name = "component_manager"
    },
  ]

  meta = [
    {
      path = rebase_path("meta/component_manager_for_test.cmx")
      dest = "component_manager_for_test.cmx"
    },
  ]
}

group("tests") {
  testonly = true
  deps = [ "tests" ]
}

group("component_manager_for_test") {
  testonly = true
  deps = [
    ":component_manager_for_test_pkg",
    "//src/sys/test_manager",
  ]
}
