# Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. import os import sys def parse_argv(): """Parses arguments for use with the test launcher. Arguments are: 1. Working directory. 2. Test runner, `pytest` or `nose` 3. Rest of the arguments are passed into the test runner. """ return (sys.argv[1], sys.argv[2], sys.argv[3:]) def exclude_current_file_from_debugger(): # Load the debugger package try: import ptvsd import ptvsd.debugger as vspd vspd.DONT_DEBUG.append(os.path.normcase(__file__)) except: traceback.print_exc() print(''' Internal error detected. Please copy the above traceback and report at https://github.com/Microsoft/vscode-python/issues/new Press Enter to close. . .''') try: raw_input() except NameError: input() sys.exit(1) def run(cwd, testRunner, args): """Runs the test cwd -- the current directory to be set testRunner -- test runner to be used `pytest` or `nose` args -- arguments passed into the test runner """ sys.path[0] = os.getcwd() os.chdir(cwd) try: if testRunner == 'pytest': import pytest pytest.main(args) else: import nose nose.run(argv=args) sys.exit(0) finally: pass if __name__ == '__main__': exclude_current_file_from_debugger() cwd, testRunner, args = parse_argv() run(cwd, testRunner, args)