Mercurial > piecrust2
diff tests/test_processing_base.py @ 35:e4c345dcf33c
More unit tests, fix a bug with the skip patterns.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 20 Aug 2014 21:46:27 -0700 |
parents | |
children | 485682a6de50 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test_processing_base.py Wed Aug 20 21:46:27 2014 -0700 @@ -0,0 +1,61 @@ +import pytest +from piecrust.processing.base import ProcessorPipeline +from .mockutil import mock_fs, mock_fs_scope + + +def _get_pipeline(fs, **kwargs): + return ProcessorPipeline(fs.getApp(), fs.path('counter'), + num_workers=1, **kwargs) + +def test_empty(): + fs = mock_fs() + with mock_fs_scope(fs): + pp = _get_pipeline(fs) + pp.filterProcessors(['copy']) + expected = {} + assert expected == fs.getStructure('counter') + pp.run() + expected = {} + assert expected == fs.getStructure('counter') + + +def test_one_file(): + fs = (mock_fs() + .withFile('kitchen/something.html', 'A test file.')) + with mock_fs_scope(fs): + pp = _get_pipeline(fs) + pp.filterProcessors(['copy']) + expected = {} + assert expected == fs.getStructure('counter') + pp.run() + expected = {'something.html': 'A test file.'} + assert expected == fs.getStructure('counter') + + +@pytest.mark.parametrize('patterns, expected', [ + (['_'], + {'something.html': 'A test file.'}), + (['html'], + {}), + (['/^_/'], + {'something.html': 'A test file.', + 'foo': {'_important.html': 'Important!'}}) + ]) +def test_skip_pattern(patterns, expected): + fs = (mock_fs() + .withFile('kitchen/something.html', 'A test file.') + .withFile('kitchen/_hidden.html', 'Shhh') + .withFile('kitchen/foo/_important.html', 'Important!')) + with mock_fs_scope(fs): + pp = _get_pipeline(fs, skip_patterns=['/^_/']) + pp.filterProcessors(['copy']) + expected = {} + assert expected == fs.getStructure('counter') + pp.run() + expected = { + 'something.html': 'A test file.', + 'foo': { + '_important.html': 'Important!'} + } + assert expected == fs.getStructure('counter') +