Skip to content

Commit 25065b9

Browse files
committed
Cleanups, add test for nested tags in trans blocks
1 parent 30b458b commit 25065b9

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

tests/test_extract.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,71 @@
11
#-*- coding: utf-8 -*-
22
import unittest
33

4-
from django_babel.extract import extract_django
4+
import pytest
55
from babel.messages import extract
66
from babel._compat import BytesIO
77

8+
from django_babel.extract import extract_django
9+
10+
11+
default_keys = extract.DEFAULT_KEYWORDS.keys()
12+
813

914
class ExtractDjangoTestCase(unittest.TestCase):
1015
# TODO: translator comments are not yet supported!
1116

1217
def test_extract_simple(self):
1318
buf = BytesIO(b'{% trans "Bunny" %}')
14-
messages = list(extract_django(buf, extract.DEFAULT_KEYWORDS.keys(), [], {}))
19+
messages = list(extract_django(buf, default_keys, [], {}))
1520
self.assertEqual([(1, None, u'Bunny', [])], messages)
1621

1722
def test_extract_var(self):
1823
buf = BytesIO(b'{% blocktrans %}{{ anton }}{% endblocktrans %}')
19-
messages = list(extract_django(buf, extract.DEFAULT_KEYWORDS.keys(), [], {}))
24+
messages = list(extract_django(buf, default_keys, [], {}))
2025
self.assertEqual([(1, None, u'%(anton)s', [])], messages)
2126

2227
def test_extract_filter_with_filter(self):
2328
buf = BytesIO(b'{% blocktrans with berta=anton|lower %}{{ berta }}{% endblocktrans %}')
24-
messages = list(extract_django(buf, extract.DEFAULT_KEYWORDS.keys(), [], {}))
29+
messages = list(extract_django(buf, default_keys, [], {}))
2530
self.assertEqual([(1, None, u'%(berta)s', [])], messages)
2631

2732
def test_extract_with_interpolation(self):
2833
buf = BytesIO(b'{% blocktrans %}xxx{{ anton }}xxx{% endblocktrans %}')
29-
messages = list(extract_django(buf, extract.DEFAULT_KEYWORDS.keys(), [], {}))
34+
messages = list(extract_django(buf, default_keys, [], {}))
3035
self.assertEqual([(1, None, u'xxx%(anton)sxxx', [])], messages)
3136

3237
def test_extract_unicode(self):
3338
buf = BytesIO(b'{% trans "@ſðæ314“ſſ¶ÐĐÞ→SÆ^ĸŁ" %}')
34-
messages = list(extract_django(buf, extract.DEFAULT_KEYWORDS.keys(), [], {}))
39+
messages = list(extract_django(buf, default_keys, [], {}))
3540
self.assertEqual([(1, None, u'@ſðæ314“ſſ¶ÐĐÞ→SÆ^ĸŁ', [])], messages)
3641

3742
def test_extract_unicode_blocktrans(self):
3843
buf = BytesIO(b'{% blocktrans %}@ſðæ314“ſſ¶ÐĐÞ→SÆ^ĸŁ{% endblocktrans %}')
39-
messages = list(extract_django(buf, extract.DEFAULT_KEYWORDS.keys(), [], {}))
44+
messages = list(extract_django(buf, default_keys, [], {}))
4045
self.assertEqual([(1, None, u'@ſðæ314“ſſ¶ÐĐÞ→SÆ^ĸŁ', [])], messages)
4146

4247
# TODO: Yet expected to not extract the comments.
4348
def test_extract_ignored_comment(self):
4449
buf = BytesIO(b'{# ignored comment #1 #}{% trans "Translatable literal #9a" %}')
45-
messages = list(extract_django(buf, extract.DEFAULT_KEYWORDS.keys(), [], {}))
50+
messages = list(extract_django(buf, default_keys, [], {}))
4651
self.assertEqual([(1, None, u'Translatable literal #9a', [])], messages)
4752

4853
def test_extract_ignored_comment2(self):
4954
buf = BytesIO(b'{# Translators: ignored i18n comment #1 #}{% trans "Translatable literal #9a" %}')
50-
messages = list(extract_django(buf, extract.DEFAULT_KEYWORDS.keys(), [], {}))
55+
messages = list(extract_django(buf, default_keys, [], {}))
5156
self.assertEqual([(1, None, u'Translatable literal #9a', [])], messages)
5257

5358
def test_extract_valid_comment(self):
5459
buf = BytesIO(b'{# ignored comment #6 #}{% trans "Translatable literal #9h" %}{# Translators: valid i18n comment #7 #}')
55-
messages = list(extract_django(buf, extract.DEFAULT_KEYWORDS.keys(), [], {}))
60+
messages = list(extract_django(buf, default_keys, [], {}))
5661
self.assertEqual([(1, None, u'Translatable literal #9h', [])], messages)
5762

5863
def test_extract_singular_form(self):
5964
buf = BytesIO(b'{% blocktrans count counter=number %}singular{% plural %}{{ counter }} plural{% endblocktrans %}')
60-
messages = list(extract_django(buf, extract.DEFAULT_KEYWORDS.keys(), [], {}))
65+
messages = list(extract_django(buf, default_keys, [], {}))
6166
self.assertEqual([(1, 'ngettext', (u'singular', u'%(counter)s plural'), [])], messages)
67+
68+
def test_trans_blocks_must_not_include_other_block_tags(self):
69+
buf = BytesIO(b'{% blocktrans %}{% other_tag %}{% endblocktrans %}')
70+
gen = extract_django(buf, default_keys, [], {})
71+
pytest.raises(SyntaxError, gen.next)

0 commit comments

Comments
 (0)