Skip to content

Commit 81817e1

Browse files
committedJul 11, 2015
Merge branch 'master' into fix-1883
2 parents 45c80d4 + c84ae58 commit 81817e1

22 files changed

+124
-47
lines changed
 

‎CHANGES.txt

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Features
55
--------
66

77
* Add ``--no-server`` option to ``nikola auto`` (Issue #1883)
8+
* Always return unicode in slugify (Issue #1885)
89
* Remove logging handlers (Issue #1797)
910
* Add ``-d``, ``--detach`` option to ``nikola serve`` (Issue #1871)
1011
* Use provided teaser format (``*_READ_MORE_LINK``) with custom teaser text

‎nikola/data/themes/base-jinja/templates/archiveindex.tmpl

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
{% block extra_head %}
55
{{ super() }}
66
{% if translations|length > 1 and generate_atom %}
7-
{% for language in translations %}
7+
{% for language in translations|sort %}
88
<link rel="alternate" type="application/atom+xml" title="Atom for the {{ archive_name }} section ({{ language }})" href="{{ _link("archive_atom", archive_name, language) }}">
99
{% endfor %}
1010
{% elif generate_atom %}

‎nikola/data/themes/base-jinja/templates/base_helper.tmpl

+3-3
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ lang="{{ lang }}">
9090
{{ rss_link }}
9191
{% elif generate_rss %}
9292
{% if translations|length > 1 %}
93-
{% for language in translations %}
93+
{% for language in translations|sort %}
9494
<link rel="alternate" type="application/rss+xml" title="RSS ({{ language }})" href="{{ _link('rss', None, language) }}">
9595
{% endfor %}
9696
{% else %}
@@ -99,7 +99,7 @@ lang="{{ lang }}">
9999
{% endif %}
100100
{% if generate_atom %}
101101
{% if translations|length > 1 %}
102-
{% for language in translations %}
102+
{% for language in translations|sort %}
103103
<link rel="alternate" type="application/atom+xml" title="Atom ({{ language }})" href="{{ _link('index_atom', None, language) }}">
104104
{% endfor %}
105105
{% else %}
@@ -110,7 +110,7 @@ lang="{{ lang }}">
110110

111111
{% macro html_translations() %}
112112
<ul class="translations">
113-
{% for langname in translations.keys() %}
113+
{% for langname in translations|sort %}
114114
{% if langname != lang %}
115115
<li><a href="{{ abs_link(_link("root", None, langname)) }}" rel="alternate" hreflang="{{ langname }}">{{ messages("LANGUAGE", langname) }}</a></li>
116116
{% endif %}

‎nikola/data/themes/base-jinja/templates/post_header.tmpl

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
{% if post.translated_to|length > 1 %}
1313
<div class="metadata posttranslations translations">
1414
<h3 class="posttranslations-intro">{{ messages("Also available in:") }}</h3>
15-
{% for langname in translations.keys() %}
15+
{% for langname in translations|sort %}
1616
{% if langname != lang and post.is_translation_available(langname) %}
1717
<p><a href="{{ post.permalink(langname) }}" rel="alternate" hreflang="{{ langname }}">{{ messages("LANGUAGE", langname) }}</a></p>
1818
{% endif %}

‎nikola/data/themes/base-jinja/templates/post_helper.tmpl

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
{% macro meta_translations(post) %}
44
{% if translations|length > 1 %}
5-
{% for langname in translations.keys() %}
5+
{% for langname in translations|sort %}
66
{% if langname != lang and post.is_translation_available(langname) %}
77
<link rel="alternate" hreflang="{{ langname }}" href="{{ post.permalink(langname) }}">
88
{% endif %}

‎nikola/data/themes/base-jinja/templates/tag.tmpl

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
{% block extra_head %}
55
{{ super() }}
66
{% if translations|length > 1 and generate_rss %}
7-
{% for language in translations %}
7+
{% for language in translations|sort %}
88
<link rel="alternate" type="application/rss+xml" type="application/rss+xml" title="RSS for {{ kind }} {{ tag }} ({{ language }})" href="{{ _link(kind + "_rss", tag, language) }}">
99
{% endfor %}
1010
{% elif generate_rss %}
@@ -30,7 +30,7 @@
3030
{% endif %}
3131
<div class="metadata">
3232
{% if translations|length > 1 and generate_rss %}
33-
{% for language in translations %}
33+
{% for language in translations|sort %}
3434
<p class="feedlink">
3535
<a href="{{ _link(kind + "_rss", tag, language) }}" hreflang="{{ language }}" type="application/rss+xml">{{ messages('RSS feed', language) }} ({{ language }})</a>&nbsp;
3636
</p>

‎nikola/data/themes/base-jinja/templates/tagindex.tmpl

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
{% block extra_head %}
1616
{{ super() }}
1717
{% if translations|length > 1 and generate_atom %}
18-
{% for language in translations %}
18+
{% for language in translations|sort %}
1919
<link rel="alternate" type="application/atom+xml" title="Atom for the {{ tag }} section ({{ language }})" href="{{ _link(kind + "_atom", tag, language) }}">
2020
{% endfor %}
2121
{% elif generate_atom %}

‎nikola/data/themes/base/templates/archiveindex.tmpl

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<%block name="extra_head">
55
${parent.extra_head()}
66
%if len(translations) > 1 and generate_atom:
7-
%for language in translations:
7+
%for language in sorted(translations):
88
<link rel="alternate" type="application/atom+xml" title="Atom for the ${archive_name} section (${language})" href="${_link("archive_atom", archive_name, language)}">
99
%endfor
1010
%elif generate_atom:

‎nikola/data/themes/base/templates/base_helper.tmpl

+3-3
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ lang="${lang}">
9090
${rss_link}
9191
%elif generate_rss:
9292
%if len(translations) > 1:
93-
%for language in translations:
93+
%for language in sorted(translations):
9494
<link rel="alternate" type="application/rss+xml" title="RSS (${language})" href="${_link('rss', None, language)}">
9595
%endfor
9696
%else:
@@ -99,7 +99,7 @@ lang="${lang}">
9999
%endif
100100
%if generate_atom:
101101
%if len(translations) > 1:
102-
%for language in translations:
102+
%for language in sorted(translations):
103103
<link rel="alternate" type="application/atom+xml" title="Atom (${language})" href="${_link('index_atom', None, language)}">
104104
%endfor
105105
%else:
@@ -110,7 +110,7 @@ lang="${lang}">
110110

111111
<%def name="html_translations()">
112112
<ul class="translations">
113-
%for langname in translations.keys():
113+
%for langname in sorted(translations):
114114
%if langname != lang:
115115
<li><a href="${abs_link(_link("root", None, langname))}" rel="alternate" hreflang="${langname}">${messages("LANGUAGE", langname)}</a></li>
116116
%endif

‎nikola/data/themes/base/templates/post_header.tmpl

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
% if len(post.translated_to) > 1:
1313
<div class="metadata posttranslations translations">
1414
<h3 class="posttranslations-intro">${messages("Also available in:")}</h3>
15-
% for langname in translations.keys():
15+
% for langname in sorted(translations):
1616
% if langname != lang and post.is_translation_available(langname):
1717
<p><a href="${post.permalink(langname)}" rel="alternate" hreflang="${langname}">${messages("LANGUAGE", langname)}</a></p>
1818
% endif

‎nikola/data/themes/base/templates/post_helper.tmpl

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<%def name="meta_translations(post)">
44
%if len(translations) > 1:
5-
%for langname in translations.keys():
5+
%for langname in sorted(translations):
66
%if langname != lang and post.is_translation_available(langname):
77
<link rel="alternate" hreflang="${langname}" href="${post.permalink(langname)}">
88
%endif

‎nikola/data/themes/base/templates/tag.tmpl

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<%block name="extra_head">
55
${parent.extra_head()}
66
%if len(translations) > 1 and generate_rss:
7-
%for language in translations:
7+
%for language in sorted(translations):
88
<link rel="alternate" type="application/rss+xml" type="application/rss+xml" title="RSS for ${kind} ${tag} (${language})" href="${_link(kind + "_rss", tag, language)}">
99
%endfor
1010
%elif generate_rss:
@@ -30,7 +30,7 @@
3030
%endif
3131
<div class="metadata">
3232
%if len(translations) > 1 and generate_rss:
33-
%for language in translations:
33+
%for language in sorted(translations):
3434
<p class="feedlink">
3535
<a href="${_link(kind + "_rss", tag, language)}" hreflang="${language}" type="application/rss+xml">${messages('RSS feed', language)} (${language})</a>&nbsp;
3636
</p>

‎nikola/data/themes/base/templates/tagindex.tmpl

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<%block name="extra_head">
1616
${parent.extra_head()}
1717
%if len(translations) > 1 and generate_atom:
18-
%for language in translations:
18+
%for language in sorted(translations):
1919
<link rel="alternate" type="application/atom+xml" title="Atom for the ${tag} section (${language})" href="${_link(kind + "_atom", tag, language)}">
2020
%endfor
2121
%elif generate_atom:

‎nikola/data/themes/bootstrap3-jinja/templates/base_helper.tmpl

+3-3
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ lang="{{ lang }}">
154154
{{ rss_link }}
155155
{% elif generate_rss %}
156156
{% if translations|length > 1 %}
157-
{% for language in translations %}
157+
{% for language in translations|sort %}
158158
<link rel="alternate" type="application/rss+xml" title="RSS ({{ language }})" href="{{ _link('rss', None, language) }}">
159159
{% endfor %}
160160
{% else %}
@@ -163,7 +163,7 @@ lang="{{ lang }}">
163163
{% endif %}
164164
{% if generate_atom %}
165165
{% if translations|length > 1 %}
166-
{% for language in translations %}
166+
{% for language in translations|sort %}
167167
<link rel="alternate" type="application/atom+xml" title="Atom ({{ language }})" href="{{ _link('index_atom', None, language) }}">
168168
{% endfor %}
169169
{% else %}
@@ -173,7 +173,7 @@ lang="{{ lang }}">
173173
{% endmacro %}
174174

175175
{% macro html_translations() %}
176-
{% for langname in translations.keys() %}
176+
{% for langname in translations|sort %}
177177
{% if langname != lang %}
178178
<li><a href="{{ abs_link(_link("root", None, langname)) }}" rel="alternate" hreflang="{{ langname }}">{{ messages("LANGUAGE", langname) }}</a></li>
179179
{% endif %}

‎nikola/data/themes/bootstrap3/templates/base_helper.tmpl

+3-3
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ lang="${lang}">
154154
${rss_link}
155155
%elif generate_rss:
156156
%if len(translations) > 1:
157-
%for language in translations:
157+
%for language in sorted(translations):
158158
<link rel="alternate" type="application/rss+xml" title="RSS (${language})" href="${_link('rss', None, language)}">
159159
%endfor
160160
%else:
@@ -163,7 +163,7 @@ lang="${lang}">
163163
%endif
164164
%if generate_atom:
165165
%if len(translations) > 1:
166-
%for language in translations:
166+
%for language in sorted(translations):
167167
<link rel="alternate" type="application/atom+xml" title="Atom (${language})" href="${_link('index_atom', None, language)}">
168168
%endfor
169169
%else:
@@ -173,7 +173,7 @@ lang="${lang}">
173173
</%def>
174174

175175
<%def name="html_translations()">
176-
%for langname in translations.keys():
176+
%for langname in sorted(translations):
177177
%if langname != lang:
178178
<li><a href="${abs_link(_link("root", None, langname))}" rel="alternate" hreflang="${langname}">${messages("LANGUAGE", langname)}</a></li>
179179
%endif

‎nikola/nikola.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -1567,7 +1567,7 @@ def generic_page_renderer(self, lang, post, filters):
15671567

15681568
task = {
15691569
'name': os.path.normpath(output_name),
1570-
'file_dep': deps,
1570+
'file_dep': sorted(deps),
15711571
'targets': [output_name],
15721572
'actions': [(self.render_template, [post.template_name,
15731573
output_name, context])],
@@ -1581,7 +1581,8 @@ def generic_post_list_renderer(self, lang, posts, output_name,
15811581
template_name, filters, extra_context):
15821582
"""Renders pages with lists of posts."""
15831583

1584-
deps = self.template_system.template_deps(template_name)
1584+
deps = []
1585+
deps += self.template_system.template_deps(template_name)
15851586
uptodate_deps = []
15861587
for post in posts:
15871588
deps += post.deps(lang)
@@ -1610,7 +1611,7 @@ def generic_post_list_renderer(self, lang, posts, output_name,
16101611
task = {
16111612
'name': os.path.normpath(output_name),
16121613
'targets': [output_name],
1613-
'file_dep': deps,
1614+
'file_dep': sorted(deps),
16141615
'actions': [(self.render_template, [template_name, output_name,
16151616
context])],
16161617
'clean': True,

‎nikola/plugins/task/galleries.py

+12-10
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2626

2727
from __future__ import unicode_literals
28-
import io
2928
import datetime
3029
import glob
30+
import io
3131
import json
3232
import mimetypes
3333
import os
@@ -183,11 +183,13 @@ def gen_tasks(self):
183183

184184
crumbs = utils.get_crumbs(gallery, index_folder=self)
185185

186-
# Create index.html for each language
187186
for lang in self.kw['translations']:
188187
# save navigation links as dependencies
189188
self.kw['navigation_links|{0}'.format(lang)] = self.kw['global_context']['navigation_links'](lang)
190189

190+
# Create index.html for each language
191+
for lang in self.kw['translations']:
192+
191193
dst = os.path.join(
192194
self.kw['output_folder'],
193195
self.site.path("gallery", gallery, lang))
@@ -246,7 +248,7 @@ def gen_tasks(self):
246248
'targets': [post.translated_base_path(lang)],
247249
'file_dep': post.fragment_deps(lang),
248250
'actions': [(post.compile, [lang])],
249-
'uptodate': [utils.config_changed(self.kw, 'nikola.plugins.task.galleries:post')] + post.fragment_deps_uptodate(lang)
251+
'uptodate': [utils.config_changed(self.kw.copy(), 'nikola.plugins.task.galleries:post')] + post.fragment_deps_uptodate(lang)
250252
}
251253
context['post'] = post
252254
else:
@@ -268,14 +270,14 @@ def gen_tasks(self):
268270
(self.render_gallery_index, (
269271
template_name,
270272
dst,
271-
context,
273+
context.copy(),
272274
dest_img_list,
273275
img_titles,
274276
thumbs,
275277
file_dep))],
276278
'clean': True,
277279
'uptodate': [utils.config_changed({
278-
1: self.kw,
280+
1: self.kw.copy(),
279281
2: self.site.config["COMMENTS_IN_GALLERIES"],
280282
3: context.copy(),
281283
}, 'nikola.plugins.task.galleries:gallery')],
@@ -305,7 +307,7 @@ def gen_tasks(self):
305307
))],
306308
'clean': True,
307309
'uptodate': [utils.config_changed({
308-
1: self.kw,
310+
1: self.kw.copy(),
309311
}, 'nikola.plugins.task.galleries:rss')],
310312
}, self.kw['filters'])
311313

