# 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/package.gni")
import("//src/sys/build/fuchsia_unittest_package.gni")

source_set("lib") {
  sources = [
    "app.cc",
    "app.h",
    "command.cc",
    "command.h",
    "console.cc",
    "console.h",
    "executor.cc",
    "executor.h",
    "scoped_interpreter.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.hardware.pty:fuchsia.hardware.pty_llcpp",
    "//sdk/lib/syslog/cpp",
    "//src/developer/shell/common",
    "//src/developer/shell/fidl/fuchsia.shell:shell_llcpp",
    "//src/developer/shell/interpreter:shell_server_lib",
    "//src/developer/shell/parser",
    "//src/lib/fsl",
    "//src/lib/line_input",
    "//zircon/public/lib/async-cpp",
    "//zircon/system/ulib/cmdline",
  ]
}

executable("bin") {
  output_name = "cliff"

  sources = [ "main.cc" ]

  deps = [
    ":lib",
    "//sdk/lib/syslog/cpp",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
  ]
}

executable("console_unittests_bin") {
  testonly = true

  sources = [
    "app_unittest.cc",
    "command_unittest.cc",
    "executor_unittest.cc",
  ]

  deps = [
    ":lib",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/loop_fixture",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

fuchsia_unittest_package("shell-console-unittests") {
  executable_path = "bin/console_unittests_bin"
  deps = [ ":console_unittests_bin" ]
}
