/packages/nose/unit_tests/test_selector.py
https://github.com/mozilla/kuma-lib · Python · 200 lines · 197 code · 3 blank · 0 comment · 0 complexity · de511a01f344b8b3fd77edb6022fe7fd MD5 · raw file
- import logging
- import os
- import re
- import unittest
- import nose.selector
- from nose.config import Config
- from nose.selector import log, Selector
- from nose.util import absdir
- from mock import mod
- class TestSelector(unittest.TestCase):
- def tearDown(self):
- logging.getLogger('nose.selector').setLevel(logging.WARN)
-
- def test_ignore_files_default(self):
- """A default configuration should always skip some 'hidden' files."""
- s = Selector(Config())
-
- assert not s.wantFile('_test_underscore.py')
- assert not s.wantFile('.test_hidden.py')
- assert not s.wantFile('setup.py')
-
- def test_ignore_files_override(self):
- """Override the configuration to skip only specified files."""
- c = Config()
- c.ignoreFiles = [re.compile(r'^test_favourite_colour\.py$')]
- s = Selector(c)
-
- assert s.wantFile('_test_underscore.py')
- assert s.wantFile('.test_hidden.py')
- assert not s.wantFile('setup.py') # Actually excluded because of testMatch
- assert not s.wantFile('test_favourite_colour.py')
-
- def test_exclude(self):
- s = Selector(Config())
- c = Config()
- c.exclude = [re.compile(r'me')]
- s2 = Selector(c)
-
- assert s.matches('test_foo')
- assert s2.matches('test_foo')
- assert s.matches('test_me')
- assert not s2.matches('test_me')
-
- def test_include(self):
- s = Selector(Config())
- c = Config()
- c.include = [re.compile(r'me')]
- s2 = Selector(c)
- assert s.matches('test')
- assert s2.matches('test')
- assert not s.matches('meatball')
- assert s2.matches('meatball')
- assert not s.matches('toyota')
- assert not s2.matches('toyota')
-
- c.include.append(re.compile('toy'))
- assert s.matches('test')
- assert s2.matches('test')
- assert not s.matches('meatball')
- assert s2.matches('meatball')
- assert not s.matches('toyota')
- assert s2.matches('toyota')
-
- def test_want_class(self):
- class Foo:
- pass
- class Bar(unittest.TestCase):
- pass
- class TestMe:
- pass
- class TestType(type):
- def __new__(cls, name, bases, dct):
- return type.__new__(cls, name, bases, dct)
- class TestClass(object):
- __metaclass__ = TestType
-
- s = Selector(Config())
- assert not s.wantClass(Foo)
- assert s.wantClass(Bar)
- assert s.wantClass(TestMe)
- assert s.wantClass(TestClass)
- TestMe.__test__ = False
- assert not s.wantClass(TestMe), "Failed to respect __test__ = False"
- Bar.__test__ = False
- assert not s.wantClass(Bar), "Failed to respect __test__ = False"
-
- def test_want_directory(self):
- s = Selector(Config())
- assert s.wantDirectory('test')
- assert not s.wantDirectory('test/whatever')
- assert s.wantDirectory('whatever/test')
- assert not s.wantDirectory('/some/path/to/unit_tests/support')
- # default src directory
- assert s.wantDirectory('lib')
- assert s.wantDirectory('src')
- # FIXME move to functional tests
-
- # this looks on disk for support/foo, which is a package
- here = os.path.abspath(os.path.dirname(__file__))
- support = os.path.join(here, 'support')
- tp = os.path.normpath(os.path.join(support, 'foo'))
- assert s.wantDirectory(tp)
- # this looks for support, which is not a package
- assert not s.wantDirectory(support)
-
- def test_want_file(self):
- #logging.getLogger('nose.selector').setLevel(logging.DEBUG)
- #logging.basicConfig()
-
- c = Config()
- c.where = [absdir(os.path.join(os.path.dirname(__file__), 'support'))]
- base = c.where[0]
- s = Selector(c)
- assert not s.wantFile('setup.py')
- assert not s.wantFile('/some/path/to/setup.py')
- assert not s.wantFile('ez_setup.py')
- assert not s.wantFile('.test.py')
- assert not s.wantFile('_test.py')
- assert not s.wantFile('setup_something.py')
-
- assert s.wantFile('test.py')
- assert s.wantFile('foo/test_foo.py')
- assert s.wantFile('bar/baz/test.py')
- assert not s.wantFile('foo.py')
- assert not s.wantFile('test_data.txt')
- assert not s.wantFile('data.text')
- assert not s.wantFile('bar/baz/__init__.py')
-
- def test_want_function(self):
- def foo():
- pass
- def test_foo():
- pass
- def test_bar():
- pass
-
- s = Selector(Config())
- assert s.wantFunction(test_bar)
- assert s.wantFunction(test_foo)
- assert not s.wantFunction(foo)
- test_foo.__test__ = False
- assert not s.wantFunction(test_foo), \
- "Failed to respect __test__ = False"
- def test_want_method(self):
- class Baz:
- def test_me(self):
- pass
- def test_too(self):
- pass
- def other(self):
- pass
- def test_not_test(self):
- pass
- test_not_test.__test__ = False
-
- s = Selector(Config())
-
- assert s.wantMethod(Baz.test_me)
- assert s.wantMethod(Baz.test_too)
- assert not s.wantMethod(Baz.other)
- assert not s.wantMethod(Baz.test_not_test), \
- "Failed to respect __test__ = False"
-
- def test_want_module(self):
- m = mod('whatever')
- m2 = mod('this.that')
- m3 = mod('this.that.another')
- m4 = mod('this.that.another.one')
- m5 = mod('test.something')
- m6 = mod('a.test')
- m7 = mod('my_tests')
- m8 = mod('__main__')
-
- s = Selector(Config())
- assert not s.wantModule(m)
- assert not s.wantModule(m2)
- assert not s.wantModule(m3)
- assert not s.wantModule(m4)
- assert not s.wantModule(m5)
- assert s.wantModule(m6)
- assert s.wantModule(m7)
- assert s.wantModule(m8)
- m6.__test__ = False
- assert not s.wantModule(m6), "Failed to respect __test__ = False"
-
- if __name__ == '__main__':
- # log.setLevel(logging.DEBUG)
- unittest.main()