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

group("test_data") {
  testonly = true
  public_deps = [
    ":rust-test-runner-example",
    "huge-rust-tests",
    "no-rust-tests",
    "sample-rust-tests",
  ]
}

package("rust-test-runner-example") {
  testonly = true
  deps = [
    "echo-example",
    "huge-rust-tests",
    "no-rust-tests",
    "sample-rust-tests",
    "//examples/components/routing/echo_server",
  ]

  binaries = [
    {
      name = "echo_server"
    },
    {
      name = "echo_rust_client"
    },
    {
      name = "sample_rust_tests"
    },
    {
      name = "huge_rust_tests"
    },
    {
      name = "no_rust_tests"
    },
  ]

  meta = [
    {
      path = "echo-example/meta/echo-test-realm.cml"
      dest = "echo-test-realm.cm"
    },
    {
      path = "echo-example/meta/echo_rust_client.cml"
      dest = "echo_rust_client.cm"
    },
    {
      path = rebase_path("//examples/components/routing/meta/echo_server.cml")
      dest = "echo_server.cm"
    },
    {
      path = "sample-rust-tests/meta/sample_rust_tests.cml"
      dest = "sample_rust_tests.cm"
    },
    {
      path = "huge-rust-tests/meta/huge_rust_tests.cml"
      dest = "huge_rust_tests.cm"
    },
    {
      path = "no-rust-tests/meta/no_rust_tests.cml"
      dest = "no_rust_tests.cm"
    },
  ]
}
