141 lines
4.4 KiB
Python
141 lines
4.4 KiB
Python
import re
|
|
import os
|
|
import tempfile
|
|
import unittest
|
|
import warnings
|
|
import pickle
|
|
import sys
|
|
|
|
import nose.config
|
|
from nose.plugins.manager import DefaultPluginManager
|
|
from nose.plugins.skip import SkipTest
|
|
from nose.plugins.prof import Profile
|
|
|
|
|
|
class TestNoseConfig(unittest.TestCase):
|
|
|
|
def test_defaults(self):
|
|
c = nose.config.Config()
|
|
assert c.addPaths == True
|
|
# FIXME etc
|
|
|
|
def test_reset(self):
|
|
c = nose.config.Config()
|
|
c.include = 'include'
|
|
assert c.include == 'include'
|
|
c.reset()
|
|
assert c.include is None
|
|
|
|
def test_update(self):
|
|
c = nose.config.Config()
|
|
c.update({'exclude':'x'})
|
|
assert c.exclude == 'x'
|
|
|
|
def test_ignore_files_default(self):
|
|
"""
|
|
The default configuration should have several ignore file settings.
|
|
"""
|
|
c = nose.config.Config()
|
|
c.configure(['program'])
|
|
self.assertEqual(len(c.ignoreFiles), 3)
|
|
|
|
def test_ignore_files_single(self):
|
|
"""A single ignore-files flag should override the default settings."""
|
|
c = nose.config.Config()
|
|
c.configure(['program', '--ignore-files=a'])
|
|
self.assertEqual(len(c.ignoreFiles), 1)
|
|
aMatcher = c.ignoreFiles[0]
|
|
assert aMatcher.match('a')
|
|
assert not aMatcher.match('b')
|
|
|
|
def test_ignore_files_multiple(self):
|
|
"""
|
|
Multiple ignore-files flags should be appended together, overriding
|
|
the default settings.
|
|
"""
|
|
c = nose.config.Config()
|
|
c.configure(['program', '--ignore-files=a', '-Ib'])
|
|
self.assertEqual(len(c.ignoreFiles), 2)
|
|
aMatcher, bMatcher = c.ignoreFiles
|
|
assert aMatcher.match('a')
|
|
assert not aMatcher.match('b')
|
|
assert bMatcher.match('b')
|
|
assert not bMatcher.match('a')
|
|
|
|
def test_multiple_include(self):
|
|
c = nose.config.Config()
|
|
c.configure(['program', '--include=a', '--include=b'])
|
|
self.assertEqual(len(c.include), 2)
|
|
a, b = c.include
|
|
assert a.match('a')
|
|
assert not a.match('b')
|
|
assert b.match('b')
|
|
assert not b.match('a')
|
|
|
|
def test_single_include(self):
|
|
c = nose.config.Config()
|
|
c.configure(['program', '--include=b'])
|
|
self.assertEqual(len(c.include), 1)
|
|
b = c.include[0]
|
|
assert b.match('b')
|
|
assert not b.match('a')
|
|
|
|
def test_plugins(self):
|
|
c = nose.config.Config()
|
|
assert c.plugins
|
|
c.plugins.begin()
|
|
|
|
def test_testnames(self):
|
|
c = nose.config.Config()
|
|
c.configure(['program', 'foo', 'bar', 'baz.buz.biz'])
|
|
self.assertEqual(c.testNames, ['foo', 'bar', 'baz.buz.biz'])
|
|
|
|
c = nose.config.Config(testNames=['foo'])
|
|
c.configure([])
|
|
self.assertEqual(c.testNames, ['foo'])
|
|
|
|
def test_where(self):
|
|
# we don't need to see our own warnings
|
|
warnings.filterwarnings(action='ignore',
|
|
category=DeprecationWarning,
|
|
module='nose.config')
|
|
|
|
here = os.path.dirname(__file__)
|
|
support = os.path.join(here, 'support')
|
|
foo = os.path.abspath(os.path.join(support, 'foo'))
|
|
c = nose.config.Config()
|
|
c.configure(['program', '-w', foo, '-w', 'bar'])
|
|
self.assertEqual(c.workingDir, foo)
|
|
self.assertEqual(c.testNames, ['bar'])
|
|
|
|
def test_progname_looks_like_option(self):
|
|
# issue #184
|
|
c = nose.config.Config()
|
|
# the -v here is the program name, not an option
|
|
# this matters eg. with python -c "import nose; nose.main()"
|
|
c.configure(['-v', 'mytests'])
|
|
self.assertEqual(c.verbosity, 1)
|
|
|
|
def test_pickle_empty(self):
|
|
c = nose.config.Config()
|
|
cp = pickle.dumps(c)
|
|
cc = pickle.loads(cp)
|
|
|
|
def test_pickle_configured(self):
|
|
if 'java' in sys.version.lower():
|
|
raise SkipTest("jython has no profiler plugin")
|
|
c = nose.config.Config(plugins=DefaultPluginManager())
|
|
config_args = ['--with-doctest', '--with-coverage',
|
|
'--with-id', '--attr=A', '--collect', '--all',
|
|
'--with-isolation', '-d', '--with-xunit', '--processes=2',
|
|
'--pdb']
|
|
if Profile.available():
|
|
config_args.append('--with-profile')
|
|
c.configure(config_args)
|
|
cp = pickle.dumps(c)
|
|
cc = pickle.loads(cp)
|
|
assert cc.plugins._plugins
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|