# 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/components.gni")
import("//tools/fidl/measure-tape/measure_tape.gni")

measure_tape("measure_tape_for_case") {
  fidls = [ "//sdk/fidl/fuchsia.test" ]
  target_type = "fuchsia.test/Case"
  target_binding = "hlcpp"
}

source_set("test_suite_lib") {
  sources = [
    "test_suite.cc",
    "test_suite.h",
  ]

  public_deps = [
    ":measure_tape_for_case",
    "//sdk/fidl/fuchsia.test",
    "//sdk/lib/sys/cpp",
    "//src/lib/fxl",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

executable("passing-test-example-bin") {
  output_name = "passing-test-example"
  deps = [ ":test_suite_lib" ]
  sources = [ "passing_test_example.cc" ]
}

executable("no-onfinished-after-test-example-bin") {
  output_name = "no-onfinished-after-test-example"
  deps = [ ":test_suite_lib" ]
  sources = [ "no_onfinished_after_test_example.cc" ]
}

executable("disabled-test-example-bin") {
  output_name = "disabled-test-example"
  deps = [ ":test_suite_lib" ]
  sources = [ "disabled_test_example.cc" ]
}

executable("failing-test-example-bin") {
  output_name = "failing-test-example"
  deps = [ ":test_suite_lib" ]
  sources = [ "failing_test_example.cc" ]
}

executable("incomplete-test-example-bin") {
  output_name = "incomplete-test-example"
  deps = [ ":test_suite_lib" ]
  sources = [ "incomplete_test_example.cc" ]
}

executable("invalid-test-example-bin") {
  output_name = "invalid-test-example"
  deps = [ ":test_suite_lib" ]
  sources = [ "invalid_test_example.cc" ]
}

executable("no-test-example-bin") {
  output_name = "no-test-example"
  deps = [ ":test_suite_lib" ]
  sources = [ "no_test_example.cc" ]
}

executable("huge-test-example-bin") {
  output_name = "huge-test-example"
  deps = [ ":test_suite_lib" ]
  sources = [ "huge_test_example.cc" ]
}

executable("get-tests-hangs-example-bin") {
  output_name = "get-tests-hangs-example"
  deps = [ ":test_suite_lib" ]
  sources = [ "get_tests_hangs_example.cc" ]
}

executable("get-tests-closes-channel-example-bin") {
  output_name = "get-tests-closes-channel-example"
  deps = [ ":test_suite_lib" ]
  sources = [ "get_tests_closes_channel_example.cc" ]
}

executable("run-hangs-example-bin") {
  output_name = "run-hangs-example"
  deps = [ ":test_suite_lib" ]
  sources = [ "run_hangs_example.cc" ]
}

executable("run-closes-channel-example-bin") {
  output_name = "run-closes-channel-example"
  deps = [ ":test_suite_lib" ]
  sources = [ "run_closes_channel_example.cc" ]
}

fuchsia_component("disabled-test-example") {
  deps = [ ":disabled-test-example-bin" ]
  manifest = "meta/disabled-test-example.cml"
}

fuchsia_component("failing-test-example") {
  deps = [ ":failing-test-example-bin" ]
  manifest = "meta/failing-test-example.cml"
}

fuchsia_component("get-tests-closes-channel-example") {
  deps = [ ":get-tests-closes-channel-example-bin" ]
  manifest = "meta/get-tests-closes-channel-example.cmx"
}

fuchsia_component("get-tests-hangs-example") {
  deps = [ ":get-tests-hangs-example-bin" ]
  manifest = "meta/get-tests-hangs-example.cmx"
}

fuchsia_component("huge-test-example") {
  deps = [ ":huge-test-example-bin" ]
  manifest = "meta/huge-test-example.cml"
}

fuchsia_component("incomplete-test-example") {
  deps = [ ":incomplete-test-example-bin" ]
  manifest = "meta/incomplete-test-example.cml"
}

fuchsia_component("invalid-test-example") {
  deps = [ ":invalid-test-example-bin" ]
  manifest = "meta/invalid-test-example.cml"
}

fuchsia_component("no-onfinished-after-test-example") {
  deps = [ ":no-onfinished-after-test-example-bin" ]
  manifest = "meta/no-onfinished-after-test-example.cml"
}

fuchsia_component("no-test-example") {
  deps = [ ":no-test-example-bin" ]
  manifest = "meta/no-test-example.cml"
}

fuchsia_component("passing-test-example") {
  deps = [ ":passing-test-example-bin" ]
  manifest = "meta/passing-test-example.cml"
}

fuchsia_component("passing-test-example-v1") {
  deps = [ ":passing-test-example-bin" ]
  manifest = "meta/passing-test-example.cmx"
}

fuchsia_component("run-closes-channel-example") {
  deps = [ ":run-closes-channel-example-bin" ]
  manifest = "meta/run-closes-channel-example.cmx"
}

fuchsia_component("run-hangs-example") {
  deps = [ ":run-hangs-example-bin" ]
  manifest = "meta/run-hangs-example.cmx"
}

fuchsia_component("echo_test_client") {
  deps = [ "rust:echo_test_client" ]
  manifest = "meta/echo_test_client.cml"
}

fuchsia_component("echo_test_realm") {
  manifest = "meta/echo_test_realm.cml"
}

fuchsia_test_package("example-tests") {
  test_components = [ ":echo_test_realm" ]
  deps = [
    ":disabled-test-example",
    ":echo_test_client",
    ":failing-test-example",
    ":get-tests-closes-channel-example",
    ":get-tests-hangs-example",
    ":huge-test-example",
    ":incomplete-test-example",
    ":invalid-test-example",
    ":no-onfinished-after-test-example",
    ":no-test-example",
    ":passing-test-example",
    ":passing-test-example-v1",
    ":run-closes-channel-example",
    ":run-hangs-example",
    "//examples/components/routing/echo_server:echo_server_component",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":example-tests",
    "rust:tests",
  ]
}
