# 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.

assert(is_fuchsia, "These targets are only compiled in the fuchsia toolchain.")

import("//build/components.gni")

group("services") {
  testonly = true
  deps = [ ":hermetic_tests" ]
}

group("hermetic_tests") {
  testonly = true
  deps = [
    ":service-examples-cpp",
    ":service-examples-rust",
  ]
}

fuchsia_test_component("service-examples-component") {
  component_name = "default"
  manifest = "meta/services.cml"
}

# Run with `ffx test run fuchsia-pkg://fuchsia.com/service-examples-cpp#meta/default.cm`
fuchsia_test_package("service-examples-rust") {
  test_components = [ ":service-examples-component" ]
  subpackages = [
    "rust:branch",
    "rust:provider-a",
    "rust:provider-b",
  ]
}

# Run with `ffx test run fuchsia-pkg://fuchsia.com/service-examples-rust#meta/default.cm`
fuchsia_test_package("service-examples-cpp") {
  test_components = [ ":service-examples-component" ]
  subpackages = [
    "cpp:branch",
    "cpp:provider-a",
    "cpp:provider-b",
  ]
}
