# 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/dart/dart_library.gni")
import("//build/dart/dart_package_config.gni")
import("//build/dart/kernel/dart_kernel.gni")

group("tests") {
  testonly = true
  deps = [ ":verify_dart_kernel_flutter" ]
}

dart_library("sources") {
  package_name = "build.dart.kernel.tests"
  source_dir = "."

  sources = [ "main_flutter.dart" ]
}

dart_package_config("package_config") {
  deps = [ ":sources" ]
}

dart_kernel("verify_dart_kernel_flutter") {
  platform_name = flutter_platform_name
  is_aot = false
  is_product = true

  _packages_path_output = get_target_outputs(":package_config")
  packages_path = _packages_path_output[0]

  main_dart = "main_flutter.dart"
  main_package = "build.dart.kernel.tests"

  deps = [ ":package_config" ]

  generate_manifest = true
}
