#!/usr/bin/env vpython
# Copyright 2016 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.

"""This script runs unit tests of the code in the perf directory.

This script DOES NOT run benchmarks. run_benchmark does that.
"""

import os
import subprocess
import sys

from chrome_telemetry_build import chromium_config
from core import path_util
path_util.AddTelemetryToPath()

from telemetry.testing import unittest_runner


def main():
  telemetry_test_config = os.path.join(
      path_util.GetTelemetryDir(), 'telemetry',
      'telemetry_unittest_deps.json')
  project_config = chromium_config.ChromiumConfig(
      top_level_dir=path_util.GetTelemetryDir(),
      client_configs=[chromium_config.CLIENT_CONFIG_PATH, telemetry_test_config]
  )
  return unittest_runner.Run(
      project_config, disable_cloud_storage_io_during_test=True)

if __name__ == '__main__':
  sys.exit(main())
