Mercurial > piecrust2
view tests/test_sources_posts.py @ 190:430ee5b80962
serve: Make the server find assets generated by external tools.
When a processor is bypassing PieCrust's pipeline, we don't know what
output files they have produced, so if we don't find an asset in the record
for a given path, we quickly check the output folder for any matching file
there. If there is, just return it.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 11 Jan 2015 22:58:38 -0800 |
parents | cb6eadea0845 |
children | e7b865f8f335 |
line wrap: on
line source
import os import pytest from .mockutil import mock_fs, mock_fs_scope @pytest.mark.parametrize('fs, src_type, expected_paths, expected_metadata', [ (mock_fs(), 'flat', [], []), (mock_fs().withPage('test/2014-01-01_foo.md'), 'flat', ['2014-01-01_foo.md'], [(2014, 1, 1, 'foo')]), (mock_fs(), 'shallow', [], []), (mock_fs().withPage('test/2014/01-01_foo.md'), 'shallow', ['2014/01-01_foo.md'], [(2014, 1, 1, 'foo')]), (mock_fs(), 'hierarchy', [], []), (mock_fs().withPage('test/2014/01/01_foo.md'), 'hierarchy', ['2014/01/01_foo.md'], [(2014, 1, 1, 'foo')]), ]) def test_post_source_factories(fs, src_type, expected_paths, expected_metadata): fs.withConfig({ 'site': { 'sources': { 'test': {'type': 'posts/%s' % src_type}}, 'routes': [ {'url': '/%slug%', 'source': 'test'}] } }) fs.withDir('kitchen/test') with mock_fs_scope(fs): app = fs.getApp(cache=False) s = app.getSource('test') facs = list(s.buildPageFactories()) paths = [f.rel_path for f in facs] assert paths == expected_paths metadata = [ (f.metadata['year'], f.metadata['month'], f.metadata['day'], f.metadata['slug']) for f in facs] assert metadata == expected_metadata