# 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("//cts/build/cts.gni")

# This is a simple example and should not be copied directly.
#
# TODO(johnshamoon): Add documentation to describe what this example is doing
# and how a developer could use these templates to add their own CTS tests.
cts_source_set("my-cts-source-set") {
  sources = [ "//cts/tests/hello_world/hello_world_util.h" ]
  testonly = true
}

cts_executable("my-cts-test") {
  deps = [
    ":my-cts-source-set",
    "//zircon/public/lib/zxtest",
  ]
  sources = [ "//cts/tests/hello_world/hello_world_cts.cc" ]
  testonly = true
}

cts_component("my-cts-component") {
  deps = [ ":my-cts-test" ]
  manifest = "meta/my-cts-test.cmx"
  testonly = true
}

cts_test_package("my-cts-test-package") {
  test_components = [ ":my-cts-component" ]
}

group("tests") {
  testonly = true
  deps = [ ":my-cts-test-package" ]
}
