From 8454b0d1b8f160227ebc15f5c94724edd682d628 Mon Sep 17 00:00:00 2001 From: Alexis Metaireau Date: Thu, 13 Jan 2011 00:46:10 +0100 Subject: [PATCH] Tests for settings. --- pelican/settings.py | 48 +++++++++++++++++----------------- pelican/tests/test_settings.py | 16 ------------ samples/pelican.conf.py | 14 ++++++---- tests/__init__.py | 0 tests/test_settings.py | 34 ++++++++++++++++++++++++ 5 files changed, 67 insertions(+), 45 deletions(-) delete mode 100644 pelican/tests/test_settings.py create mode 100644 tests/__init__.py create mode 100644 tests/test_settings.py diff --git a/pelican/settings.py b/pelican/settings.py index 2178c5ca..13270a4d 100644 --- a/pelican/settings.py +++ b/pelican/settings.py @@ -1,35 +1,35 @@ import os -_DEFAULT_THEME = os.sep.join([os.path.dirname(os.path.abspath(__file__)), +DEFAULT_THEME = os.sep.join([os.path.dirname(os.path.abspath(__file__)), "themes/notmyidea"]) -_DEFAULT_CONFIG = {'PATH': None, - 'THEME': _DEFAULT_THEME, - 'OUTPUT_PATH': 'output/', - 'MARKUP': ('rst', 'md'), - 'STATIC_PATHS': ['images',], - 'THEME_STATIC_PATHS': ['static',], - 'FEED': 'feeds/all.atom.xml', - 'CATEGORY_FEED': 'feeds/%s.atom.xml', - 'TRANSLATION_FEED': 'feeds/all-%s.atom.xml', - 'SITENAME': 'A Pelican Blog', - 'DISPLAY_PAGES_ON_MENU': True, - 'PDF_GENERATOR': False, - 'DEFAULT_CATEGORY': 'misc', - 'FALLBACK_ON_FS_DATE': True, - 'CSS_FILE': 'main.css', - 'REVERSE_ARCHIVE_ORDER': False, - 'KEEP_OUTPUT_DIRECTORY': False, - 'CLEAN_URLS': False, # use /blah/ instead /blah.html in urls - 'RELATIVE_URLS': True, - 'DEFAULT_LANG': 'en', - 'PELICAN_CLASS': 'pelican.Pelican', - 'JINJA_EXTENSIONS': [], +DEFAULT_CONFIG = {'PATH': None, + 'THEME': DEFAULT_THEME, + 'OUTPUT_PATH': 'output/', + 'MARKUP': ('rst', 'md'), + 'STATIC_PATHS': ['images',], + 'THEME_STATIC_PATHS': ['static',], + 'FEED': 'feeds/all.atom.xml', + 'CATEGORY_FEED': 'feeds/%s.atom.xml', + 'TRANSLATION_FEED': 'feeds/all-%s.atom.xml', + 'SITENAME': 'A Pelican Blog', + 'DISPLAY_PAGES_ON_MENU': True, + 'PDF_GENERATOR': False, + 'DEFAULT_CATEGORY': 'misc', + 'FALLBACK_ON_FS_DATE': True, + 'CSS_FILE': 'main.css', + 'REVERSE_ARCHIVE_ORDER': False, + 'KEEP_OUTPUT_DIRECTORY': False, + 'CLEAN_URLS': False, # use /blah/ instead /blah.html in urls + 'RELATIVE_URLS': True, + 'DEFAULT_LANG': 'en', + 'PELICAN_CLASS': 'pelican.Pelican', + 'JINJA_EXTENSIONS': [], } def read_settings(filename): """Load a Python file into a dictionary. """ - context = _DEFAULT_CONFIG.copy() + context = DEFAULT_CONFIG.copy() if filename: tempdict = {} execfile(filename, tempdict) diff --git a/pelican/tests/test_settings.py b/pelican/tests/test_settings.py deleted file mode 100644 index 58e38378..00000000 --- a/pelican/tests/test_settings.py +++ /dev/null @@ -1,16 +0,0 @@ -from unittest2 import TestCase - -from pelican.settings import read_settings, DEFAULT_CONFIG - -class SettingsTest(TestCase): - - def test_read_settings(self): - # providing no file should return the default values - settings = read_settings(None) - self.assertDictEqual(settings, DEFAULT_CONFIG) - - # providing a file should read it, replace the default values and append - # new values to the settings, if any - settings = read_settings(mock) - self.assertIn('key', settings) - self.assertEqual(settings['KEY' diff --git a/samples/pelican.conf.py b/samples/pelican.conf.py index daf1d20d..d796e2d5 100755 --- a/samples/pelican.conf.py +++ b/samples/pelican.conf.py @@ -8,14 +8,18 @@ DISQUS_SITENAME = "blog-notmyidea" PDF_GENERATOR = False LINKS = (('Biologeek', 'http://biologeek.org'), - ('Filyb', "http://filyb.info/"), - ('Libert-fr', "http://www.libert-fr.com"), - ('N1k0', "http://prendreuncafe.com/blog/"), - (u'Tarek Ziadé', "http://ziade.org/blog"), - ('Zubin Mithra', "http://zubin71.wordpress.com/"),) + ('Filyb', "http://filyb.info/"), + ('Libert-fr', "http://www.libert-fr.com"), + ('N1k0', "http://prendreuncafe.com/blog/"), + (u'Tarek Ziadé', "http://ziade.org/blog"), + ('Zubin Mithra', "http://zubin71.wordpress.com/"),) SOCIAL = (('twitter', 'http://twitter.com/ametaireau'), ('lastfm', 'http://lastfm.com/user/akounet'), ('github', 'http://github.com/ametaireau'),) STATIC_PATHS = ["pictures",] + +# foobar will not be used, because it's not in caps. All configuration keys +# have to be in caps +foobar = "barbaz" diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/test_settings.py b/tests/test_settings.py new file mode 100644 index 00000000..a22fcde0 --- /dev/null +++ b/tests/test_settings.py @@ -0,0 +1,34 @@ +from unittest2 import TestCase +import os + +from pelican.settings import read_settings, DEFAULT_CONFIG + +SETTINGS = os.sep.join([os.path.dirname(os.path.abspath(__file__)), + "../samples/pelican.conf.py"]) + +class SettingsTest(TestCase): + + + def test_read_settings(self): + # providing a file, it should read it, replace the default values and append + # new values to the settings, if any + settings = read_settings(SETTINGS) + + # overwrite existing settings + self.assertEqual(settings.get('SITENAME'), u"Alexis' log") + + # add new settings + self.assertEqual(settings.get('SITEURL'), 'http://blog.notmyidea.org') + + # keep default settings if not defined + self.assertEqual(settings.get('DEFAULT_CATEGORY'), + DEFAULT_CONFIG['DEFAULT_CATEGORY']) + + # do not copy keys not in caps + self.assertNotIn('foobar', settings) + + + def test_empty_read_settings(self): + # providing no file should return the default values + settings = read_settings(None) + self.assertDictEqual(settings, DEFAULT_CONFIG)