/usr/lib/python2.7/site-packages/setuptools/command
NameSizeModeActions
alias.py24260644editdlrm
alias.pyc30980644editdlrm
alias.pyo30980644editdlrm
bdist_egg.py181850644editdlrm
bdist_egg.pyc183880644editdlrm
bdist_egg.pyo183880644editdlrm
bdist_rpm.py15080644editdlrm
bdist_rpm.pyc19140644editdlrm
bdist_rpm.pyo19140644editdlrm
bdist_wininst.py6370644editdlrm
bdist_wininst.pyc11910644editdlrm
bdist_wininst.pyo11910644editdlrm
build_clib.py44840644editdlrm
build_clib.pyc28440644editdlrm
build_clib.pyo28440644editdlrm
build_ext.py131730644editdlrm
build_ext.pyc125710644editdlrm
build_ext.pyo125270644editdlrm
build_py.py95960644editdlrm
build_py.pyc106670644editdlrm
build_py.pyo106670644editdlrm
develop.py80460644editdlrm
develop.pyc79000644editdlrm
develop.pyo79000644editdlrm
dist_info.py9600644editdlrm
dist_info.pyc17990644editdlrm
dist_info.pyo17990644editdlrm
easy_install.py870320644editdlrm
easy_install.pyc803820644editdlrm
easy_install.pyo803250644editdlrm
egg_info.py248000644editdlrm
egg_info.pyc258960644editdlrm
egg_info.pyo258960644editdlrm
install.py46830644editdlrm
install.pyc49530644editdlrm
install.pyo49530644editdlrm
install_egg_info.py22030644editdlrm
install_egg_info.pyc31850644editdlrm
install_egg_info.pyo31850644editdlrm
install_lib.py38400644editdlrm
install_lib.pyc48700644editdlrm
install_lib.pyo48240644editdlrm
install_scripts.py24390644editdlrm
install_scripts.pyc28910644editdlrm
install_scripts.pyo28910644editdlrm
launcher manifest.xml6280644editdlrm
py36compat.py49860644editdlrm
py36compat.pyc55500644editdlrm
py36compat.pyo55500644editdlrm
register.py2700644editdlrm
register.pyc7100644editdlrm
register.pyo7100644editdlrm
rotate.py21640644editdlrm
rotate.pyc30360644editdlrm
rotate.pyo30360644editdlrm
saveopts.py6580644editdlrm
saveopts.pyc11290644editdlrm
saveopts.pyo11290644editdlrm
sdist.py67110644editdlrm
sdist.pyc78230644editdlrm
sdist.pyo78230644editdlrm
setopt.py50850644editdlrm
setopt.pyc60500644editdlrm
setopt.pyo60500644editdlrm
test.py92140644editdlrm
test.pyc104680644editdlrm
test.pyo104680644editdlrm
upload.py11720644editdlrm
upload.pyc16360644editdlrm
upload.pyo16360644editdlrm
upload_docs.py73110644editdlrm
upload_docs.pyc78420644editdlrm
upload_docs.pyo78130644editdlrm
__init__.py5940644editdlrm
__init__.pyc8820644editdlrm
__init__.pyo8820644editdlrm
Edit: /usr/lib/python2.7/site-packages/setuptools/command/test.py (9214B)
import os import operator import sys import contextlib import itertools import unittest from distutils.errors import DistutilsError, DistutilsOptionError from distutils import log from unittest import TestLoader from setuptools.extern import six from setuptools.extern.six.moves import map, filter from pkg_resources import (resource_listdir, resource_exists, normalize_path, working_set, _namespace_packages, evaluate_marker, add_activation_listener, require, EntryPoint) from setuptools import Command class ScanningLoader(TestLoader): def __init__(self): TestLoader.__init__(self) self._visited = set() def loadTestsFromModule(self, module, pattern=None): """Return a suite of all tests cases contained in the given module If the module is a package, load tests from all the modules in it. If the module has an ``additional_tests`` function, call it and add the return value to the tests. """ if module in self._visited: return None self._visited.add(module) tests = [] tests.append(TestLoader.loadTestsFromModule(self, module)) if hasattr(module, "additional_tests"): tests.append(module.additional_tests()) if hasattr(module, '__path__'): for file in resource_listdir(module.__name__, ''): if file.endswith('.py') and file != '__init__.py': submodule = module.__name__ + '.' + file[:-3] else: if resource_exists(module.__name__, file + '/__init__.py'): submodule = module.__name__ + '.' + file else: continue tests.append(self.loadTestsFromName(submodule)) if len(tests) != 1: return self.suiteClass(tests) else: return tests[0] # don't create a nested suite for only one return # adapted from jaraco.classes.properties:NonDataProperty class NonDataProperty(object): def __init__(self, fget): self.fget = fget def __get__(self, obj, objtype=None): if obj is None: return self return self.fget(obj) class test(Command): """Command to run unit tests after in-place build""" description = "run unit tests after in-place build" user_options = [ ('test-module=', 'm', "Run 'test_suite' in specified module"), ('test-suite=', 's', "Run single test, case or suite (e.g. 'module.test_suite')"), ('test-runner=', 'r', "Test runner to use"), ] def initialize_options(self): self.test_suite = None self.test_module = None self.test_loader = None self.test_runner = None def finalize_options(self): if self.test_suite and self.test_module: msg = "You may specify a module or a suite, but not both" raise DistutilsOptionError(msg) if self.test_suite is None: if self.test_module is None: self.test_suite = self.distribution.test_suite else: self.test_suite = self.test_module + ".test_suite" if self.test_loader is None: self.test_loader = getattr(self.distribution, 'test_loader', None) if self.test_loader is None: self.test_loader = "setuptools.command.test:ScanningLoader" if self.test_runner is None: self.test_runner = getattr(self.distribution, 'test_runner', None) @NonDataProperty def test_args(self): return list(self._test_args()) def _test_args(self): if not self.test_suite and sys.version_info >= (2, 7): yield 'discover' if self.verbose: yield '--verbose' if self.test_suite: yield self.test_suite def with_project_on_sys_path(self, func): """ Backward compatibility for project_on_sys_path context. """ with self.project_on_sys_path(): func() @contextlib.contextmanager def project_on_sys_path(self, include_dists=[]): with_2to3 = six.PY3 and getattr(self.distribution, 'use_2to3', False) if with_2to3: # If we run 2to3 we can not do this inplace: # Ensure metadata is up-to-date self.reinitialize_command('build_py', inplace=0) self.run_command('build_py') bpy_cmd = self.get_finalized_command("build_py") build_path = normalize_path(bpy_cmd.build_lib) # Build extensions self.reinitialize_command('egg_info', egg_base=build_path) self.run_command('egg_info') self.reinitialize_command('build_ext', inplace=0) self.run_command('build_ext') else: # Without 2to3 inplace works fine: self.run_command('egg_info') # Build extensions in-place self.reinitialize_command('build_ext', inplace=1) self.run_command('build_ext') ei_cmd = self.get_finalized_command("egg_info") old_path = sys.path[:] old_modules = sys.modules.copy() try: project_path = normalize_path(ei_cmd.egg_base) sys.path.insert(0, project_path) working_set.__init__() add_activation_listener(lambda dist: dist.activate()) require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version)) with self.paths_on_pythonpath([project_path]): yield finally: sys.path[:] = old_path sys.modules.clear() sys.modules.update(old_modules) working_set.__init__() @staticmethod @contextlib.contextmanager def paths_on_pythonpath(paths): """ Add the indicated paths to the head of the PYTHONPATH environment variable so that subprocesses will also see the packages at these paths. Do this in a context that restores the value on exit. """ nothing = object() orig_pythonpath = os.environ.get('PYTHONPATH', nothing) current_pythonpath = os.environ.get('PYTHONPATH', '') try: prefix = os.pathsep.join(paths) to_join = filter(None, [prefix, current_pythonpath]) new_path = os.pathsep.join(to_join) if new_path: os.environ['PYTHONPATH'] = new_path yield finally: if orig_pythonpath is nothing: os.environ.pop('PYTHONPATH', None) else: os.environ['PYTHONPATH'] = orig_pythonpath @staticmethod def install_dists(dist): """ Install the requirements indicated by self.distribution and return an iterable of the dists that were built. """ ir_d = dist.fetch_build_eggs(dist.install_requires) tr_d = dist.fetch_build_eggs(dist.tests_require or []) er_d = dist.fetch_build_eggs( v for k, v in dist.extras_require.items() if k.startswith(':') and evaluate_marker(k[1:]) ) return itertools.chain(ir_d, tr_d, er_d) def run(self): installed_dists = self.install_dists(self.distribution) cmd = ' '.join(self._argv) if self.dry_run: self.announce('skipping "%s" (dry run)' % cmd) return self.announce('running "%s"' % cmd) paths = map(operator.attrgetter('location'), installed_dists) with self.paths_on_pythonpath(paths): with self.project_on_sys_path(): self.run_tests() def run_tests(self): # Purge modules under test from sys.modules. The test loader will # re-import them from the build location. Required when 2to3 is used # with namespace packages. if six.PY3 and getattr(self.distribution, 'use_2to3', False): module = self.test_suite.split('.')[0] if module in _namespace_packages: del_modules = [] if module in sys.modules: del_modules.append(module) module += '.' for name in sys.modules: if name.startswith(module): del_modules.append(name) list(map(sys.modules.__delitem__, del_modules)) test = unittest.main( None, None, self._argv, testLoader=self._resolve_as_ep(self.test_loader), testRunner=self._resolve_as_ep(self.test_runner), exit=False, ) if not test.result.wasSuccessful(): msg = 'Test failed: %s' % test.result self.announce(msg, log.ERROR) raise DistutilsError(msg) @property def _argv(self): return ['unittest'] + self.test_args @staticmethod def _resolve_as_ep(val): """ Load the indicated attribute value, called, as a as if it were specified as an entry point. """ if val is None: return parsed = EntryPoint.parse("x=" + val) return parsed.resolve()()