/functional_tests/test_issue_082.py
https://bitbucket.org/jpellerin/nose/ · Python · 74 lines · 50 code · 16 blank · 8 comment · 6 complexity · a13fcf31b235fd59ce6604de59eb30fa MD5 · raw file
- import os
- import re
- try:
- from cStringIO import StringIO
- except ImportError:
- from StringIO import StringIO
- import sys
- import unittest
- from nose.plugins import Plugin, PluginTester
- from nose.plugins.builtin import FailureDetail, Capture, Doctest
- support = os.path.join(os.path.dirname(__file__), 'support')
- class IncludeUnderscoreFilesPlugin(Plugin):
- # Note that this is purely for purposes of testing nose itself, and is
- # not intended to be a useful plugin. In particular, the rules it
- # applies for _*.py files differ from the nose defaults (e.g. the
- # --testmatch option is ignored).
- name = "underscorefiles"
- def wantFile(self, file):
- base = os.path.basename(file)
- dummy, ext = os.path.splitext(base)
- pysrc = ext == '.py'
- if pysrc and os.path.basename(file).startswith("_"):
- return True
- def wantDirectory(self, dirname):
- if os.path.basename(dirname).startswith("_"):
- return True
- class TestIncludeUnderscoreFiles(PluginTester, unittest.TestCase):
- activate = '--with-underscorefiles'
- plugins = [IncludeUnderscoreFilesPlugin(), Doctest()]
- args = ['-v', '--with-doctest']
- suitepath = os.path.join(support, 'issue082')
- ignoreFiles = (re.compile(r'^\.'),
- # we want _*.py, but don't want e.g. __init__.py, since that
- # appears to cause infinite recursion at the moment
- re.compile(r'^__'),
- re.compile(r'^setup\.py$')
- )
- def test_assert_info_in_output(self):
- print self.output
- # In future, all four test cases will be run. Backwards-compatibility
- # means that can't be done in nose 0.10.
- assert '_mypackage._eggs' not in str(self.output)
- assert '_mypackage.bacon' not in str(self.output)
- assert 'Doctest: mypublicpackage._foo ... FAIL' in str(self.output)
- assert 'Doctest: mypublicpackage.bar ... FAIL' in str(self.output)
- class TestExcludeUnderscoreFilesByDefault(PluginTester, unittest.TestCase):
- activate = '-v'
- plugins = [Doctest()]
- args = ['--with-doctest']
- suitepath = os.path.join(support, 'issue082')
- def test_assert_info_in_output(self):
- print self.output
- assert '_mypackage._eggs' not in str(self.output)
- assert '_mypackage.bacon' not in str(self.output)
- assert 'mypublicpackage._foo' not in str(self.output)
- assert 'Doctest: mypublicpackage.bar ... FAIL' in str(self.output)
- if __name__ == '__main__':
- unittest.main()