Mercurial > piecrust2
view tests/test_pipelines_page.py @ 1121:41b7ce0d5131
internal: PEP8.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 27 Feb 2018 21:44:45 -0800 |
parents | 45ad976712ec |
children |
line wrap: on
line source
import time import os.path import urllib.parse import pytest from piecrust.pipelines.records import MultiRecord from piecrust.pipelines._pagebaker import get_output_path from .mockutil import get_mock_app, mock_fs, mock_fs_scope @pytest.mark.parametrize('uri, pretty, expected', [ # Pretty URLs ('', True, 'index.html'), ('2', True, '2/index.html'), ('foo', True, 'foo/index.html'), ('foo/2', True, 'foo/2/index.html'), ('foo/bar', True, 'foo/bar/index.html'), ('foo/bar/2', True, 'foo/bar/2/index.html'), ('foo.ext', True, 'foo.ext/index.html'), ('foo.ext/2', True, 'foo.ext/2/index.html'), ('foo/bar.ext', True, 'foo/bar.ext/index.html'), ('foo/bar.ext/2', True, 'foo/bar.ext/2/index.html'), ('foo.bar.ext', True, 'foo.bar.ext/index.html'), ('foo.bar.ext/2', True, 'foo.bar.ext/2/index.html'), # Ugly URLs ('', False, 'index.html'), ('2.html', False, '2.html'), ('foo.html', False, 'foo.html'), ('foo/2.html', False, 'foo/2.html'), ('foo/bar.html', False, 'foo/bar.html'), ('foo/bar/2.html', False, 'foo/bar/2.html'), ('foo.ext', False, 'foo.ext'), ('foo/2.ext', False, 'foo/2.ext'), ('foo/bar.ext', False, 'foo/bar.ext'), ('foo/bar/2.ext', False, 'foo/bar/2.ext'), ('foo.bar.ext', False, 'foo.bar.ext'), ('foo.bar/2.ext', False, 'foo.bar/2.ext') ]) def test_get_output_path(uri, pretty, expected): app = get_mock_app() if pretty: app.config.set('site/pretty_urls', True) assert app.config.get('site/pretty_urls') == pretty out_dir = '/destination' for site_root in ['/', '/whatever/', '/~johndoe/']: app.config.set('site/root', urllib.parse.quote(site_root)) path = get_output_path(app, out_dir, urllib.parse.quote(site_root) + uri, pretty) expected = os.path.normpath( os.path.join('/destination', expected)) assert expected == path def test_removed(): fs = (mock_fs() .withConfig() .withPage('pages/foo.md', {'layout': 'none', 'format': 'none'}, "a foo page") .withPage('pages/_index.md', {'layout': 'none', 'format': 'none'}, "something")) with mock_fs_scope(fs): fs.runChef('bake') structure = fs.getStructure('kitchen/_counter') assert structure == { 'foo.html': 'a foo page', 'index.html': 'something'} os.remove(fs.path('kitchen/pages/foo.md')) fs.runChef('bake') structure = fs.getStructure('kitchen/_counter') assert structure == { 'index.html': 'something'} def test_record_version_change(): fs = (mock_fs() .withConfig() .withPage('pages/foo.md', {'layout': 'none', 'format': 'none'}, 'a foo page')) with mock_fs_scope(fs): time.sleep(1) fs.runChef('bake', '-o', fs.path('counter')) time.sleep(0.1) mtime = os.path.getmtime(fs.path('counter/foo.html')) time.sleep(1) fs.runChef('bake', '-o', fs.path('counter')) time.sleep(0.1) assert mtime == os.path.getmtime(fs.path('counter/foo.html')) MultiRecord.RECORD_VERSION += 1 try: time.sleep(1) fs.runChef('bake', '-o', fs.path('counter')) time.sleep(0.1) assert mtime < os.path.getmtime(fs.path('counter/foo.html')) finally: MultiRecord.RECORD_VERSION -= 1