Exemple #1
0
def get_members_recursively():
    deepfunc = lambda x: getattr(x, "__name__", "").startswith("deep_")
    found = list(utils.deep_get_members("attest", deepfunc))
    expected = [utils.deep_get_members, utils.deep_iter_modules]
    assert found == expected

    getters = lambda x: getattr(x, "__name__", "").startswith("get")
    found = set(utils.deep_get_members("inspect", getters))
    expected = set(v for (k, v) in inspect.getmembers(inspect, getters))
    assert found == expected
Exemple #2
0
def get_members_recursively():
    deepfunc = lambda x: getattr(x, '__name__', '').startswith('deep_')
    found = list(utils.deep_get_members('attest', deepfunc))
    expected = [utils.deep_get_members, utils.deep_iter_modules]
    assert found == expected

    getters = lambda x: getattr(x, '__name__', '').startswith('get')
    found = set(utils.deep_get_members('inspect', getters))
    expected = set(v for (k, v) in inspect.getmembers(inspect, getters))
    assert found == expected
Exemple #3
0
def get_members_recursively():
    deepfunc = lambda x: getattr(x, '__name__', '').startswith('deep_')
    found = list(utils.deep_get_members('attest', deepfunc))
    expected = [utils.deep_get_members, utils.deep_iter_modules]
    assert found == expected

    getters = lambda x: getattr(x, '__name__', '').startswith('get')
    found = set(utils.deep_get_members('inspect', getters))
    expected = set(v for (k, v) in inspect.getmembers(inspect, getters))
    assert found == expected
Exemple #4
0
 def register(self, tests):
     if inspect.isclass(tests):
             self._tests.extend(tests())
             return tests
     elif isinstance(tests, basestring):
         def istests(obj):
             return isinstance(obj, (Tests, RootGroup))
         obj = import_dotted_name(tests)
         if inspect.ismodule(obj):
             for tests in deep_get_members(tests, istests, private=True):
                 self.register(tests)
             return
         tests = obj
     for test in tests:
         if not test in self._tests:
             self._tests.append(test)
Exemple #5
0
    def register(self, tests):
        """Merge in other tests.

        :param tests:
            * A class, which is then instantiated and return allowing it to be
              used as a decorator for :class:`TestBase` classes.
            * A string, representing the dotted name to one of:

              * a module or package, which is recursively scanned for
                :class:`Tests` instances that are not private
              * an iterable yielding tests
            * Otherwise any iterable object is assumed to yield tests.

        Any of these can be passed in a list to the :class:`Tests`
        constructor.

        .. versionadded:: 0.2
            Refer to collections by import path as a string

        .. versionadded:: 0.6
            Recursive scanning of modules and packages

        .. versionchanged:: 0.6
            Tests are only added if not already added

        """
        if inspect.isclass(tests):
            self._tests.extend(tests())
            return tests
        elif isinstance(tests, basestring):
            def istests(obj):
                return isinstance(obj, Tests)
            obj = import_dotted_name(tests)
            if inspect.ismodule(obj):
                for tests in deep_get_members(tests, istests):
                    self.register(tests)
                return
            tests = obj
        for test in tests:
            if not test in self._tests:
                self._tests.append(test)