# 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.

source_set("gmock_mutant") {
  sources = [
    "gmock_mutant.h",  # gMock helpers
  ]

  deps = [
    "//base",
  ]
}

# 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",
  ]
}

if (is_mac || is_win) {
  group("rendering_representative_perf_tests") {
    testonly = true
    deps = [
      "//tools/perf/chrome_telemetry_build:telemetry_chrome_test",
    ]
    data = [
      "//build/android/pylib",
      "//chrome/test/data/perf",
      "//components/variations/service/generate_ui_string_overrider.py",
      "//testing/scripts",
      "//testing/test_env.py",
      "//testing/xvfb.py",
      "//third_party/catapult",
      "//tools",
    ]
  }
}

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/results_merger.py",
  ]

  data_deps = [
    ":test_scripts_shared",
  ]
}
