from djangopaste import coerce_settings as coer def test_convert_lines(): assert coer.convert_lines([]) == [] assert coer.convert_lines(['a', 'b']) == ['a', 'b'] assert coer.convert_lines('') == [] assert coer.convert_lines('\n') == [] assert coer.convert_lines('a b') == ['a b'] assert coer.convert_lines('a\nb') == ['a', 'b'] assert coer.convert_lines('a\nb\n') == ['a', 'b'] assert coer.convert_lines('a\nb\r\nc') == ['a', 'b', 'c'] assert coer.convert_lines('a\nb\n#c') == ['a', 'b'] def test_convert_name_list(): assert coer.convert_name_list([]) == [] assert coer.convert_name_list([('me', 'me@some.domain')]) == [('me','me@some.domain')] assert coer.convert_name_list('me: me@some.domain') == [('me','me@some.domain')] assert coer.convert_name_list('me :\tme@some.domain') == [('me','me@some.domain')] assert coer.convert_name_list('me: me@some.domain\n you: you@another.domain') == \ [('me','me@some.domain'), ('you', 'you@another.domain')] assert coer.convert_name_list('me: me@some.domain\n#comment\n you: you@another.domain') == \ [('me','me@some.domain'), ('you', 'you@another.domain')] class TestCoerce: def setUp(self): class S(object): pass self.global_settings = S() self.global_settings.DEBUG = True self.global_settings.TEMPLATE_DEBUG = True self.global_settings.USE_I18N = True self.global_settings.ADMINS = [('Yury Yurevich', 'the.pythy@gmail.com')] self.global_settings.MANAGERS = [('Yury Yurevich', 'the.pythy@gmail.com')] self.global_settings.SITE_ID = 1 self.global_settings.TEMPLATE_LOADERS = ['foo_loader', 'bar_loader'] self.global_settings.TEMPLATE_CONTEXT_PROCESSORS = ['foo_processor', 'bar_processor'] self.global_settings.MIDDLEWARE_CLASSES = ['foo_middleware', 'bar_middleware'] self.global_settings.TEMPLATE_DIRS = ['template_dir'] self.global_settings.INSTALLED_APPS = ['foo_app', 'bar_app'] def test_coerce_globals(self): s = coer.coerce(self.global_settings, {}) assert s['DEBUG'] is True assert s['TEMPLATE_DEBUG'] is True assert s['USE_I18N'] is True assert s['ADMINS'] == [('Yury Yurevich', 'the.pythy@gmail.com')] assert s['MANAGERS'] == [('Yury Yurevich', 'the.pythy@gmail.com')] assert s['SITE_ID'] == 1 assert s['TEMPLATE_LOADERS'] == ['foo_loader', 'bar_loader'] assert s['TEMPLATE_CONTEXT_PROCESSORS'] == ['foo_processor', 'bar_processor'] assert s['MIDDLEWARE_CLASSES'] == ['foo_middleware', 'bar_middleware'] assert s['TEMPLATE_DIRS'] == ['template_dir'] assert s['INSTALLED_APPS'] == ['foo_app', 'bar_app'] def test_coerce_with_locals(self): local_settings = { 'DEBUG': 'false', 'TEMPLATE_DEBUG': 'true', 'ADMINS': '\n\tAdmin: the.pythy@gmail.com\n', 'SITE_ID': '2', 'TEMPLATE_CONTEXT_PROCESSORS': '' } s = coer.coerce(self.global_settings, local_settings) assert s['DEBUG'] is False assert s['TEMPLATE_DEBUG'] is True assert s['USE_I18N'] is True assert s['ADMINS'] == [('Admin', 'the.pythy@gmail.com')] assert s['MANAGERS'] == [('Yury Yurevich', 'the.pythy@gmail.com')] assert s['SITE_ID'] == 2 assert s['TEMPLATE_LOADERS'] == ['foo_loader', 'bar_loader'] assert s['TEMPLATE_CONTEXT_PROCESSORS'] == [] assert s['MIDDLEWARE_CLASSES'] == ['foo_middleware', 'bar_middleware'] assert s['TEMPLATE_DIRS'] == ['template_dir'] assert s['INSTALLED_APPS'] == ['foo_app', 'bar_app'] class TestMakeModule: def test_make_module_unnamed(self): mod = coer.make_module({'key': 'val'}) assert mod.__name__ == '__settings__' assert getattr(mod, 'key') == 'val' assert mod.key == 'val' def test_make_module_attrs(self): mod = coer.make_module({'key': 'val'}, 'testmod') assert mod.__name__ == 'testmod' assert getattr(mod, 'key') == 'val' assert mod.key == 'val' if __name__ == '__main__': import nose nose.run()