forked from github/pelican
Merge pull request #934 from wking/generator-init-kwargs
Use keyword arguments to initialize Generators
This commit is contained in:
commit
4f444ee6a8
3 changed files with 47 additions and 31 deletions
|
|
@ -157,12 +157,12 @@ class Pelican(object):
|
|||
context['localsiteurl'] = self.settings['SITEURL'] # share
|
||||
generators = [
|
||||
cls(
|
||||
context,
|
||||
self.settings,
|
||||
self.path,
|
||||
self.theme,
|
||||
self.output_path,
|
||||
self.markup,
|
||||
context=context,
|
||||
settings=self.settings,
|
||||
path=self.path,
|
||||
theme=self.theme,
|
||||
output_path=self.output_path,
|
||||
markup=self.markup,
|
||||
) for cls in self.get_generator_classes()
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -31,10 +31,14 @@ logger = logging.getLogger(__name__)
|
|||
class Generator(object):
|
||||
"""Baseclass generator"""
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
for idx, item in enumerate(('context', 'settings', 'path', 'theme',
|
||||
'output_path', 'markup')):
|
||||
setattr(self, item, args[idx])
|
||||
def __init__(self, context, settings, path, theme, output_path, markup,
|
||||
**kwargs):
|
||||
self.context = context
|
||||
self.settings = settings
|
||||
self.path = path
|
||||
self.theme = theme
|
||||
self.output_path = output_path
|
||||
self.markup = markup
|
||||
|
||||
for arg, value in kwargs.items():
|
||||
setattr(self, arg, value)
|
||||
|
|
|
|||
|
|
@ -33,8 +33,10 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings = get_settings(filenames={})
|
||||
settings['DEFAULT_CATEGORY'] = 'Default'
|
||||
settings['DEFAULT_DATE'] = (1970, 1, 1)
|
||||
self.generator = ArticlesGenerator(settings.copy(), settings,
|
||||
CONTENT_DIR, settings['THEME'], None, settings['MARKUP'])
|
||||
self.generator = ArticlesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'],
|
||||
output_path=None, markup=settings['MARKUP'])
|
||||
self.generator.generate_context()
|
||||
return self.generator
|
||||
|
||||
|
|
@ -52,16 +54,19 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
|
||||
def test_generate_feeds(self):
|
||||
settings = get_settings()
|
||||
generator = ArticlesGenerator(settings, settings, None,
|
||||
settings['THEME'], None, settings['MARKUP'])
|
||||
generator = ArticlesGenerator(
|
||||
context=settings, settings=settings,
|
||||
path=None, theme=settings['THEME'],
|
||||
output_path=None, markup=settings['MARKUP'])
|
||||
writer = MagicMock()
|
||||
generator.generate_feeds(writer)
|
||||
writer.write_feed.assert_called_with([], settings,
|
||||
'feeds/all.atom.xml')
|
||||
|
||||
generator = ArticlesGenerator(
|
||||
settings, get_settings(FEED_ALL_ATOM=None), None,
|
||||
settings['THEME'], None, None)
|
||||
context=settings, settings=get_settings(FEED_ALL_ATOM=None),
|
||||
path=None, theme=settings['THEME'],
|
||||
output_path=None, markup=None)
|
||||
writer = MagicMock()
|
||||
generator.generate_feeds(writer)
|
||||
self.assertFalse(writer.write_feed.called)
|
||||
|
|
@ -122,8 +127,9 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings['USE_FOLDER_AS_CATEGORY'] = False
|
||||
settings['filenames'] = {}
|
||||
generator = ArticlesGenerator(
|
||||
settings.copy(), settings, CONTENT_DIR, DEFAULT_CONFIG['THEME'],
|
||||
None, DEFAULT_CONFIG['MARKUP'])
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=DEFAULT_CONFIG['THEME'],
|
||||
output_path=None, markup=DEFAULT_CONFIG['MARKUP'])
|
||||
generator.generate_context()
|
||||
# test for name
|
||||
# categories are grouped by slug; if two categories have the same slug
|
||||
|
|
@ -143,9 +149,10 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
def test_direct_templates_save_as_default(self):
|
||||
|
||||
settings = get_settings(filenames={})
|
||||
generator = ArticlesGenerator(settings, settings, None,
|
||||
settings['THEME'], None,
|
||||
settings['MARKUP'])
|
||||
generator = ArticlesGenerator(
|
||||
context=settings, settings=settings,
|
||||
path=None, theme=settings['THEME'],
|
||||
output_path=None, markup=settings['MARKUP'])
|
||||
write = MagicMock()
|
||||
generator.generate_direct_templates(write)
|
||||
write.assert_called_with("archives.html",
|
||||
|
|
@ -157,9 +164,10 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings = get_settings()
|
||||
settings['DIRECT_TEMPLATES'] = ['archives']
|
||||
settings['ARCHIVES_SAVE_AS'] = 'archives/index.html'
|
||||
generator = ArticlesGenerator(settings, settings, None,
|
||||
settings['THEME'], None,
|
||||
settings['MARKUP'])
|
||||
generator = ArticlesGenerator(
|
||||
context=settings, settings=settings,
|
||||
path=None, theme=settings['THEME'],
|
||||
output_path=None, markup=settings['MARKUP'])
|
||||
write = MagicMock()
|
||||
generator.generate_direct_templates(write)
|
||||
write.assert_called_with("archives/index.html",
|
||||
|
|
@ -171,9 +179,10 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings = get_settings()
|
||||
settings['DIRECT_TEMPLATES'] = ['archives']
|
||||
settings['ARCHIVES_SAVE_AS'] = 'archives/index.html'
|
||||
generator = ArticlesGenerator(settings, settings, None,
|
||||
settings['THEME'], None,
|
||||
settings['MARKUP'])
|
||||
generator = ArticlesGenerator(
|
||||
context=settings, settings=settings,
|
||||
path=None, theme=settings['THEME'],
|
||||
output_path=None, markup=settings['MARKUP'])
|
||||
write = MagicMock()
|
||||
generator.generate_direct_templates(write)
|
||||
write.assert_called_count == 0
|
||||
|
|
@ -215,8 +224,9 @@ class TestPageGenerator(unittest.TestCase):
|
|||
settings['DEFAULT_DATE'] = (1970, 1, 1)
|
||||
|
||||
generator = PagesGenerator(
|
||||
settings.copy(), settings, CUR_DIR, settings['THEME'], None,
|
||||
settings['MARKUP'])
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CUR_DIR, theme=settings['THEME'],
|
||||
output_path=None, markup=settings['MARKUP'])
|
||||
generator.generate_context()
|
||||
pages = self.distill_pages(generator.pages)
|
||||
hidden_pages = self.distill_pages(generator.hidden_pages)
|
||||
|
|
@ -258,8 +268,10 @@ class TestTemplatePagesGenerator(unittest.TestCase):
|
|||
'template/source.html': 'generated/file.html'
|
||||
}
|
||||
|
||||
generator = TemplatePagesGenerator({'foo': 'bar'}, settings,
|
||||
self.temp_content, '', self.temp_output, None)
|
||||
generator = TemplatePagesGenerator(
|
||||
context={'foo': 'bar'}, settings=settings,
|
||||
path=self.temp_content, theme='',
|
||||
output_path=self.temp_output, markup=None)
|
||||
|
||||
# create a dummy template file
|
||||
template_dir = os.path.join(self.temp_content, 'template')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue