# 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/dart/test.gni")
import("//build/testing/environments.gni")
import("//build/testing/host_test_data.gni")

dart_test("sl4f_test") {
  sources = [
    "audio_test.dart",
    "client_test.dart",
    "component_test.dart",
    "device_log_test.dart",
    "diagnostics_test.dart",
    "dump_test.dart",
    "performance_test.dart",
    "repository_manager_test.dart",
    "setui_test.dart",
    "storage_test.dart",
    "tcp_proxy_test.dart",
    "time_test.dart",
  ]

  deps = [
    "//sdk/testing/sl4f/client",
    "//third_party/dart-pkg/pub/http",
    "//third_party/dart-pkg/pub/logging",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
  ]

  non_dart_deps = [ ":runtime_deps($host_toolchain)" ]

  environments = [
    nuc_env,

    # The astro environment has tags as it is still to be run on an FYI builder.
    {
      dimensions = {
        device_type = "Astro"
      }
      tags = [ "e2e-fyi" ]
    },
  ]
}

dart_test("sl4f_astro_test") {
  sources = [ "performance_astro_test.dart" ]

  deps = [
    "//sdk/testing/sl4f/client",
    "//third_party/dart-pkg/pub/http",
    "//third_party/dart-pkg/pub/logging",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
  ]

  non_dart_deps = [ ":runtime_deps($host_toolchain)" ]

  environments = [
    astro_env,

    # The astro environment has tags as it is still to be run on an FYI builder.
    {
      dimensions = {
        device_type = "Astro"
      }
      tags = [ "e2e-fyi" ]
    },
  ]
}

if (is_host) {
  host_test_data("runtime_deps") {
    sources = [ "$root_out_dir/trace2json" ]

    outputs = [ "$target_gen_dir/runtime_deps/{{source_file_part}}" ]

    deps = [ "//garnet/bin/trace2json:bin" ]
  }
}

group("test") {
  testonly = true

  deps = [
    ":sl4f_astro_test($host_toolchain)",
    ":sl4f_test($host_toolchain)",
  ]
}
