# Copyright 2014 The Chromium 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/python.gni")

# Used by linux-gcc-rel to ensure gcc doesn't choke on clang-only flags.
executable("empty_main") {
  sources = [ "empty_main.cc" ]
}

# Targets needed for isolate script to execute.
group("test_scripts_shared") {
  data = [
    "//testing/test_env.py",
    "//testing/xvfb.py",
  ]
}

group("run_perf_test") {
  data = [
    "//testing/scripts/common.py",
    "//testing/scripts/run_performance_tests.py",
    "//tools/perf/generate_legacy_perf_dashboard_json.py",
    "//tools/perf/core/__init__.py",
    "//tools/perf/core/path_util.py",
    "//tools/perf/core/results_merger.py",
  ]

  data_deps = [
    ":test_scripts_shared",
    "//third_party/catapult/tracing:convert_chart_json",
  ]

  if (is_android) {
    # Required when running with bundles (to run "bundletool").
    data_deps += [ "//third_party/jdk:java_data" ]
  }
}

python_library("run_isolated_script_test") {
  testonly = true
  pydeps_file = "//testing/scripts/run_isolated_script_test.pydeps"
}
