Mercurial > piecrust2
diff tests/test_sources_autoconfig.py @ 979:45ad976712ec
tests: Big push to get the tests to pass again.
- Lots of fixes everywhere in the code.
- Try to handle debug logging in the multiprocessing worker pool when running in pytest. Not perfect, but usable for now.
- Replace all `.md` test files with `.html` since now a auto-format extension always sets the format.
- Replace `out` with `outfiles` in most places since now blog archives are added to the bake output and I don't want to add expected outputs for blog archives everywhere.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 29 Oct 2017 22:51:57 -0700 |
parents | 72f17534d58e |
children | 8adc27285d93 |
line wrap: on
line diff
--- a/tests/test_sources_autoconfig.py Sun Oct 29 22:46:41 2017 -0700 +++ b/tests/test_sources_autoconfig.py Sun Oct 29 22:51:57 2017 -0700 @@ -5,50 +5,43 @@ @pytest.mark.parametrize( - 'fs_fac, src_config, expected_paths, expected_metadata', + 'fs_fac, src_config, expected_path, expected_slug, expected_foos', [ - (lambda: mock_fs(), {}, [], []), + (lambda: mock_fs(), + {}, + None, '', []), (lambda: mock_fs().withPage('test/_index.md'), {}, - ['_index.md'], - [{'slug': '', 'config': {'foo': []}}]), + '_index.md', '', []), (lambda: mock_fs().withPage('test/something.md'), {}, - ['something.md'], - [{'slug': 'something', 'config': {'foo': []}}]), + 'something.md', 'something', []), (lambda: mock_fs().withPage('test/bar/something.md'), {}, - ['bar/something.md'], - [{'slug': 'something', 'config': {'foo': ['bar']}}]), + 'bar/something.md', 'something', ['bar']), (lambda: mock_fs().withPage('test/bar1/bar2/something.md'), {}, - ['bar1/bar2/something.md'], - [{'slug': 'something', 'config': {'foo': ['bar1', 'bar2']}}]), + 'bar1/bar2/something.md', 'something', ['bar1', 'bar2']), (lambda: mock_fs().withPage('test/something.md'), {'collapse_single_values': True}, - ['something.md'], - [{'slug': 'something', 'config': {'foo': None}}]), + 'something.md', 'something', None), (lambda: mock_fs().withPage('test/bar/something.md'), {'collapse_single_values': True}, - ['bar/something.md'], - [{'slug': 'something', 'config': {'foo': 'bar'}}]), + 'bar/something.md', 'something', 'bar'), (lambda: mock_fs().withPage('test/bar1/bar2/something.md'), {'collapse_single_values': True}, - ['bar1/bar2/something.md'], - [{'slug': 'something', 'config': {'foo': ['bar1', 'bar2']}}]), + 'bar1/bar2/something.md', 'something', ['bar1', 'bar2']), (lambda: mock_fs().withPage('test/something.md'), {'only_single_values': True}, - ['something.md'], - [{'slug': 'something', 'config': {'foo': None}}]), + 'something.md', 'something', None), (lambda: mock_fs().withPage('test/bar/something.md'), {'only_single_values': True}, - ['bar/something.md'], - [{'slug': 'something', 'config': {'foo': 'bar'}}]), + 'bar/something.md', 'something', 'bar') ]) -def test_autoconfig_source_factories(fs_fac, src_config, expected_paths, - expected_metadata): +def test_autoconfig_source_items( + fs_fac, src_config, expected_path, expected_slug, expected_foos): site_config = { 'sources': { 'test': {'type': 'autoconfig', @@ -65,10 +58,17 @@ app = fs.getApp() s = app.getSource('test') items = list(s.getAllContents()) - paths = [os.path.relpath(i.spec, s.fs_endpoint_path) for i in items] - assert paths == slashfix(expected_paths) - metadata = [i.metadata['route_params'] for i in items] - assert metadata == expected_metadata + + if expected_path is None: + assert len(items) == 0 + else: + assert len(items) == 1 + path = os.path.relpath(items[0].spec, s.fs_endpoint_path) + assert path == slashfix(expected_path) + slug = items[0].metadata['route_params']['slug'] + assert slug == expected_slug + foos = items[0].metadata['config']['foo'] + assert foos == expected_foos def test_autoconfig_fails_if_multiple_folders(): @@ -89,27 +89,28 @@ @pytest.mark.parametrize( - 'fs_fac, expected_paths, expected_metadata', + 'fs_fac, expected_paths, expected_route_params, expected_configs', [ - (lambda: mock_fs(), [], []), + (lambda: mock_fs(), [], [], []), (lambda: mock_fs().withPage('test/_index.md'), ['_index.md'], - [{'slug': '', - 'config': {'foo': 0, 'foo_trail': [0]}}]), + [{'slug': ''}], + [{'foo': 0, 'foo_trail': [0]}]), (lambda: mock_fs().withPage('test/something.md'), ['something.md'], - [{'slug': 'something', - 'config': {'foo': 0, 'foo_trail': [0]}}]), + [{'slug': 'something'}], + [{'foo': 0, 'foo_trail': [0]}]), (lambda: mock_fs().withPage('test/08_something.md'), ['08_something.md'], - [{'slug': 'something', - 'config': {'foo': 8, 'foo_trail': [8]}}]), + [{'slug': 'something'}], + [{'foo': 8, 'foo_trail': [8]}]), (lambda: mock_fs().withPage('test/02_there/08_something.md'), ['02_there/08_something.md'], - [{'slug': 'there/something', - 'config': {'foo': 8, 'foo_trail': [2, 8]}}]), + [{'slug': 'there/something'}], + [{'foo': 8, 'foo_trail': [2, 8]}]), ]) -def test_ordered_source_factories(fs_fac, expected_paths, expected_metadata): +def test_ordered_source_items(fs_fac, expected_paths, expected_route_params, + expected_configs): site_config = { 'sources': { 'test': {'type': 'ordered', @@ -124,11 +125,16 @@ with mock_fs_scope(fs): app = fs.getApp() s = app.getSource('test') - facs = list(s.buildPageFactories()) - paths = [f.rel_path for f in facs] + items = list(s.getAllContents()) + + paths = [os.path.relpath(f.spec, s.fs_endpoint_path) for f in items] assert paths == slashfix(expected_paths) - metadata = [f.metadata for f in facs] - assert metadata == expected_metadata + metadata = [f.metadata['route_params'] for f in items] + assert metadata == expected_route_params + configs = [f.metadata['config'] for f in items] + for c in configs: + c.pop('format') + assert configs == expected_configs @pytest.mark.parametrize( @@ -176,10 +182,11 @@ app = fs.getApp() s = app.getSource('test') route_metadata = {'slug': route_path} - factory = s.findContent(route_metadata) - if factory is None: + item = s.findContent(route_metadata) + if item is None: assert expected_path is None and expected_metadata is None - return - assert factory.rel_path == slashfix(expected_path) - assert factory.metadata == expected_metadata + else: + assert os.path.relpath(item.spec, s.fs_endpoint_path) == \ + slashfix(expected_path) + assert item.metadata == expected_metadata