mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
fulfil pep8 standard
This commit is contained in:
parent
44f9cfaaf1
commit
8993c55e6e
31 changed files with 1259 additions and 868 deletions
|
|
@ -1,8 +1,18 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import locale
|
||||
import os
|
||||
|
||||
from codecs import open
|
||||
from shutil import rmtree
|
||||
from tempfile import mkdtemp
|
||||
|
||||
from pelican.generators import (ArticlesGenerator, Generator, PagesGenerator,
|
||||
StaticGenerator, TemplatePagesGenerator)
|
||||
from pelican.tests.support import get_settings, unittest
|
||||
from pelican.writers import Writer
|
||||
|
||||
try:
|
||||
from unittest.mock import MagicMock
|
||||
except ImportError:
|
||||
|
|
@ -10,14 +20,7 @@ except ImportError:
|
|||
from mock import MagicMock
|
||||
except ImportError:
|
||||
MagicMock = False
|
||||
from shutil import rmtree
|
||||
from tempfile import mkdtemp
|
||||
|
||||
from pelican.generators import (Generator, ArticlesGenerator, PagesGenerator,
|
||||
StaticGenerator, TemplatePagesGenerator)
|
||||
from pelican.writers import Writer
|
||||
from pelican.tests.support import unittest, get_settings
|
||||
import locale
|
||||
|
||||
CUR_DIR = os.path.dirname(__file__)
|
||||
CONTENT_DIR = os.path.join(CUR_DIR, 'content')
|
||||
|
|
@ -35,7 +38,6 @@ class TestGenerator(unittest.TestCase):
|
|||
def tearDown(self):
|
||||
locale.setlocale(locale.LC_ALL, self.old_locale)
|
||||
|
||||
|
||||
def test_include_path(self):
|
||||
self.settings['IGNORE_FILES'] = {'ignored1.rst', 'ignored2.rst'}
|
||||
|
||||
|
|
@ -52,7 +54,8 @@ class TestGenerator(unittest.TestCase):
|
|||
"""Test that Generator.get_files() properly excludes directories.
|
||||
"""
|
||||
# We use our own Generator so we can give it our own content path
|
||||
generator = Generator(context=self.settings.copy(),
|
||||
generator = Generator(
|
||||
context=self.settings.copy(),
|
||||
settings=self.settings,
|
||||
path=os.path.join(CUR_DIR, 'nested_content'),
|
||||
theme=self.settings['THEME'], output_path=None)
|
||||
|
|
@ -60,34 +63,42 @@ class TestGenerator(unittest.TestCase):
|
|||
filepaths = generator.get_files(paths=['maindir'])
|
||||
found_files = {os.path.basename(f) for f in filepaths}
|
||||
expected_files = {'maindir.md', 'subdir.md'}
|
||||
self.assertFalse(expected_files - found_files,
|
||||
self.assertFalse(
|
||||
expected_files - found_files,
|
||||
"get_files() failed to find one or more files")
|
||||
|
||||
# Test string as `paths` argument rather than list
|
||||
filepaths = generator.get_files(paths='maindir')
|
||||
found_files = {os.path.basename(f) for f in filepaths}
|
||||
expected_files = {'maindir.md', 'subdir.md'}
|
||||
self.assertFalse(expected_files - found_files,
|
||||
self.assertFalse(
|
||||
expected_files - found_files,
|
||||
"get_files() failed to find one or more files")
|
||||
|
||||
filepaths = generator.get_files(paths=[''], exclude=['maindir'])
|
||||
found_files = {os.path.basename(f) for f in filepaths}
|
||||
self.assertNotIn('maindir.md', found_files,
|
||||
self.assertNotIn(
|
||||
'maindir.md', found_files,
|
||||
"get_files() failed to exclude a top-level directory")
|
||||
self.assertNotIn('subdir.md', found_files,
|
||||
self.assertNotIn(
|
||||
'subdir.md', found_files,
|
||||
"get_files() failed to exclude a subdir of an excluded directory")
|
||||
|
||||
filepaths = generator.get_files(paths=[''],
|
||||
filepaths = generator.get_files(
|
||||
paths=[''],
|
||||
exclude=[os.path.join('maindir', 'subdir')])
|
||||
found_files = {os.path.basename(f) for f in filepaths}
|
||||
self.assertNotIn('subdir.md', found_files,
|
||||
self.assertNotIn(
|
||||
'subdir.md', found_files,
|
||||
"get_files() failed to exclude a subdirectory")
|
||||
|
||||
filepaths = generator.get_files(paths=[''], exclude=['subdir'])
|
||||
found_files = {os.path.basename(f) for f in filepaths}
|
||||
self.assertIn('subdir.md', found_files,
|
||||
self.assertIn(
|
||||
'subdir.md', found_files,
|
||||
"get_files() excluded a subdirectory by name, ignoring its path")
|
||||
|
||||
|
||||
class TestArticlesGenerator(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
|
|
@ -96,7 +107,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings['DEFAULT_CATEGORY'] = 'Default'
|
||||
settings['DEFAULT_DATE'] = (1970, 1, 1)
|
||||
settings['READERS'] = {'asc': None}
|
||||
settings['CACHE_CONTENT'] = False # cache not needed for this logic tests
|
||||
settings['CACHE_CONTENT'] = False
|
||||
|
||||
cls.generator = ArticlesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
|
|
@ -152,25 +163,30 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
['Test mkd File', 'published', 'test', 'article'],
|
||||
['This is a super article !', 'published', 'Yeah', 'article'],
|
||||
['This is a super article !', 'published', 'Yeah', 'article'],
|
||||
['Article with Nonconformant HTML meta tags', 'published', 'Default', 'article'],
|
||||
['Article with Nonconformant HTML meta tags', 'published',
|
||||
'Default', 'article'],
|
||||
['This is a super article !', 'published', 'yeah', 'article'],
|
||||
['This is a super article !', 'published', 'yeah', 'article'],
|
||||
['This is a super article !', 'published', 'yeah', 'article'],
|
||||
['This is a super article !', 'published', 'Default', 'article'],
|
||||
['This is an article with category !', 'published', 'yeah',
|
||||
'article'],
|
||||
['This is an article with multiple authors!', 'published', 'Default', 'article'],
|
||||
['This is an article with multiple authors!', 'published', 'Default', 'article'],
|
||||
['This is an article with multiple authors in list format!', 'published', 'Default', 'article'],
|
||||
['This is an article with multiple authors in lastname, firstname format!', 'published', 'Default', 'article'],
|
||||
['This is an article with multiple authors!', 'published',
|
||||
'Default', 'article'],
|
||||
['This is an article with multiple authors!', 'published',
|
||||
'Default', 'article'],
|
||||
['This is an article with multiple authors in list format!',
|
||||
'published', 'Default', 'article'],
|
||||
['This is an article with multiple authors in lastname, '
|
||||
'firstname format!', 'published', 'Default', 'article'],
|
||||
['This is an article without category !', 'published', 'Default',
|
||||
'article'],
|
||||
'article'],
|
||||
['This is an article without category !', 'published',
|
||||
'TestCategory', 'article'],
|
||||
['An Article With Code Block To Test Typogrify Ignore',
|
||||
'published', 'Default', 'article'],
|
||||
['マックOS X 10.8でパイソンとVirtualenvをインストールと設定', 'published',
|
||||
'指導書', 'article'],
|
||||
'published', 'Default', 'article'],
|
||||
['マックOS X 10.8でパイソンとVirtualenvをインストールと設定',
|
||||
'published', '指導書', 'article'],
|
||||
]
|
||||
self.assertEqual(sorted(articles_expected), sorted(self.articles))
|
||||
|
||||
|
|
@ -292,7 +308,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
generator.generate_period_archives(write)
|
||||
dates = [d for d in generator.dates if d.date.year == 1970]
|
||||
self.assertEqual(len(dates), 1)
|
||||
#among other things it must have at least been called with this
|
||||
# among other things it must have at least been called with this
|
||||
settings["period"] = (1970,)
|
||||
write.assert_called_with("posts/1970/index.html",
|
||||
generator.get_template("period_archives"),
|
||||
|
|
@ -300,37 +316,42 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
blog=True, dates=dates)
|
||||
|
||||
del settings["period"]
|
||||
settings['MONTH_ARCHIVE_SAVE_AS'] = 'posts/{date:%Y}/{date:%b}/index.html'
|
||||
settings['MONTH_ARCHIVE_SAVE_AS'] = \
|
||||
'posts/{date:%Y}/{date:%b}/index.html'
|
||||
generator = ArticlesGenerator(
|
||||
context=settings, settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
generator.generate_context()
|
||||
write = MagicMock()
|
||||
generator.generate_period_archives(write)
|
||||
dates = [d for d in generator.dates if d.date.year == 1970
|
||||
and d.date.month == 1]
|
||||
dates = [d for d in generator.dates
|
||||
if d.date.year == 1970 and d.date.month == 1]
|
||||
self.assertEqual(len(dates), 1)
|
||||
settings["period"] = (1970, "January")
|
||||
#among other things it must have at least been called with this
|
||||
# among other things it must have at least been called with this
|
||||
write.assert_called_with("posts/1970/Jan/index.html",
|
||||
generator.get_template("period_archives"),
|
||||
settings,
|
||||
blog=True, dates=dates)
|
||||
|
||||
del settings["period"]
|
||||
settings['DAY_ARCHIVE_SAVE_AS'] = 'posts/{date:%Y}/{date:%b}/{date:%d}/index.html'
|
||||
settings['DAY_ARCHIVE_SAVE_AS'] = \
|
||||
'posts/{date:%Y}/{date:%b}/{date:%d}/index.html'
|
||||
generator = ArticlesGenerator(
|
||||
context=settings, settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
generator.generate_context()
|
||||
write = MagicMock()
|
||||
generator.generate_period_archives(write)
|
||||
dates = [d for d in generator.dates if d.date.year == 1970
|
||||
and d.date.month == 1
|
||||
and d.date.day == 1]
|
||||
dates = [
|
||||
d for d in generator.dates if
|
||||
d.date.year == 1970 and
|
||||
d.date.month == 1 and
|
||||
d.date.day == 1
|
||||
]
|
||||
self.assertEqual(len(dates), 1)
|
||||
settings["period"] = (1970, "January", 1)
|
||||
#among other things it must have at least been called with this
|
||||
# among other things it must have at least been called with this
|
||||
write.assert_called_with("posts/1970/Jan/01/index.html",
|
||||
generator.get_template("period_archives"),
|
||||
settings,
|
||||
|
|
@ -347,11 +368,14 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
def test_generate_authors(self):
|
||||
"""Check authors generation."""
|
||||
authors = [author.name for author, _ in self.generator.authors]
|
||||
authors_expected = sorted(['Alexis Métaireau', 'Author, First', 'Author, Second', 'First Author', 'Second Author'])
|
||||
authors_expected = sorted(
|
||||
['Alexis Métaireau', 'Author, First', 'Author, Second',
|
||||
'First Author', 'Second Author'])
|
||||
self.assertEqual(sorted(authors), authors_expected)
|
||||
# test for slug
|
||||
authors = [author.slug for author, _ in self.generator.authors]
|
||||
authors_expected = ['alexis-metaireau', 'author-first', 'author-second', 'first-author', 'second-author']
|
||||
authors_expected = ['alexis-metaireau', 'author-first',
|
||||
'author-second', 'first-author', 'second-author']
|
||||
self.assertEqual(sorted(authors), sorted(authors_expected))
|
||||
|
||||
def test_standard_metadata_in_default_metadata(self):
|
||||
|
|
@ -391,7 +415,6 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings = get_settings(filenames={})
|
||||
settings['DEFAULT_CATEGORY'] = 'Default'
|
||||
settings['DEFAULT_DATE'] = (1970, 1, 1)
|
||||
settings['CACHE_CONTENT'] = False # cache not needed for this logic tests
|
||||
settings['ARTICLE_ORDER_BY'] = 'title'
|
||||
|
||||
generator = ArticlesGenerator(
|
||||
|
|
@ -420,7 +443,8 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
'This is a super article !',
|
||||
'This is a super article !',
|
||||
'This is an article with category !',
|
||||
'This is an article with multiple authors in lastname, firstname format!',
|
||||
('This is an article with multiple authors in lastname, '
|
||||
'firstname format!'),
|
||||
'This is an article with multiple authors in list format!',
|
||||
'This is an article with multiple authors!',
|
||||
'This is an article with multiple authors!',
|
||||
|
|
@ -435,7 +459,6 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings = get_settings(filenames={})
|
||||
settings['DEFAULT_CATEGORY'] = 'Default'
|
||||
settings['DEFAULT_DATE'] = (1970, 1, 1)
|
||||
settings['CACHE_CONTENT'] = False # cache not needed for this logic tests
|
||||
settings['ARTICLE_ORDER_BY'] = 'reversed-title'
|
||||
|
||||
generator = ArticlesGenerator(
|
||||
|
|
@ -561,7 +584,7 @@ class TestPageGenerator(unittest.TestCase):
|
|||
are generated correctly on pages
|
||||
"""
|
||||
settings = get_settings(filenames={})
|
||||
settings['PAGE_PATHS'] = ['TestPages'] # relative to CUR_DIR
|
||||
settings['PAGE_PATHS'] = ['TestPages'] # relative to CUR_DIR
|
||||
settings['CACHE_PATH'] = self.temp_cache
|
||||
settings['DEFAULT_DATE'] = (1970, 1, 1)
|
||||
|
||||
|
|
@ -586,7 +609,6 @@ class TestTemplatePagesGenerator(unittest.TestCase):
|
|||
self.old_locale = locale.setlocale(locale.LC_ALL)
|
||||
locale.setlocale(locale.LC_ALL, str('C'))
|
||||
|
||||
|
||||
def tearDown(self):
|
||||
rmtree(self.temp_content)
|
||||
rmtree(self.temp_output)
|
||||
|
|
@ -632,59 +654,67 @@ class TestStaticGenerator(unittest.TestCase):
|
|||
def test_static_excludes(self):
|
||||
"""Test that StaticGenerator respects STATIC_EXCLUDES.
|
||||
"""
|
||||
settings = get_settings(STATIC_EXCLUDES=['subdir'],
|
||||
PATH=self.content_path, STATIC_PATHS=[''])
|
||||
settings = get_settings(
|
||||
STATIC_EXCLUDES=['subdir'],
|
||||
PATH=self.content_path,
|
||||
STATIC_PATHS=[''],
|
||||
filenames={})
|
||||
context = settings.copy()
|
||||
context['filenames'] = {}
|
||||
|
||||
StaticGenerator(context=context, settings=settings,
|
||||
StaticGenerator(
|
||||
context=context, settings=settings,
|
||||
path=settings['PATH'], output_path=None,
|
||||
theme=settings['THEME']).generate_context()
|
||||
|
||||
staticnames = [os.path.basename(c.source_path)
|
||||
for c in context['staticfiles']]
|
||||
for c in context['staticfiles']]
|
||||
|
||||
self.assertNotIn('subdir_fake_image.jpg', staticnames,
|
||||
self.assertNotIn(
|
||||
'subdir_fake_image.jpg', staticnames,
|
||||
"StaticGenerator processed a file in a STATIC_EXCLUDES directory")
|
||||
self.assertIn('fake_image.jpg', staticnames,
|
||||
self.assertIn(
|
||||
'fake_image.jpg', staticnames,
|
||||
"StaticGenerator skipped a file that it should have included")
|
||||
|
||||
def test_static_exclude_sources(self):
|
||||
"""Test that StaticGenerator respects STATIC_EXCLUDE_SOURCES.
|
||||
"""
|
||||
# Test STATIC_EXCLUDE_SOURCES=True
|
||||
|
||||
settings = get_settings(STATIC_EXCLUDE_SOURCES=True,
|
||||
PATH=self.content_path, PAGE_PATHS=[''], STATIC_PATHS=[''],
|
||||
CACHE_CONTENT=False)
|
||||
settings = get_settings(
|
||||
STATIC_EXCLUDE_SOURCES=True,
|
||||
PATH=self.content_path,
|
||||
PAGE_PATHS=[''],
|
||||
STATIC_PATHS=[''],
|
||||
CACHE_CONTENT=False,
|
||||
filenames={})
|
||||
context = settings.copy()
|
||||
context['filenames'] = {}
|
||||
|
||||
for generator_class in (PagesGenerator, StaticGenerator):
|
||||
generator_class(context=context, settings=settings,
|
||||
generator_class(
|
||||
context=context, settings=settings,
|
||||
path=settings['PATH'], output_path=None,
|
||||
theme=settings['THEME']).generate_context()
|
||||
|
||||
staticnames = [os.path.basename(c.source_path)
|
||||
for c in context['staticfiles']]
|
||||
for c in context['staticfiles']]
|
||||
|
||||
self.assertFalse(any(name.endswith(".md") for name in staticnames),
|
||||
self.assertFalse(
|
||||
any(name.endswith(".md") for name in staticnames),
|
||||
"STATIC_EXCLUDE_SOURCES=True failed to exclude a markdown file")
|
||||
|
||||
# Test STATIC_EXCLUDE_SOURCES=False
|
||||
|
||||
settings.update(STATIC_EXCLUDE_SOURCES=False)
|
||||
context = settings.copy()
|
||||
context['filenames'] = {}
|
||||
|
||||
for generator_class in (PagesGenerator, StaticGenerator):
|
||||
generator_class(context=context, settings=settings,
|
||||
generator_class(
|
||||
context=context, settings=settings,
|
||||
path=settings['PATH'], output_path=None,
|
||||
theme=settings['THEME']).generate_context()
|
||||
|
||||
staticnames = [os.path.basename(c.source_path)
|
||||
for c in context['staticfiles']]
|
||||
for c in context['staticfiles']]
|
||||
|
||||
self.assertTrue(any(name.endswith(".md") for name in staticnames),
|
||||
self.assertTrue(
|
||||
any(name.endswith(".md") for name in staticnames),
|
||||
"STATIC_EXCLUDE_SOURCES=False failed to include a markdown file")
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue