#!/usr/bin/env python
# Copyright (c) 2013 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

sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, 'telemetry'))

from telemetry import test_runner
from telemetry.core import environment


if __name__ == '__main__':
  base_dir = os.path.dirname(os.path.realpath(__file__))
  test_aliases = {
      'blink_perf': 'blink_perf.all',
      'image_decoding.tough_decoding_cases':
          'image_decoding.image_decoding_measurement',
      'media.tough_media_cases': 'media.tough_video_cases',
      'page_cycler.pica': 'pica.pica',
  }
  test_runner.config = environment.Environment([base_dir], test_aliases)
  sys.exit(test_runner.main())
