# 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("//build/package.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

group("test") {
  testonly = true
  deps = [
    ":config_test",
    ":sysmgr_tests",
  ]
}

executable("config_test") {
  testonly = true
  output_name = "config_test"
  sources = [
    "config_test.cc",
  ]
  deps = [
    "//garnet/bin/sysmgr:lib",
    "//src/lib/fxl",
    "//src/lib/fxl/test:gtest_main",
    "//third_party/googletest:gmock",
  ]
}

test_package("sysmgr_tests") {
  deps = [
    ":config_test",
  ]

  tests = [
    {
      name = "config_test"
      environments = basic_envs
    },
  ]
}
