def load(file, parameter, assign): """Loads an OK-style test from a specified filepath. PARAMETERS: file -- str; a filepath to a Python module containing OK-style tests. RETURNS: Test """ filename, ext = os.path.splitext(file) if not os.path.isfile(file) or ext != '.py': log.info('Cannot import {} as an OK test'.format(file)) raise ex.LoadingException('Cannot import {} as an OK test'.format(file)) try: test = importing.load_module(file).test test = copy.deepcopy(test) except Exception as e: raise ex.LoadingException('Error importing file {}: {}'.format(file, str(e))) name = os.path.basename(filename) try: return {name: models.OkTest(file, SUITES, assign.endpoint, assign.cmd_args.verbose, assign.cmd_args.interactive, assign.cmd_args.timeout, **test)} except ex.SerializeException: raise ex.LoadingException('Cannot load OK test {}'.format(file))
def load(file, parameter, assign): """Loads an OK-style test from a specified filepath. PARAMETERS: file -- str; a filepath to a Python module containing OK-style tests. RETURNS: Test """ filename, ext = os.path.splitext(file) if not os.path.isfile(file) or ext != '.py': log.info('Cannot import {} as an OK test'.format(file)) raise ex.LoadingException( 'Cannot import {} as an OK test'.format(file)) try: test = importing.load_module(file).test test = copy.deepcopy(test) except Exception as e: raise ex.LoadingException('Error importing file {}: {}'.format( file, str(e))) name = os.path.basename(filename) try: return { name: models.OkTest(file, SUITES, assign.endpoint, assign, assign.cmd_args.verbose, assign.cmd_args.interactive, assign.cmd_args.timeout, **test) } except ex.SerializeException: raise ex.LoadingException('Cannot load OK test {}'.format(file))
def load(file, parameter, assign): """Loads an OK-style test from a specified filepath. PARAMETERS: file -- str; a filepath to a Python module containing OK-style tests. RETURNS: Test """ filename, ext = os.path.splitext(file) if not os.path.isfile(file) or ext != '.py': log.info('Cannot import {} as an OK test'.format(file)) raise ex.LoadingException( 'Cannot import {} as an OK test'.format(file)) if os.path.exists(file): with open(file) as f: data = f.read() if encryption.is_encrypted(data): decrypted, _ = assign.attempt_decryption([]) if file not in decrypted: name = os.path.basename(filename) return {name: models.EncryptedOKTest(name=name, points=1)} try: test = importing.load_module(file).test test = copy.deepcopy(test) except Exception as e: raise ex.LoadingException('Error importing file {}: {}'.format( file, str(e))) name = os.path.basename(filename) try: return { name: models.OkTest(file, SUITES, assign.endpoint, assign, assign.cmd_args.verbose, assign.cmd_args.interactive, assign.cmd_args.timeout, **test) } except ex.SerializeException as e: raise ex.LoadingException('Cannot load OK test {}: {}'.format(file, e))
def load(file, name, args): """Loads doctests from a specified filepath. PARAMETERS: file -- str; a filepath to a Python module containing OK-style tests. RETURNS: Test """ if not os.path.isfile(file) or not file.endswith('.py'): log.info('Cannot import doctests from {}'.format(file)) raise ex.LoadingException('Cannot import doctests from {}'.format(file)) try: module = importing.load_module(file) except Exception: # Assume that part of the traceback includes frames from importlib. # Begin printing the traceback after the last line involving importlib. # TODO(albert): Try to find a cleaner way to do this. Also, might want # to move this to a more general place. print('Traceback (most recent call last):') stacktrace = traceback.format_exc().split('\n') start = 0 for i, line in enumerate(stacktrace): if 'importlib' in line: start = i + 1 print('\n'.join(stacktrace[start:])) raise ex.LoadingException('Error importing file {}'.format(file)) if not hasattr(module, name): raise ex.LoadingException('Module {} has no function {}'.format( module.__name__, name)) func = getattr(module, name) if not callable(func): raise ex.LoadingException('Attribute {} is not a function'.format(name)) return models.Doctest(file, args.verbose, args.interactive, args.timeout, name=name, points=1, docstring=func.__doc__)
def load(file, name, assign): """Loads doctests from a specified filepath. PARAMETERS: file -- str; a filepath to a Python module containing OK-style tests. name -- str; optional parameter that specifies a particular function in the file. If omitted, all doctests will be included. RETURNS: Test """ if not os.path.isfile(file) or not file.endswith('.py'): raise ex.LoadingException( 'Cannot import doctests from {}'.format(file)) try: module = importing.load_module(file) except Exception: # Assume that part of the traceback includes frames from importlib. # Begin printing the traceback after the last line involving importlib. # TODO(albert): Try to find a cleaner way to do this. Also, might want # to move this to a more general place. print('Traceback (most recent call last):') stacktrace = traceback.format_exc().split('\n') start = 0 for i, line in enumerate(stacktrace): if 'importlib' in line: start = i + 1 print('\n'.join(stacktrace[start:])) raise ex.LoadingException('Error importing file {}'.format(file)) if name: return {name: _load_test(file, module, name, assign)} else: return _load_tests(file, module, assign)
def load(file, name, assign): """Loads doctests from a specified filepath. PARAMETERS: file -- str; a filepath to a Python module containing OK-style tests. name -- str; optional parameter that specifies a particular function in the file. If omitted, all doctests will be included. RETURNS: Test """ if not os.path.isfile(file) or not file.endswith(".py"): raise ex.LoadingException("Cannot import doctests from {}".format(file)) try: module = importing.load_module(file) except Exception: # Assume that part of the traceback includes frames from importlib. # Begin printing the traceback after the last line involving importlib. # TODO(albert): Try to find a cleaner way to do this. Also, might want # to move this to a more general place. print("Traceback (most recent call last):") stacktrace = traceback.format_exc().split("\n") start = 0 for i, line in enumerate(stacktrace): if "importlib" in line: start = i + 1 print("\n".join(stacktrace[start:])) raise ex.LoadingException("Error importing file {}".format(file)) if name: return {name: _load_test(file, module, name, assign)} else: return _load_tests(file, module, assign)