@@ -366,7 +368,7 @@ def create_galleries(self):
366368
'actions': [(utils.makedirs, (output_gallery,))],
367369
'targets': [output_gallery],
368370
'clean': True,
369-
'uptodate': [utils.config_changed(self.kw, 'nikola.plugins.task.galleries:mkdir')],
371+
'uptodate': [utils.config_changed(self.kw.copy(), 'nikola.plugins.task.galleries:mkdir')],
370372
}
371373

372374
def parse_index(self, gallery, input_folder, output_folder):
@@ -493,7 +495,7 @@ def remove_excluded_image(self, img, input_folder):
493495
(utils.remove_file, (thumb_path,))
494496
],
495497
'clean': True,
496-
'uptodate': [utils.config_changed(self.kw, 'nikola.plugins.task.galleries:clean_thumb')],
498+
'uptodate': [utils.config_changed(self.kw.copy(), 'nikola.plugins.task.galleries:clean_thumb')],
497499
}, self.kw['filters'])
498500

499501
yield utils.apply_filters({
@@ -503,7 +505,7 @@ def remove_excluded_image(self, img, input_folder):
503505
(utils.remove_file, (img_path,))
504506
],
505507
'clean': True,
506-
'uptodate': [utils.config_changed(self.kw, 'nikola.plugins.task.galleries:clean_file')],
508+
'uptodate': [utils.config_changed(self.kw.copy(), 'nikola.plugins.task.galleries:clean_file')],
507509
}, self.kw['filters'])
508510

