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