# Copyright 2020 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/test.gni")

static_library("debug_adapter") {
  sources = [
    "context.cc",
    "context.h",
    "handlers/request_attach.cc",
    "handlers/request_attach.h",
    "handlers/request_breakpoint.cc",
    "handlers/request_breakpoint.h",
    "handlers/request_continue.cc",
    "handlers/request_continue.h",
    "handlers/request_launch.cc",
    "handlers/request_launch.h",
    "handlers/request_next.cc",
    "handlers/request_next.h",
    "handlers/request_pause.cc",
    "handlers/request_pause.h",
    "handlers/request_stacktrace.cc",
    "handlers/request_stacktrace.h",
    "handlers/request_threads.cc",
    "handlers/request_threads.h",
    "server.cc",
    "server.h",
  ]

  deps = []
  public_deps = [
    "//src/developer/debug/zxdb/client",
    "//third_party/github.com/google/cppdap",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

source_set("tests") {
  testonly = true
  sources = [
    "context_test.cc",
    "context_test.h",
    "context_unittest.cc",
    "handlers/request_attach_unittest.cc",
    "handlers/request_breakpoint_unittest.cc",
    "handlers/request_continue_unittest.cc",
    "handlers/request_launch_unittest.cc",
    "handlers/request_next_unittest.cc",
    "handlers/request_pause_unittest.cc",
    "handlers/request_stacktrace_unittest.cc",
    "handlers/request_threads_unittest.cc",
    "server_unittest.cc",
  ]
  deps = [
    ":debug_adapter",
    "//src/developer/debug/zxdb/client:test_support",
    "//src/developer/debug/zxdb/common:test_support",
    "//third_party/googletest:gtest",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}