509511
def render_gallery_index(
@@ -543,7 +545,7 @@ def url_from_path(p):
543545
},
544546
})
545547
context['photo_array'] = photo_array
546-
context['photo_array_json'] = json.dumps(photo_array)
548+
context['photo_array_json'] = json.dumps(photo_array, sort_keys=True)
547549
self.site.render_template(template_name, output_name, context)
548550

549551
def gallery_rss(self, img_list, dest_img_list, img_titles, lang, permalink, output_path, title):

‎nikola/post.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ def deps(self, lang):
438438
deps.extend([cand_1, cand_2])
439439
deps += self._get_dependencies(self._dependency_file_page[lang])
440440
deps += self._get_dependencies(self._dependency_file_page[None])
441-
return deps
441+
return sorted(deps)
442442

443443
def deps_uptodate(self, lang):
444444
"""Return a list of uptodate dependencies to build this post's page.
@@ -498,7 +498,7 @@ def fragment_deps(self, lang):
498498
deps = [d for d in deps if os.path.exists(d)]
499499
deps += self._get_dependencies(self._dependency_file_fragment[lang])
500500
deps += self._get_dependencies(self._dependency_file_fragment[None])
501-
return deps
501+
return sorted(deps)
502502

503503
def fragment_deps_uptodate(self, lang):
504504
"""Return a list of file dependencies to build this post's fragment."""

