Mercurial > piecrust2
comparison tests/test_baking_baker.py @ 568:6b6c5442c790
bug: Correctly handle root URLs with special characters.
The `site/root` setting is now pre-escaped to get a correct URL, and routing
excludes it from escaping.
Add unit tests.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 13 Oct 2015 22:50:38 -0700 |
parents | e7b865f8f335 |
children | 34e57d4b97e2 |
comparison
equal
deleted
inserted
replaced
567:a65f04ddbea2 | 568:6b6c5442c790 |
---|---|
1 import time | 1 import time |
2 import os.path | 2 import os.path |
3 import urllib.parse | |
3 import pytest | 4 import pytest |
4 from piecrust.baking.baker import Baker | 5 from piecrust.baking.baker import Baker |
5 from piecrust.baking.single import PageBaker | 6 from piecrust.baking.single import PageBaker |
6 from piecrust.baking.records import BakeRecord | 7 from piecrust.baking.records import BakeRecord |
7 from .mockutil import get_mock_app, mock_fs, mock_fs_scope | 8 from .mockutil import get_mock_app, mock_fs, mock_fs_scope |
39 app = get_mock_app() | 40 app = get_mock_app() |
40 if pretty: | 41 if pretty: |
41 app.config.set('site/pretty_urls', True) | 42 app.config.set('site/pretty_urls', True) |
42 assert app.config.get('site/pretty_urls') == pretty | 43 assert app.config.get('site/pretty_urls') == pretty |
43 | 44 |
44 for site_root in ['/', '/whatever/']: | 45 for site_root in ['/', '/whatever/', '/~johndoe/']: |
45 app.config.set('site/root', site_root) | 46 app.config.set('site/root', urllib.parse.quote(site_root)) |
46 baker = PageBaker(app, '/destination') | 47 baker = PageBaker(app, '/destination') |
47 path = baker.getOutputPath(site_root + uri) | 48 path = baker.getOutputPath(site_root + uri) |
48 expected = os.path.normpath( | 49 expected = os.path.normpath( |
49 os.path.join('/destination', expected)) | 50 os.path.join('/destination', expected)) |
50 assert expected == path | 51 assert expected == path |