#!/usr/bin/env python
# Copyright (c) 2012 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 os
import sys

from telemetry.unittest import gtest_output_formatter
from telemetry.unittest import run_tests


if __name__ == '__main__':
  base_dir = os.path.dirname(os.path.realpath(__file__))
  output_formatters = [
      gtest_output_formatter.GTestOutputFormatter(sys.stdout)]
  run_tests.config = run_tests.Config(base_dir, [base_dir], output_formatters)
  sys.exit(run_tests.RunTestsCommand.main())