‎nikola/utils.py

+13-6
Original file line numberDiff line numberDiff line change
@@ -492,13 +492,19 @@ def __hash__(self):
492492
def __str__(self):
493493
return '<TemplateHookRegistry: {0}>'.format(self._items)
494494

495+
def __repr__(self):
496+
return '<TemplateHookRegistry: {0}>'.format(self.name)
497+
495498

496499
class CustomEncoder(json.JSONEncoder):
497500
def default(self, obj):
498501
try:
499502
return super(CustomEncoder, self).default(obj)
500503
except TypeError:
501-
s = repr(obj).split('0x', 1)[0]
504+
if isinstance(obj, (set, frozenset)):
505+
return self.encode(sorted(list(obj)))
506+
else:
507+
s = repr(obj).split('0x', 1)[0]
502508
return s
503509

504510

@@ -540,7 +546,8 @@ def __call__(self, task, values):
540546

541547
def __repr__(self):
542548
return "Change with config: {0}".format(json.dumps(self.config,
543-
cls=CustomEncoder))
549+
cls=CustomEncoder,
550+
sort_keys=True))
544551

545552

546553
def get_theme_path(theme, _themes_dir='themes'):
@@ -728,9 +735,9 @@ def slugify(value, force=False):
728735
if USE_SLUGIFY or force:
729736
# This is the standard state of slugify, which actually does some work.
730737
# It is the preferred style, especially for Western languages.
731-
value = unidecode(value)
732-
value = str(_slugify_strip_re.sub('', value).strip().lower())
733-
return _slugify_hyphenate_re.sub('-', value)
738+
value = unicode_str(unidecode(value))
739+
value = _slugify_strip_re.sub('', value, re.UNICODE).strip().lower()
740+
return _slugify_hyphenate_re.sub('-', value, re.UNICODE)
734741
else:
735742
# This is the “disarmed” state of slugify, which lets the user
736743
# have any character they please (be it regular ASCII with spaces,
@@ -740,7 +747,7 @@ def slugify(value, force=False):
740747
# We still replace some characters, though. In particular, we need
741748
# to replace ? and #, which should not appear in URLs, and some
742749
# Windows-unsafe characters. This list might be even longer.
743-
rc = '/\\?#"\'\r\n\t*:<>|"'
750+
rc = '/\\?#"\'\r\n\t*:<>|'
744751

