#!/usr/bin/env python
# Copyright 2015 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
import subprocess
import argparse

SKY_TOOLS_DIR = os.path.dirname(os.path.abspath(__file__))
SKY_ROOT = os.path.dirname(SKY_TOOLS_DIR)
SRC_ROOT = os.path.dirname(SKY_ROOT)

DART_SDK = os.path.join(SRC_ROOT, 'third_party', 'dart-sdk', 'dart-sdk', 'bin')
PUB = os.path.join(DART_SDK, 'pub')
PUB_CACHE = os.path.join(SRC_ROOT, 'dart-pub-cache')

UNIT_DIR = os.path.join(SRC_ROOT, 'sky', 'unit')

def main():
    parser = argparse.ArgumentParser(description='Runs Sky tests')
    parser.add_argument('--config', default='Debug')
    parser.add_argument('--debug', dest='config', action='store_const', const='Debug')
    parser.add_argument('--release', dest='config', action='store_const', const='Release')
    args, remaining = parser.parse_known_args()

    build_dir = os.path.join(SRC_ROOT, 'out', args.config)

    sky_shell = None
    if sys.platform == 'linux2':
        sky_shell = os.path.join(build_dir, 'sky_shell')
    elif sys.platform == 'darwin':
        sky_shell = os.path.join(build_dir, 'SkyShell.app', 'Contents', 'MacOS', 'SkyShell')

    env = os.environ.copy()
    env['PUB_CACHE'] = PUB_CACHE
    env['SKY_SHELL'] = sky_shell
    return subprocess.call([
        PUB, 'run', 'sky_tools:sky_test',
    ] + remaining, cwd=UNIT_DIR, env=env)

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