import re
import os
import tempfile
import unittest
import nose.config
import sys
from nose.core import configure, TestProgram as _TestProgram
# Configparser behaves differently under 2.3
compat_24 = sys.version_info >= (2, 4)
class InactiveTestProgram(_TestProgram):
"""
A TestProgram subclass that doesn't automatically run tests when
instantiated.
"""
def createTests(self):
pass
def runTests(self):
pass
class TestNoseConfig(unittest.TestCase):
def test_defaults(self):
c = nose.config.Config()
assert c.addPaths == True
assert c.capture == True
assert c.detailedErrors == False
# 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_multiple_include(self):
conf = configure(['--include=a', '--include=b'])
self.assertEqual(conf.include, [re.compile('a'), re.compile('b')])
def test_single_include(self):
conf = configure(['--include=b'])
self.assertEqual(conf.include, [re.compile('b')])
class TestNoseConfigFile(unittest.TestCase):
def setUp(self):
self.tp = InactiveTestProgram(argv=[], env={})
self.first_arg = object()
self.last_args = [object() for i in range(3)]
self.argv = [self.first_arg] + self.last_args
self.temp_files = []
def tearDown(self):
for f in self.temp_files:
try:
os.remove(f)
except OSError:
pass
def check_argv(self, expected_new_args):
self.assertEqual(self.argv[0], self.first_arg)
self.assertEqual(self.argv[-len(self.last_args):], self.last_args)
self.assertEqual(self.argv[1:-len(self.last_args)], expected_new_args)
def create_file(self, contents):
path = tempfile.mktemp(prefix="nose")
self.temp_files.append(path)
f = open(path, "wb")
f.write(contents)
f.close()
return path
def test_no_files(self):
parsed = self.tp.parseUserConfig(self.argv, [])
if compat_24:
self.assertEqual(parsed, [])
self.check_argv([])
def test_empty_files(self):
f1 = self.create_file("[nosetests]")
f2 = self.create_file("[nosetests]")
parsed = self.tp.parseUserConfig(self.argv, [f1, f2])
if compat_24:
self.assertEqual(parsed, [f1, f2])
self.check_argv([])
def test_missing_file(self):
f1 = tempfile.mktemp()
f2 = self.create_file("[DEFAULT]\n[nosetests]\nverbosity=3\n")
parsed = self.tp.parseUserConfig(self.argv, [f1, f2])
if compat_24:
self.assertEqual(parsed, [f2])
self.check_argv(["--verbosity", "3"])
def test_more_config(self):
f1 = self.create_file("[nosetests]\nstop=True\n")
f2 = self.create_file("[nosetests]\npdb=FALSE\n")
parsed = self.tp.parseUserConfig(self.argv, [f1, f2])
if compat_24:
self.assertEqual(parsed, [f1, f2])
self.check_argv(["--stop"])
if __name__ == '__main__':
unittest.main()
syntax highlighted by Code2HTML, v. 0.9.1