# Copyright 2016 the V8 project 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/config/sanitizers/sanitizers.gni")
import("../gni/v8.gni")

group("gn_all") {
  testonly = true

  data_deps = [
    ":v8_check_static_initializers",
    "gcmole:v8_run_gcmole",
    "jsfunfuzz:v8_jsfunfuzz",
  ]
}

group("v8_check_static_initializers") {
  data_deps = [
    "..:d8",
  ]

  data = [
    "check-static-initializers.sh",
  ]
}

group("v8_android_test_runner_deps") {
  testonly = true

  if (is_android && !build_with_chromium) {
    data_deps = [
      "//build/android:test_runner_py",
    ]
    data = [
      # This is used by android.py, but not included by test_runner_py above.
      "//third_party/catapult/devil/devil/android/perf/",
    ]
  }
}

group("v8_testrunner") {
  testonly = true

  data_deps = [
    "..:v8_dump_build_config",
    ":v8_android_test_runner_deps",
  ]

  data = [
    # Also add the num-fuzzer wrapper script in order to be able to run the
    # num-fuzzer on all existing isolated V8 test suites.
    "predictable_wrapper.py",
    "run-num-fuzzer.py",
    "run-tests.py",
    "testrunner/",
  ]

  if (v8_code_coverage && sanitizer_coverage_flags == "bb,trace-pc-guard") {
    data += [
      "sanitizers/sancov_merger.py",
      "../third_party/llvm/projects/compiler-rt/lib/sanitizer_common/scripts/sancov.py",
    ]
  }
}
