Mercurial > piecrust2
annotate tests/test_sources_base.py @ 113:de257cc40ce1
Re-enable proper caching of rendered segments in server.
The server keeps records on files that are processed while the server is
running. Disk caching is simply disabled for files that are known to use
other pages -- because unlike the baker, there's no cheap way to know
which files are up to date or not, and rendering is faster enough anyway.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 19 Oct 2014 00:30:44 -0700 |
parents | b536022078a2 |
children | 8d16ca75075f |
rev | line source |
---|---|
30
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
1 import os |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
2 import pytest |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
3 from piecrust.app import PieCrust |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
4 from .mockutil import mock_fs, mock_fs_scope |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
5 |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
6 |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
7 @pytest.mark.parametrize('fs, expected_paths, expected_slugs', [ |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
8 (mock_fs(), [], []), |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
9 (mock_fs().withPage('test/foo.html'), |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
10 ['foo.html'], ['foo']), |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
11 (mock_fs().withPage('test/foo.md'), |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
12 ['foo.md'], ['foo']), |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
13 (mock_fs().withPage('test/foo.ext'), |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
14 ['foo.ext'], ['foo.ext']), |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
15 (mock_fs().withPage('test/foo/bar.html'), |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
16 ['foo/bar.html'], ['foo/bar']), |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
17 (mock_fs().withPage('test/foo/bar.md'), |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
18 ['foo/bar.md'], ['foo/bar']), |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
19 (mock_fs().withPage('test/foo/bar.ext'), |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
20 ['foo/bar.ext'], ['foo/bar.ext']), |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
21 ]) |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
22 def test_default_source_factories(fs, expected_paths, expected_slugs): |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
23 fs.withConfig({ |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
24 'site': { |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
25 'sources': { |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
26 'test': {}}, |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
27 'routes': [ |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
28 {'url': '/%path%', 'source': 'test'}] |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
29 } |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
30 }) |
36
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
30
diff
changeset
|
31 fs.withDir('kitchen/test') |
30
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
32 with mock_fs_scope(fs): |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
33 app = PieCrust(fs.path('kitchen'), cache=False) |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
34 s = app.getSource('test') |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
35 facs = list(s.buildPageFactories()) |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
36 paths = [f.rel_path for f in facs] |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
37 assert paths == expected_paths |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
38 slugs = [f.metadata['path'] for f in facs] |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
39 assert slugs == expected_slugs |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
40 |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
41 |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
42 |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
43 @pytest.mark.parametrize('ref_path, expected', [ |
36
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
30
diff
changeset
|
44 ('foo.html', '/kitchen/test/foo.html'), |
485682a6de50
New site layout support.
Ludovic Chabant <ludovic@chabant.com>
parents:
30
diff
changeset
|
45 ('foo/bar.html', '/kitchen/test/foo/bar.html'), |
30
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
46 ]) |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
47 def test_default_source_resolve_ref(ref_path, expected): |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
48 fs = mock_fs() |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
49 fs.withConfig({ |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
50 'site': { |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
51 'sources': { |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
52 'test': {}}, |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
53 'routes': [ |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
54 {'url': '/%path%', 'source': 'test'}] |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
55 } |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
56 }) |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
57 expected = fs.path(expected).replace('/', os.sep) |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
58 with mock_fs_scope(fs): |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
59 app = PieCrust(fs.path('kitchen'), cache=False) |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
60 s = app.getSource('test') |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
61 actual = s.resolveRef(ref_path) |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
62 assert actual == expected |
4bd840ae75cd
Fix stupid bug in default source, add some unit tests.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
63 |