test_config.py: Move config_files and fake_open into ConfigTestCase.

This commit is contained in:
Benjamin Drung 2010-12-27 13:43:13 +01:00
parent 45a341dfd1
commit f2d17d73a5

View File

@ -26,27 +26,26 @@ from ubuntutools.config import UDTConfig, ubu_email
from ubuntutools.logger import Logger from ubuntutools.logger import Logger
from ubuntutools.test import unittest from ubuntutools.test import unittest
config_files = {
'system': '',
'user': '',
}
def fake_open(filename, mode='r'):
if mode != 'r':
raise IOError("Read only fake-file")
files = {
'/etc/devscripts.conf': config_files['system'],
os.path.expanduser('~/.devscripts'): config_files['user'],
}
if filename not in files:
raise IOError("No such file or directory: '%s'" % filename)
return StringIO(files[filename])
class ConfigTestCase(mox.MoxTestBase, unittest.TestCase): class ConfigTestCase(mox.MoxTestBase, unittest.TestCase):
_config_files = {
'system': '',
'user': '',
}
def _fake_open(self, filename, mode='r'):
if mode != 'r':
raise IOError("Read only fake-file")
files = {
'/etc/devscripts.conf': self._config_files['system'],
os.path.expanduser('~/.devscripts'): self._config_files['user'],
}
if filename not in files:
raise IOError("No such file or directory: '%s'" % filename)
return StringIO(files[filename])
def setUp(self): def setUp(self):
super(ConfigTestCase, self).setUp() super(ConfigTestCase, self).setUp()
self.mox.stubs.Set(__builtin__, 'open', fake_open) self.mox.stubs.Set(__builtin__, 'open', self._fake_open)
Logger.stdout = StringIO() Logger.stdout = StringIO()
Logger.stderr = StringIO() Logger.stderr = StringIO()
@ -61,14 +60,14 @@ class ConfigTestCase(mox.MoxTestBase, unittest.TestCase):
self.clean_environment() self.clean_environment()
def clean_environment(self): def clean_environment(self):
config_files['system'] = '' self._config_files['system'] = ''
config_files['user'] = '' self._config_files['user'] = ''
for k in os.environ.keys(): for k in os.environ.keys():
if k.startswith(('UBUNTUTOOLS_', 'TEST_')): if k.startswith(('UBUNTUTOOLS_', 'TEST_')):
del os.environ[k] del os.environ[k]
def test_config_parsing(self): def test_config_parsing(self):
config_files['user'] = """#COMMENT=yes self._config_files['user'] = """#COMMENT=yes
\tTAB_INDENTED=yes \tTAB_INDENTED=yes
SPACE_INDENTED=yes SPACE_INDENTED=yes
SPACE_SUFFIX=yes SPACE_SUFFIX=yes
@ -81,7 +80,7 @@ INHERIT=user
REPEAT=no REPEAT=no
REPEAT=yes REPEAT=yes
""" """
config_files['system'] = 'INHERIT=system' self._config_files['system'] = 'INHERIT=system'
self.assertEqual(UDTConfig(prefix='TEST').config, { self.assertEqual(UDTConfig(prefix='TEST').config, {
'TAB_INDENTED': 'yes', 'TAB_INDENTED': 'yes',
'SPACE_INDENTED': 'yes', 'SPACE_INDENTED': 'yes',
@ -111,27 +110,27 @@ REPEAT=yes
self.assertEqual(self.get_value('BUILDER', default='foo'), 'foo') self.assertEqual(self.get_value('BUILDER', default='foo'), 'foo')
def test_scriptname_precedence(self): def test_scriptname_precedence(self):
config_files['user'] = """TEST_BUILDER=foo self._config_files['user'] = """TEST_BUILDER=foo
UBUNTUTOOLS_BUILDER=bar""" UBUNTUTOOLS_BUILDER=bar"""
self.assertEqual(self.get_value('BUILDER'), 'foo') self.assertEqual(self.get_value('BUILDER'), 'foo')
def test_configfile_precedence(self): def test_configfile_precedence(self):
config_files['system'] = "UBUNTUTOOLS_BUILDER=foo" self._config_files['system'] = "UBUNTUTOOLS_BUILDER=foo"
config_files['user'] = "UBUNTUTOOLS_BUILDER=bar" self._config_files['user'] = "UBUNTUTOOLS_BUILDER=bar"
self.assertEqual(self.get_value('BUILDER'), 'bar') self.assertEqual(self.get_value('BUILDER'), 'bar')
def test_environment_precedence(self): def test_environment_precedence(self):
config_files['user'] = "UBUNTUTOOLS_BUILDER=bar" self._config_files['user'] = "UBUNTUTOOLS_BUILDER=bar"
os.environ['UBUNTUTOOLS_BUILDER'] = 'baz' os.environ['UBUNTUTOOLS_BUILDER'] = 'baz'
self.assertEqual(self.get_value('BUILDER'), 'baz') self.assertEqual(self.get_value('BUILDER'), 'baz')
def test_general_environment_specific_config_precedence(self): def test_general_environment_specific_config_precedence(self):
config_files['user'] = "TEST_BUILDER=bar" self._config_files['user'] = "TEST_BUILDER=bar"
os.environ['UBUNTUTOOLS_BUILDER'] = 'foo' os.environ['UBUNTUTOOLS_BUILDER'] = 'foo'
self.assertEqual(self.get_value('BUILDER'), 'bar') self.assertEqual(self.get_value('BUILDER'), 'bar')
def test_compat_keys(self): def test_compat_keys(self):
config_files['user'] = 'COMPATFOOBAR=bar' self._config_files['user'] = 'COMPATFOOBAR=bar'
self.assertEqual(self.get_value('QUX', compat_keys=['COMPATFOOBAR']), self.assertEqual(self.get_value('QUX', compat_keys=['COMPATFOOBAR']),
'bar') 'bar')
errs = Logger.stderr.getvalue().strip() errs = Logger.stderr.getvalue().strip()
@ -141,15 +140,15 @@ REPEAT=yes
r'deprecated.*\bCOMPATFOOBAR\b.*\bTEST_QUX\b') r'deprecated.*\bCOMPATFOOBAR\b.*\bTEST_QUX\b')
def test_boolean(self): def test_boolean(self):
config_files['user'] = "TEST_BOOLEAN=yes" self._config_files['user'] = "TEST_BOOLEAN=yes"
self.assertEqual(self.get_value('BOOLEAN', boolean=True), True) self.assertEqual(self.get_value('BOOLEAN', boolean=True), True)
config_files['user'] = "TEST_BOOLEAN=no" self._config_files['user'] = "TEST_BOOLEAN=no"
self.assertEqual(self.get_value('BOOLEAN', boolean=True), False) self.assertEqual(self.get_value('BOOLEAN', boolean=True), False)
config_files['user'] = "TEST_BOOLEAN=true" self._config_files['user'] = "TEST_BOOLEAN=true"
self.assertEqual(self.get_value('BOOLEAN', boolean=True), None) self.assertEqual(self.get_value('BOOLEAN', boolean=True), None)
def test_nonpackagewide(self): def test_nonpackagewide(self):
config_files['user'] = 'UBUNTUTOOLS_FOOBAR=a' self._config_files['user'] = 'UBUNTUTOOLS_FOOBAR=a'
self.assertEquals(self.get_value('FOOBAR'), None) self.assertEquals(self.get_value('FOOBAR'), None)