forked from github/pelican
remove plugins, update docs and update dependecies
This commit is contained in:
parent
886c8d649c
commit
c4b3ad58e8
20 changed files with 16 additions and 1193 deletions
|
|
@ -1,101 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
'''Core plugins unit tests'''
|
||||
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
from pelican.contents import Page
|
||||
from pelican.plugins import gzip_cache
|
||||
|
||||
from pelican.tests.test_contents import TEST_CONTENT, TEST_SUMMARY
|
||||
from pelican.tests.support import unittest, temporary_folder
|
||||
|
||||
|
||||
class TestGzipCache(unittest.TestCase):
|
||||
|
||||
def test_should_compress(self):
|
||||
# Some filetypes should compress and others shouldn't.
|
||||
self.assertTrue(gzip_cache.should_compress('foo.html'))
|
||||
self.assertTrue(gzip_cache.should_compress('bar.css'))
|
||||
self.assertTrue(gzip_cache.should_compress('baz.js'))
|
||||
self.assertTrue(gzip_cache.should_compress('foo.txt'))
|
||||
|
||||
self.assertFalse(gzip_cache.should_compress('foo.gz'))
|
||||
self.assertFalse(gzip_cache.should_compress('bar.png'))
|
||||
self.assertFalse(gzip_cache.should_compress('baz.mp3'))
|
||||
self.assertFalse(gzip_cache.should_compress('foo.mov'))
|
||||
|
||||
def test_creates_gzip_file(self):
|
||||
# A file matching the input filename with a .gz extension is created.
|
||||
|
||||
# The plugin walks over the output content after the finalized signal
|
||||
# so it is safe to assume that the file exists (otherwise walk would
|
||||
# not report it). Therefore, create a dummy file to use.
|
||||
with temporary_folder() as tempdir:
|
||||
_, a_html_filename = tempfile.mkstemp(suffix='.html', dir=tempdir)
|
||||
gzip_cache.create_gzip_file(a_html_filename)
|
||||
self.assertTrue(os.path.exists(a_html_filename + '.gz'))
|
||||
|
||||
|
||||
class TestSummary(unittest.TestCase):
|
||||
def setUp(self):
|
||||
super(TestSummary, self).setUp()
|
||||
|
||||
from pelican.plugins import summary
|
||||
|
||||
summary.register()
|
||||
summary.initialized(None)
|
||||
self.page_kwargs = {
|
||||
'content': TEST_CONTENT,
|
||||
'context': {
|
||||
'localsiteurl': '',
|
||||
},
|
||||
'metadata': {
|
||||
'summary': TEST_SUMMARY,
|
||||
'title': 'foo bar',
|
||||
'author': 'Blogger',
|
||||
},
|
||||
}
|
||||
|
||||
def _copy_page_kwargs(self):
|
||||
# make a deep copy of page_kwargs
|
||||
page_kwargs = dict([(key, self.page_kwargs[key]) for key in
|
||||
self.page_kwargs])
|
||||
for key in page_kwargs:
|
||||
if not isinstance(page_kwargs[key], dict):
|
||||
break
|
||||
page_kwargs[key] = dict([(subkey, page_kwargs[key][subkey])
|
||||
for subkey in page_kwargs[key]])
|
||||
|
||||
return page_kwargs
|
||||
|
||||
def test_end_summary(self):
|
||||
page_kwargs = self._copy_page_kwargs()
|
||||
del page_kwargs['metadata']['summary']
|
||||
page_kwargs['content'] = (
|
||||
TEST_SUMMARY + '<!-- PELICAN_END_SUMMARY -->' + TEST_CONTENT)
|
||||
page = Page(**page_kwargs)
|
||||
# test both the summary and the marker removal
|
||||
self.assertEqual(page.summary, TEST_SUMMARY)
|
||||
self.assertEqual(page.content, TEST_SUMMARY + TEST_CONTENT)
|
||||
|
||||
def test_begin_summary(self):
|
||||
page_kwargs = self._copy_page_kwargs()
|
||||
del page_kwargs['metadata']['summary']
|
||||
page_kwargs['content'] = (
|
||||
'FOOBAR<!-- PELICAN_BEGIN_SUMMARY -->' + TEST_CONTENT)
|
||||
page = Page(**page_kwargs)
|
||||
# test both the summary and the marker removal
|
||||
self.assertEqual(page.summary, TEST_CONTENT)
|
||||
self.assertEqual(page.content, 'FOOBAR' + TEST_CONTENT)
|
||||
|
||||
def test_begin_end_summary(self):
|
||||
page_kwargs = self._copy_page_kwargs()
|
||||
del page_kwargs['metadata']['summary']
|
||||
page_kwargs['content'] = (
|
||||
'FOOBAR<!-- PELICAN_BEGIN_SUMMARY -->' + TEST_SUMMARY +
|
||||
'<!-- PELICAN_END_SUMMARY -->' + TEST_CONTENT)
|
||||
page = Page(**page_kwargs)
|
||||
# test both the summary and the marker removal
|
||||
self.assertEqual(page.summary, TEST_SUMMARY)
|
||||
self.assertEqual(page.content, 'FOOBAR' + TEST_SUMMARY + TEST_CONTENT)
|
||||
|
|
@ -1,106 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# from __future__ import unicode_literals
|
||||
|
||||
import hashlib
|
||||
import locale
|
||||
import os
|
||||
from codecs import open
|
||||
from tempfile import mkdtemp
|
||||
from shutil import rmtree
|
||||
|
||||
from pelican import Pelican
|
||||
from pelican.settings import read_settings
|
||||
from .support import unittest, skipIfNoExecutable, module_exists
|
||||
|
||||
CUR_DIR = os.path.dirname(__file__)
|
||||
THEME_DIR = os.path.join(CUR_DIR, 'themes', 'assets')
|
||||
CSS_REF = open(os.path.join(THEME_DIR, 'static', 'css',
|
||||
'style.min.css')).read()
|
||||
CSS_HASH = hashlib.md5(CSS_REF).hexdigest()[0:8]
|
||||
|
||||
|
||||
@unittest.skipUnless(module_exists('webassets'), "webassets isn't installed")
|
||||
@skipIfNoExecutable(['scss', '-v'])
|
||||
@skipIfNoExecutable(['cssmin', '--version'])
|
||||
class TestWebAssets(unittest.TestCase):
|
||||
"""Base class for testing webassets."""
|
||||
|
||||
def setUp(self, override=None):
|
||||
self.temp_path = mkdtemp(prefix='pelicantests.')
|
||||
settings = {
|
||||
'PATH': os.path.join(CUR_DIR, 'content', 'TestCategory'),
|
||||
'OUTPUT_PATH': self.temp_path,
|
||||
'PLUGINS': ['pelican.plugins.assets', ],
|
||||
'THEME': THEME_DIR,
|
||||
'LOCALE': locale.normalize('en_US'),
|
||||
}
|
||||
if override:
|
||||
settings.update(override)
|
||||
|
||||
self.settings = read_settings(override=settings)
|
||||
pelican = Pelican(settings=self.settings)
|
||||
pelican.run()
|
||||
|
||||
def tearDown(self):
|
||||
rmtree(self.temp_path)
|
||||
|
||||
def check_link_tag(self, css_file, html_file):
|
||||
"""Check the presence of `css_file` in `html_file`."""
|
||||
|
||||
link_tag = ('<link rel="stylesheet" href="{css_file}">'
|
||||
.format(css_file=css_file))
|
||||
html = open(html_file).read()
|
||||
self.assertRegexpMatches(html, link_tag)
|
||||
|
||||
|
||||
class TestWebAssetsRelativeURLS(TestWebAssets):
|
||||
"""Test pelican with relative urls."""
|
||||
|
||||
def setUp(self):
|
||||
TestWebAssets.setUp(self, override={'RELATIVE_URLS': True})
|
||||
|
||||
def test_jinja2_ext(self):
|
||||
# Test that the Jinja2 extension was correctly added.
|
||||
|
||||
from webassets.ext.jinja2 import AssetsExtension
|
||||
self.assertIn(AssetsExtension, self.settings['JINJA_EXTENSIONS'])
|
||||
|
||||
def test_compilation(self):
|
||||
# Compare the compiled css with the reference.
|
||||
|
||||
gen_file = os.path.join(self.temp_path, 'theme', 'gen',
|
||||
'style.{0}.min.css'.format(CSS_HASH))
|
||||
self.assertTrue(os.path.isfile(gen_file))
|
||||
|
||||
css_new = open(gen_file).read()
|
||||
self.assertEqual(css_new, CSS_REF)
|
||||
|
||||
def test_template(self):
|
||||
# Look in the output files for the link tag.
|
||||
|
||||
css_file = './theme/gen/style.{0}.min.css'.format(CSS_HASH)
|
||||
html_files = ['index.html', 'archives.html',
|
||||
'this-is-an-article-with-category.html']
|
||||
for f in html_files:
|
||||
self.check_link_tag(css_file, os.path.join(self.temp_path, f))
|
||||
|
||||
self.check_link_tag(
|
||||
'../theme/gen/style.{0}.min.css'.format(CSS_HASH),
|
||||
os.path.join(self.temp_path, 'category/yeah.html'))
|
||||
|
||||
|
||||
class TestWebAssetsAbsoluteURLS(TestWebAssets):
|
||||
"""Test pelican with absolute urls."""
|
||||
|
||||
def setUp(self):
|
||||
TestWebAssets.setUp(self, override={'SITEURL': 'http://localhost'})
|
||||
|
||||
def test_absolute_url(self):
|
||||
# Look in the output files for the link tag with absolute url.
|
||||
|
||||
css_file = ('http://localhost/theme/gen/style.{0}.min.css'
|
||||
.format(CSS_HASH))
|
||||
html_files = ['index.html', 'archives.html',
|
||||
'this-is-an-article-with-category.html']
|
||||
for f in html_files:
|
||||
self.check_link_tag(css_file, os.path.join(self.temp_path, f))
|
||||
|
|
@ -1 +0,0 @@
|
|||
body{font:14px/1.5 "Droid Sans",sans-serif;background-color:#e4e4e4;color:#242424}a{color:red}a:hover{color:orange}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
/* -*- scss-compile-at-save: nil -*- */
|
||||
|
||||
$baseFontFamily : "Droid Sans", sans-serif;
|
||||
$textColor : #242424;
|
||||
$bodyBackground : #e4e4e4;
|
||||
|
||||
body {
|
||||
font: 14px/1.5 $baseFontFamily;
|
||||
background-color: $bodyBackground;
|
||||
color: $textColor;
|
||||
}
|
||||
|
||||
a {
|
||||
color: red;
|
||||
|
||||
&:hover {
|
||||
color: orange;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
{% extends "!simple/base.html" %}
|
||||
|
||||
{% block head %}
|
||||
{% assets filters="scss,cssmin", output="gen/style.%(version)s.min.css", "css/style.scss" %}
|
||||
<link rel="stylesheet" href="{{ SITEURL }}/{{ ASSET_URL }}">
|
||||
{% endassets %}
|
||||
{% endblock %}
|
||||
Loading…
Add table
Add a link
Reference in a new issue