745752
for c in rc:
746753
value = value.replace(c, '-')

‎requirements-tests.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-r requirements-extras.txt
2-
mock==1.1.1
2+
mock==1.1.2
33
coverage==3.7.1
44
pytest==2.7.2
55
pytest-cov==1.8.1

‎scripts/jinjify.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
["og: http://ogp.me/ns# \\", "og: http://ogp.me/ns#"],
1919
["article: http://ogp.me/ns/article# \\", "article: http://ogp.me/ns/article#"],
2020
["fb: http://ogp.me/ns/fb# \\", "fb: http://ogp.me/ns/fb#"],
21-
['dir="rtl" \\', 'dir="rtl"']
21+
['dir="rtl" \\', 'dir="rtl"'],
22+
['sorted(translations)', 'translations|sort'],
2223
]
2324

2425
dumber_replacements = [

‎tests/test_slugify.py

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# -*- coding: utf-8 -*-
2+
3+
u"""Test slugify."""
4+
5+
from __future__ import unicode_literals
6+
import nikola.utils
7+
8+
9+
def test_ascii():
10+
"""Test an ASCII-only string."""
11+
o = nikola.utils.slugify(u'hello')
12+
assert o == u'hello'
13+
assert isinstance(o, nikola.utils.unicode_str)
14+
15+
16+
def test_ascii_dash():
17+
"""Test an ASCII string, with dashes."""
18+
o = nikola.utils.slugify(u'hello-world')
19+
assert o == u'hello-world'
20+
assert isinstance(o, nikola.utils.unicode_str)
21+
22+
23+
def test_ascii_fancy():
24+
"""Test an ASCII string, with fancy characters."""
25+
o = nikola.utils.slugify(u'The quick brown fox jumps over the lazy dog!-123.456')
26+
assert o == u'the-quick-brown-fox-jumps-over-the-lazy-dog-123456'
27+
assert isinstance(o, nikola.utils.unicode_str)
28+
29+
30+
def test_pl():
31+
"""Test a string with Polish diacritical characters."""
32+
o = nikola.utils.slugify(u'zażółćgęśląjaźń')
33+
assert o == u'zazolcgeslajazn'
34+
assert isinstance(o, nikola.utils.unicode_str)
35+
36+
37+
def test_pl_dash():
38+
"""Test a string with Polish diacritical characters and dashes."""
39+
o = nikola.utils.slugify(u'zażółć-gęślą-jaźń')
40+
assert o == u'zazolc-gesla-jazn'
41+
42+
43+
def test_pl_fancy():
44+
"""Test a string with Polish diacritical characters and fancy characters."""
45+
o = nikola.utils.slugify(u'Zażółć gęślą jaźń!-123.456')
46+
assert o == u'zazolc-gesla-jazn-123456'
47+
assert isinstance(o, nikola.utils.unicode_str)
48+
49+
50+
def test_disarmed():
51+
"""Test disarmed slugify."""
52+
nikola.utils.USE_SLUGIFY = False
53+
o = nikola.utils.slugify(u'Zażółć gęślą jaźń!-123.456')
54+
assert o == u'Zażółć gęślą jaźń!-123.456'
55+
assert isinstance(o, nikola.utils.unicode_str)
56+
nikola.utils.USE_SLUGIFY = True
57+
58+
59+
def test_disarmed_weird():
60+
"""Test disarmed slugify with banned characters."""
61+
nikola.utils.USE_SLUGIFY = False
62+
o = nikola.utils.slugify(u'Zażółć gęślą jaźń!-123.456 "Hello World"?#H<e>l/l\\o:W\'o\rr*l\td|!\n')
63+
assert o == u'Zażółć gęślą jaźń!-123.456 -Hello World---H-e-l-l-o-W-o-r-l-d-!-'
64+
assert isinstance(o, nikola.utils.unicode_str)
65+
nikola.utils.USE_SLUGIFY = True

0 commit comments

Comments
 (0)
Please sign in to comment.