# 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/testing/environments.gni")
import("//peridot/build/tests_package.gni")

group("sessionctl") {
  testonly = true
  deps = [
    ":sessionctl_integration_tests",
    ":sessionctl_test",
  ]
}

executable("sessionctl_test") {
  testonly = true
  output_name = "sessionctl_test"

  sources = [
    "sessionctl_test.cc",
  ]

  deps = [
    "//garnet/public/lib/test_runner/cpp",
    "//peridot/bin/sessionctl:lib",
    "//peridot/public/lib/integration_testing/cpp",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.modular.internal",
    "//sdk/fidl/fuchsia.sys",
    "//sdk/fidl/fuchsia.testing.runner",
    "//sdk/lib/sys/cpp/testing:integration",
    "//src/lib/fxl",
    "//src/lib/fxl/test:gtest_main",
    "//third_party/googletest:gtest",
  ]
}

hermetic_tests_package("sessionctl_integration_tests") {
  deps = [
    ":sessionctl_test",
  ]
  environments = basic_envs
}
