| # Copyright 2016 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/toolchain.gni") |
| |
| # Defines a Dart test suite |
| # |
| # Parameters |
| # |
| # sources (optional) |
| # The list of test files, which must be within source_dir. |
| # Note: this parameter will soon be mandatory (TO-776). |
| # |
| # source_dir (optional) |
| # Directory containing the test sources. Defaults to "test". |
| # |
| # deps (optional) |
| # List of labels for Dart libraries this suite depends on. |
| # |
| # disable_analysis (optional) |
| # Prevents analysis from being run on this target. |
| # |
| # Example of usage: |
| # |
| # dart_test("baz_test") { |
| # source_dir = "." |
| # deps = [ |
| # "//foo/baz", |
| # "//third_party/dart-pkg/pub/test", |
| # ] |
| # } |
| template("dart_test") { |
| main_target_name = target_name |
| library_target_name = "${target_name}_library" |
| |
| sources_dir = "test" |
| if (defined(invoker.source_dir)) { |
| sources_dir = invoker.source_dir |
| } |
| |
| dart_library(library_target_name) { |
| forward_variables_from(invoker, |
| [ |
| "deps", |
| "disable_analysis", |
| ]) |
| |
| infer_package_name = true |
| |
| source_dir = sources_dir |
| |
| if (defined(invoker.sources)) { |
| sources = invoker.sources |
| } |
| } |
| |
| dart_target_gen_dir = |
| get_label_info(":bogus($dart_toolchain)", "target_gen_dir") |
| dot_packages_file = "$dart_target_gen_dir/$library_target_name.packages" |
| |
| fuchsia_tester_label = "//third_party/dart-pkg/git/flutter/packages/flutter_tools:fuchsia_tester($host_toolchain)" |
| fuchsia_tester_out_dir = get_label_info(fuchsia_tester_label, "root_out_dir") |
| fuchsia_tester_bin = "$fuchsia_tester_out_dir/dart-tools/fuchsia_tester" |
| |
| flutter_shell_label = "//third_party/flutter/shell/testing/($host_toolchain)" |
| flutter_shell_out_dir = get_label_info(flutter_shell_label, "root_out_dir") |
| flutter_shell_bin = "$flutter_shell_out_dir/flutter_tester" |
| |
| if (current_toolchain == host_toolchain) { |
| invocation_file = "$root_out_dir/$target_name" |
| } else { |
| invocation_file = "$target_gen_dir/$target_name" |
| } |
| |
| action(main_target_name) { |
| script = "//build/dart/gen_test_invocation.py" |
| |
| testonly = true |
| |
| outputs = [ |
| invocation_file, |
| ] |
| |
| args = [ |
| "--out", |
| rebase_path(invocation_file), |
| "--source-dir", |
| rebase_path(sources_dir), |
| "--dot-packages", |
| rebase_path(dot_packages_file), |
| "--test-runner", |
| rebase_path(fuchsia_tester_bin), |
| "--flutter-shell", |
| rebase_path(flutter_shell_bin), |
| ] |
| |
| deps = [ |
| ":$library_target_name", |
| flutter_shell_label, |
| fuchsia_tester_label, |
| ] |
| } |
| } |