annotate tests/test_templating_jinjaengine.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 a333cdadf5b0
children 4b1019bb2533
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
189
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 import pytest
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 from .mockutil import (
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 mock_fs, mock_fs_scope, get_simple_page, render_simple_page)
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 app_config = {
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 'site': {
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 'default_format': 'none',
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9 'default_template_engine': 'jinja'},
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 'foo': 'bar'}
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 page_config = {'layout': 'none'}
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 open_patches = ['jinja2.environment', 'jinja2.utils']
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 @pytest.mark.parametrize(
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17 'contents, expected',
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18 [
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19 ("Raw text", "Raw text"),
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 ("This is {{foo}}", "This is bar"),
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 ("Info:\nMy URL: {{page.url}}\n",
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 "Info:\nMy URL: /foo")
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 ])
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 def test_simple(contents, expected):
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25 fs = (mock_fs()
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 .withConfig(app_config)
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 .withPage('pages/foo', config=page_config, contents=contents))
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 with mock_fs_scope(fs, open_patches=open_patches):
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 app = fs.getApp()
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 page = get_simple_page(app, 'foo.md')
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 output = render_simple_page(page, '/foo')
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 assert output == expected
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 def test_layout():
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36 contents = "Blah\n"
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 layout = "{{content}}\nFor site: {{foo}}\n"
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 expected = "Blah\nFor site: bar"
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 fs = (mock_fs()
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 .withConfig(app_config)
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41 .withAsset('templates/blah.jinja', layout)
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 .withPage('pages/foo', config={'layout': 'blah'},
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 contents=contents))
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44 with mock_fs_scope(fs, open_patches=open_patches):
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45 app = fs.getApp()
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46 page = get_simple_page(app, 'foo.md')
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47 output = render_simple_page(page, '/foo')
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
48 assert output == expected
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51 def test_partial():
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52 contents = "Info:\n{% include 'page_info.jinja' %}\n"
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
53 partial = "- URL: {{page.url}}\n- SLUG: {{page.slug}}\n"
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
54 expected = "Info:\n- URL: /foo\n- SLUG: foo"
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
55 fs = (mock_fs()
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
56 .withConfig(app_config)
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
57 .withAsset('templates/page_info.jinja', partial)
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
58 .withPage('pages/foo', config=page_config, contents=contents))
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
59 with mock_fs_scope(fs, open_patches=open_patches):
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
60 app = fs.getApp()
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
61 page = get_simple_page(app, 'foo.md')
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
62 output = render_simple_page(page, '/foo')
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
63 assert output == expected
a333cdadf5b0 tests: Add tests for Jinja template engine.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
64