# Copyright 2021 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/components.gni")

executable("bin") {
  testonly = true
  output_name = "legacy_test_runner"
  sources = [
    "main.cc",
    "runner.cc",
    "runner.h",
    "suite.cc",
    "suite.h",
    "test_component.cc",
    "test_component.h",
  ]

  deps = [
    "//sdk/fidl/fuchsia.component.runner",
    "//sdk/fidl/fuchsia.debugdata",
    "//sdk/fidl/fuchsia.sys2",
    "//sdk/fidl/fuchsia.test",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/sys/cpp/testing:enclosing_environment",
    "//sdk/lib/syslog/cpp",
    "//src/lib/fsl",
    "//src/lib/pkg_url",
    "//src/sys/run_test_component:lib",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/zxc:fitx",
  ]
}

fuchsia_component("legacy_test_runner_cmp") {
  testonly = true
  component_name = "legacy-test-runner"
  deps = [ ":bin" ]
  manifest = "meta/legacy_test_runner.cml"
}

fuchsia_package("legacy-test-runner") {
  testonly = true
  deps = [ ":legacy_test_runner_cmp" ]
}

group("legacy_test") {
  testonly = true
  deps = [ ":legacy-test-runner" ]
}

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