annotate tests/test_templating_pystacheengine.py @ 196:154b8df04829

processing: Add Compass and Sass processors. The Sass processor is similar to the Less processor, i.e. it tries to be part of the structured pipeline processing by using the mapfile produced by the Sass compiler in order to provide a list of dependencies. The Compass processor is completely acting outside of the pipeline, so the server won't know what's up to date and what's not. It's expected that the user will run `compass watch` to keep things up to date. However, it will require to pass the server's cache directory to put things in, so we'll need to add some easy way to get that path for the user.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 11 Jan 2015 23:08:49 -0800
parents 139179dc7abd
children 4b1019bb2533
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
185
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 import pytest
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 from .mockutil import (
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 mock_fs, mock_fs_scope, get_simple_page, render_simple_page)
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 app_config = {
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 'site': {
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 'default_format': 'none',
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9 'default_template_engine': 'mustache'},
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 'foo': 'bar'}
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 page_config = {'layout': 'none'}
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 open_patches = ['pystache.common']
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 @pytest.mark.parametrize(
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17 'contents, expected',
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18 [
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19 ("Raw text", "Raw text"),
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 ("This is {{foo}}", "This is bar"),
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 ("Info:\n{{#page}}\nMy URL: {{url}}\n{{/page}}\n",
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 "Info:\nMy URL: /foo\n")
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 ])
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 def test_simple(contents, expected):
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25 fs = (mock_fs()
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 .withConfig(app_config)
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 .withPage('pages/foo', config=page_config, contents=contents))
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 with mock_fs_scope(fs, open_patches=open_patches):
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 app = fs.getApp()
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 page = get_simple_page(app, 'foo.md')
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 output = render_simple_page(page, '/foo')
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 assert output == expected
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 def test_layout():
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36 contents = "Blah\n"
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 layout = "{{content}}\nFor site: {{foo}}\n"
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 expected = "Blah\n\nFor site: bar\n"
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 fs = (mock_fs()
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 .withConfig(app_config)
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41 .withAsset('templates/blah.mustache', layout)
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 .withPage('pages/foo', config={'layout': 'blah'},
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 contents=contents))
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44 with mock_fs_scope(fs, open_patches=open_patches):
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45 app = fs.getApp()
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46 page = get_simple_page(app, 'foo.md')
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47 output = render_simple_page(page, '/foo')
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
48 assert output == expected
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51 def test_partial():
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52 contents = "Info:\n{{#page}}\n{{> page_info}}\n{{/page}}\n"
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
53 partial = "- URL: {{url}}\n- SLUG: {{slug}}\n"
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
54 expected = "Info:\n- URL: /foo\n- SLUG: foo\n"
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
55 fs = (mock_fs()
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
56 .withConfig(app_config)
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
57 .withAsset('templates/page_info.mustache', partial)
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
58 .withPage('pages/foo', config=page_config, contents=contents))
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
59 with mock_fs_scope(fs, open_patches=open_patches):
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
60 app = fs.getApp()
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
61 page = get_simple_page(app, 'foo.md')
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
62 output = render_simple_page(page, '/foo')
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
63 assert output == expected
139179dc7abd render: Add support for a Mustache template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
64