# Copyright 2013 The Flutter 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("//flutter/tools/fuchsia/dart/dart_component.gni")
import("//flutter/tools/fuchsia/fuchsia_archive.gni")
import("//flutter/tools/fuchsia/gn-sdk/src/fidl_library.gni")

group("tests") {
  testonly = true
  deps = [ ":dart-aot-runner-integration-test" ]
}

executable("dart-aot-runner-integration-test-bin") {
  testonly = true

  output_name = "dart-aot-runner-integration-test"

  sources = [ "dart-aot-runner-integration-test.cc" ]

  # This is needed for //flutter/third_party/googletest for linking zircon
  # symbols.
  libs = [ "${fuchsia_arch_root}/sysroot/lib/libzircon.so" ]

  deps = [
    "${fuchsia_sdk}/fidl/fuchsia.logger",
    "${fuchsia_sdk}/fidl/fuchsia.tracing.provider",
    "${fuchsia_sdk}/pkg/async",
    "${fuchsia_sdk}/pkg/async-loop-testing",
    "${fuchsia_sdk}/pkg/fidl_cpp",
    "${fuchsia_sdk}/pkg/sys_component_cpp_testing",
    "${fuchsia_sdk}/pkg/zx",
    "../dart_echo_server:aot_echo_package",
    "//flutter/fml",
    "//flutter/shell/platform/fuchsia/dart_runner/fidl:dart_test",
    "//flutter/third_party/googletest:gtest",
    "//flutter/third_party/googletest:gtest_main",
  ]
}

fuchsia_test_archive("dart-aot-runner-integration-test") {
  deps = [ ":dart-aot-runner-integration-test-bin" ]

  binary = "$target_name"
  cml_file = rebase_path("meta/$target_name.cml")
}
