# 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")

# TODO(MF-206): all of the following should be moved to components. In the
# future, only run-integration-tests should remain as a shell=true binary.

group("test_runner") {
  testonly = true
  deps = [
    ":run_integration_tests",
    ":run_test",
    ":test_runner_tests",
    "report_result",
    "run_integration_tests",
    "run_test",
    "test",
  ]
}

package("run_integration_tests") {
  deps = [
    "report_result",
    "run_integration_tests",
  ]

  binaries = [
    {
      name = "report_result"
      shell = true
    },
    {
      name = "run_integration_tests"
      shell = true
    },
  ]
}

package("run_test") {
  deps = [
    "run_test",
  ]

  binaries = [
    {
      name = "run_test"
      shell = true
    },
  ]
}

package("test_runner_tests") {
  testonly = true

  deps = [
    "test",
  ]

  binaries = [
    {
      name = "fake_command"
      shell = true
    },
    {
      name = "fake_failing_test"
      shell = true
    },
    {
      name = "fake_passing_test"
      shell = true
    },
  ]
}
