18d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi#!/usr/bin/env python 28d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# Copyright 2015 The Chromium Authors. All rights reserved. 38d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# Use of this source code is governed by a BSD-style license that can be 48d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# found in the LICENSE file. 58d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 68d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi"""A wrapper around typ (test your projects).""" 78d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 88d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiimport os 98d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiimport sys 108d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 118d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 128d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoidef Run(top_level_dir, path=None): 138d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """Runs a set of Python tests using typ. 148d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 158d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi Args: 168d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi top_level_dir: Directory to look for Python unit tests in. 178d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi path: A list of extra paths to add to sys.path when running the tests. 188d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 198d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi Returns: 208d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi An exit code (0 for success, otherwise non-zero). 218d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """ 228d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi typ_path = os.path.abspath(os.path.join( 238d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi os.path.dirname(__file__), os.path.pardir, 'third_party', 'typ')) 248d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi _AddToPathIfNeeded(typ_path) 258d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi import typ 268d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return typ.main( 278d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi top_level_dir=top_level_dir, 288d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi path=(path or []), 298d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi coverage_source=[top_level_dir]) 308d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 318d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 328d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoidef _AddToPathIfNeeded(path): 338d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi if path not in sys.path: 348d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi sys.path.insert(0, path) 35