annotate 0.9.x/babel/messages/tests/catalog.py @ 510:4c473bedd528 stable

Fix Python 2.3 compatibility for 0.9 branch (closes #233)
author fschwarz
date Fri, 04 Mar 2011 14:16:15 +0000
parents 4adedf7d0f04
children
rev   line source
263
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
1 # -*- coding: utf-8 -*-
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
2 #
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
3 # Copyright (C) 2007 Edgewall Software
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
4 # All rights reserved.
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
5 #
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
6 # This software is licensed as described in the file COPYING, which
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
7 # you should have received as part of this distribution. The terms
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
8 # are also available at http://babel.edgewall.org/wiki/License.
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
9 #
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
10 # This software consists of voluntary contributions made by many
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
11 # individuals. For the exact contribution history, see the revision
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
12 # history and logs, available at http://babel.edgewall.org/log/.
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
13
454
8941027e8b22 Merged revisions 467 via svnmerge from
jruigrok
parents: 371
diff changeset
14 import copy
474
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
15 import datetime
263
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
16 import doctest
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
17 import unittest
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
18
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
19 from babel.messages import catalog
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
20
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
21
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
22 class MessageTestCase(unittest.TestCase):
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
23
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
24 def test_python_format(self):
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
25 assert catalog.PYTHON_FORMAT.search('foo %d bar')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
26 assert catalog.PYTHON_FORMAT.search('foo %s bar')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
27 assert catalog.PYTHON_FORMAT.search('foo %r bar')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
28 assert catalog.PYTHON_FORMAT.search('foo %(name).1f')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
29 assert catalog.PYTHON_FORMAT.search('foo %(name)3.3f')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
30 assert catalog.PYTHON_FORMAT.search('foo %(name)3f')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
31 assert catalog.PYTHON_FORMAT.search('foo %(name)06d')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
32 assert catalog.PYTHON_FORMAT.search('foo %(name)Li')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
33 assert catalog.PYTHON_FORMAT.search('foo %(name)#d')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
34 assert catalog.PYTHON_FORMAT.search('foo %(name)-4.4hs')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
35 assert catalog.PYTHON_FORMAT.search('foo %(name)*.3f')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
36 assert catalog.PYTHON_FORMAT.search('foo %(name).*f')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
37 assert catalog.PYTHON_FORMAT.search('foo %(name)3.*f')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
38 assert catalog.PYTHON_FORMAT.search('foo %(name)*.*f')
371
4b63ce84c6ae Ported [388:405/trunk] to 0.9.x branch.
cmlenz
parents: 316
diff changeset
39 assert catalog.PYTHON_FORMAT.search('foo %()s')
263
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
40
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
41 def test_translator_comments(self):
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
42 mess = catalog.Message('foo', user_comments=['Comment About `foo`'])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
43 self.assertEqual(mess.user_comments, ['Comment About `foo`'])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
44 mess = catalog.Message('foo',
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
45 auto_comments=['Comment 1 About `foo`',
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
46 'Comment 2 About `foo`'])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
47 self.assertEqual(mess.auto_comments, ['Comment 1 About `foo`',
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
48 'Comment 2 About `foo`'])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
49
371
4b63ce84c6ae Ported [388:405/trunk] to 0.9.x branch.
cmlenz
parents: 316
diff changeset
50 def test_clone_message_object(self):
4b63ce84c6ae Ported [388:405/trunk] to 0.9.x branch.
cmlenz
parents: 316
diff changeset
51 msg = catalog.Message('foo', locations=[('foo.py', 42)])
4b63ce84c6ae Ported [388:405/trunk] to 0.9.x branch.
cmlenz
parents: 316
diff changeset
52 clone = msg.clone()
4b63ce84c6ae Ported [388:405/trunk] to 0.9.x branch.
cmlenz
parents: 316
diff changeset
53 clone.locations.append(('bar.py', 42))
4b63ce84c6ae Ported [388:405/trunk] to 0.9.x branch.
cmlenz
parents: 316
diff changeset
54 self.assertEqual(msg.locations, [('foo.py', 42)])
4b63ce84c6ae Ported [388:405/trunk] to 0.9.x branch.
cmlenz
parents: 316
diff changeset
55 msg.flags.add('fuzzy')
4b63ce84c6ae Ported [388:405/trunk] to 0.9.x branch.
cmlenz
parents: 316
diff changeset
56 assert not clone.fuzzy and msg.fuzzy
4b63ce84c6ae Ported [388:405/trunk] to 0.9.x branch.
cmlenz
parents: 316
diff changeset
57
263
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
58
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
59 class CatalogTestCase(unittest.TestCase):
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
60
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
61 def test_two_messages_with_same_singular(self):
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
62 cat = catalog.Catalog()
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
63 cat.add('foo')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
64 cat.add(('foo', 'foos'))
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
65 self.assertEqual(1, len(cat))
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
66
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
67 def test_duplicate_auto_comment(self):
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
68 cat = catalog.Catalog()
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
69 cat.add('foo', auto_comments=['A comment'])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
70 cat.add('foo', auto_comments=['A comment', 'Another comment'])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
71 self.assertEqual(['A comment', 'Another comment'],
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
72 cat['foo'].auto_comments)
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
73
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
74 def test_duplicate_user_comment(self):
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
75 cat = catalog.Catalog()
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
76 cat.add('foo', user_comments=['A comment'])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
77 cat.add('foo', user_comments=['A comment', 'Another comment'])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
78 self.assertEqual(['A comment', 'Another comment'],
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
79 cat['foo'].user_comments)
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
80
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
81 def test_duplicate_location(self):
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
82 cat = catalog.Catalog()
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
83 cat.add('foo', locations=[('foo.py', 1)])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
84 cat.add('foo', locations=[('foo.py', 1)])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
85 self.assertEqual([('foo.py', 1)], cat['foo'].locations)
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
86
280
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
87 def test_update_message_changed_to_plural(self):
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
88 cat = catalog.Catalog()
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
89 cat.add(u'foo', u'Voh')
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
90 tmpl = catalog.Catalog()
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
91 tmpl.add((u'foo', u'foos'))
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
92 cat.update(tmpl)
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
93 self.assertEqual((u'Voh', ''), cat['foo'].string)
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
94 assert cat['foo'].fuzzy
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
95
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
96 def test_update_message_changed_to_simple(self):
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
97 cat = catalog.Catalog()
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
98 cat.add((u'foo' u'foos'), (u'Voh', u'Vöhs'))
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
99 tmpl = catalog.Catalog()
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
100 tmpl.add(u'foo')
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
101 cat.update(tmpl)
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
102 self.assertEqual(u'Voh', cat['foo'].string)
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
103 assert cat['foo'].fuzzy
65c6ca63aca3 Ported [305] to 0.9.x branch.
cmlenz
parents: 263
diff changeset
104
263
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
105 def test_update_message_updates_comments(self):
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
106 cat = catalog.Catalog()
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
107 cat[u'foo'] = catalog.Message('foo', locations=[('main.py', 5)])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
108 self.assertEqual(cat[u'foo'].auto_comments, [])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
109 self.assertEqual(cat[u'foo'].user_comments, [])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
110 # Update cat[u'foo'] with a new location and a comment
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
111 cat[u'foo'] = catalog.Message('foo', locations=[('main.py', 7)],
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
112 user_comments=['Foo Bar comment 1'])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
113 self.assertEqual(cat[u'foo'].user_comments, ['Foo Bar comment 1'])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
114 # now add yet another location with another comment
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
115 cat[u'foo'] = catalog.Message('foo', locations=[('main.py', 9)],
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
116 auto_comments=['Foo Bar comment 2'])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
117 self.assertEqual(cat[u'foo'].auto_comments, ['Foo Bar comment 2'])
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
118
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
119 def test_update_fuzzy_matching_with_case_change(self):
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
120 cat = catalog.Catalog()
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
121 cat.add('foo', 'Voh')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
122 cat.add('bar', 'Bahr')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
123 tmpl = catalog.Catalog()
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
124 tmpl.add('Foo')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
125 cat.update(tmpl)
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
126 self.assertEqual(1, len(cat.obsolete))
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
127 assert 'foo' not in cat
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
128
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
129 self.assertEqual('Voh', cat['Foo'].string)
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
130 self.assertEqual(True, cat['Foo'].fuzzy)
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
131
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
132 def test_update_fuzzy_matching_with_char_change(self):
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
133 cat = catalog.Catalog()
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
134 cat.add('fo', 'Voh')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
135 cat.add('bar', 'Bahr')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
136 tmpl = catalog.Catalog()
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
137 tmpl.add('foo')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
138 cat.update(tmpl)
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
139 self.assertEqual(1, len(cat.obsolete))
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
140 assert 'fo' not in cat
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
141
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
142 self.assertEqual('Voh', cat['foo'].string)
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
143 self.assertEqual(True, cat['foo'].fuzzy)
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
144
316
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
145 def test_update_fuzzy_matching_no_msgstr(self):
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
146 cat = catalog.Catalog()
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
147 cat.add('fo', '')
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
148 tmpl = catalog.Catalog()
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
149 tmpl.add('fo')
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
150 tmpl.add('foo')
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
151 cat.update(tmpl)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
152 assert 'fo' in cat
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
153 assert 'foo' in cat
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
154
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
155 self.assertEqual('', cat['fo'].string)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
156 self.assertEqual(False, cat['fo'].fuzzy)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
157 self.assertEqual(None, cat['foo'].string)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
158 self.assertEqual(False, cat['foo'].fuzzy)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
159
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
160 def test_update_fuzzy_matching_no_cascading(self):
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
161 cat = catalog.Catalog()
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
162 cat.add('fo', 'Voh')
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
163 cat.add('foo', 'Vohe')
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
164 tmpl = catalog.Catalog()
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
165 tmpl.add('fo')
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
166 tmpl.add('foo')
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
167 tmpl.add('fooo')
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
168 cat.update(tmpl)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
169 assert 'fo' in cat
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
170 assert 'foo' in cat
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
171
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
172 self.assertEqual('Voh', cat['fo'].string)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
173 self.assertEqual(False, cat['fo'].fuzzy)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
174 self.assertEqual('Vohe', cat['foo'].string)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
175 self.assertEqual(False, cat['foo'].fuzzy)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
176 self.assertEqual('Vohe', cat['fooo'].string)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
177 self.assertEqual(True, cat['fooo'].fuzzy)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
178
263
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
179 def test_update_without_fuzzy_matching(self):
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
180 cat = catalog.Catalog()
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
181 cat.add('fo', 'Voh')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
182 cat.add('bar', 'Bahr')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
183 tmpl = catalog.Catalog()
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
184 tmpl.add('foo')
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
185 cat.update(tmpl, no_fuzzy_matching=True)
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
186 self.assertEqual(2, len(cat.obsolete))
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
187
454
8941027e8b22 Merged revisions 467 via svnmerge from
jruigrok
parents: 371
diff changeset
188 def test_fuzzy_matching_regarding_plurals(self):
8941027e8b22 Merged revisions 467 via svnmerge from
jruigrok
parents: 371
diff changeset
189 cat = catalog.Catalog()
8941027e8b22 Merged revisions 467 via svnmerge from
jruigrok
parents: 371
diff changeset
190 cat.add(('foo', 'foh'), ('foo', 'foh'))
8941027e8b22 Merged revisions 467 via svnmerge from
jruigrok
parents: 371
diff changeset
191 ru = copy.copy(cat)
8941027e8b22 Merged revisions 467 via svnmerge from
jruigrok
parents: 371
diff changeset
192 ru.locale = 'ru_RU'
8941027e8b22 Merged revisions 467 via svnmerge from
jruigrok
parents: 371
diff changeset
193 ru.update(cat)
8941027e8b22 Merged revisions 467 via svnmerge from
jruigrok
parents: 371
diff changeset
194 self.assertEqual(True, ru['foo'].fuzzy)
8941027e8b22 Merged revisions 467 via svnmerge from
jruigrok
parents: 371
diff changeset
195 ru = copy.copy(cat)
8941027e8b22 Merged revisions 467 via svnmerge from
jruigrok
parents: 371
diff changeset
196 ru.locale = 'ru_RU'
8941027e8b22 Merged revisions 467 via svnmerge from
jruigrok
parents: 371
diff changeset
197 ru['foo'].string = ('foh', 'fohh', 'fohhh')
8941027e8b22 Merged revisions 467 via svnmerge from
jruigrok
parents: 371
diff changeset
198 ru.update(cat)
8941027e8b22 Merged revisions 467 via svnmerge from
jruigrok
parents: 371
diff changeset
199 self.assertEqual(False, ru['foo'].fuzzy)
8941027e8b22 Merged revisions 467 via svnmerge from
jruigrok
parents: 371
diff changeset
200
316
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
201 def test_update_no_template_mutation(self):
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
202 tmpl = catalog.Catalog()
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
203 tmpl.add('foo')
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
204 cat1 = catalog.Catalog()
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
205 cat1.add('foo', 'Voh')
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
206 cat1.update(tmpl)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
207 cat2 = catalog.Catalog()
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
208 cat2.update(tmpl)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
209
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
210 self.assertEqual(None, cat2['foo'].string)
9121183df490 Ported [346] and [347] to 0.9.x branch.
cmlenz
parents: 280
diff changeset
211 self.assertEqual(False, cat2['foo'].fuzzy)
474
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
212
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
213 def test_update_po_updates_pot_creation_date(self):
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
214 template = catalog.Catalog()
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
215 localized_catalog = copy.deepcopy(template)
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
216 localized_catalog.locale = 'de_DE'
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
217 self.assertNotEqual(template.mime_headers,
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
218 localized_catalog.mime_headers)
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
219 self.assertEqual(template.creation_date,
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
220 localized_catalog.creation_date)
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
221 template.creation_date = datetime.datetime.now() - \
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
222 datetime.timedelta(minutes=5)
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
223 localized_catalog.update(template)
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
224 self.assertEqual(template.creation_date,
c40f442c22b7 Merged revisions 460-461 via svnmerge from
jruigrok
parents: 454
diff changeset
225 localized_catalog.creation_date)
477
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
226
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
227 def test_update_po_keeps_po_revision_date(self):
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
228 template = catalog.Catalog()
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
229 localized_catalog = copy.deepcopy(template)
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
230 localized_catalog.locale = 'de_DE'
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
231 fake_rev_date = datetime.datetime.now() - datetime.timedelta(days=5)
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
232 localized_catalog.revision_date = fake_rev_date
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
233 self.assertNotEqual(template.mime_headers,
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
234 localized_catalog.mime_headers)
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
235 self.assertEqual(template.creation_date,
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
236 localized_catalog.creation_date)
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
237 template.creation_date = datetime.datetime.now() - \
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
238 datetime.timedelta(minutes=5)
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
239 localized_catalog.update(template)
39dd1c71fb5b Merged revisions 464 via svnmerge from
jruigrok
parents: 474
diff changeset
240 self.assertEqual(localized_catalog.revision_date, fake_rev_date)
263
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
241
481
4adedf7d0f04 Merged revisions 469,529 via svnmerge from
jruigrok
parents: 477
diff changeset
242 def test_stores_datetime_correctly(self):
4adedf7d0f04 Merged revisions 469,529 via svnmerge from
jruigrok
parents: 477
diff changeset
243 localized = catalog.Catalog()
4adedf7d0f04 Merged revisions 469,529 via svnmerge from
jruigrok
parents: 477
diff changeset
244 localized.locale = 'de_DE'
4adedf7d0f04 Merged revisions 469,529 via svnmerge from
jruigrok
parents: 477
diff changeset
245 localized[''] = catalog.Message('',
4adedf7d0f04 Merged revisions 469,529 via svnmerge from
jruigrok
parents: 477
diff changeset
246 "POT-Creation-Date: 2009-03-09 15:47-0700\n" +
4adedf7d0f04 Merged revisions 469,529 via svnmerge from
jruigrok
parents: 477
diff changeset
247 "PO-Revision-Date: 2009-03-09 15:47-0700\n")
4adedf7d0f04 Merged revisions 469,529 via svnmerge from
jruigrok
parents: 477
diff changeset
248 for key, value in localized.mime_headers:
4adedf7d0f04 Merged revisions 469,529 via svnmerge from
jruigrok
parents: 477
diff changeset
249 if key in ('POT-Creation-Date', 'PO-Revision-Date'):
4adedf7d0f04 Merged revisions 469,529 via svnmerge from
jruigrok
parents: 477
diff changeset
250 self.assertEqual(value, '2009-03-09 15:47-0700')
4adedf7d0f04 Merged revisions 469,529 via svnmerge from
jruigrok
parents: 477
diff changeset
251
263
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
252 def suite():
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
253 suite = unittest.TestSuite()
510
4c473bedd528 Fix Python 2.3 compatibility for 0.9 branch (closes #233)
fschwarz
parents: 481
diff changeset
254 if hasattr(doctest, 'ELLIPSIS'):
4c473bedd528 Fix Python 2.3 compatibility for 0.9 branch (closes #233)
fschwarz
parents: 481
diff changeset
255 suite.addTest(doctest.DocTestSuite(catalog, optionflags=doctest.ELLIPSIS))
4c473bedd528 Fix Python 2.3 compatibility for 0.9 branch (closes #233)
fschwarz
parents: 481
diff changeset
256 else:
4c473bedd528 Fix Python 2.3 compatibility for 0.9 branch (closes #233)
fschwarz
parents: 481
diff changeset
257 # Python 2.3 has no doctest.ELLIPSIS option, it's implicit
4c473bedd528 Fix Python 2.3 compatibility for 0.9 branch (closes #233)
fschwarz
parents: 481
diff changeset
258 suite.addTest(doctest.DocTestSuite(catalog))
263
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
259 suite.addTest(unittest.makeSuite(MessageTestCase))
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
260 suite.addTest(unittest.makeSuite(CatalogTestCase))
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
261 return suite
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
262
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
263 if __name__ == '__main__':
5b7d3f9f7d74 Create branch for 0.9.x maintenance.
cmlenz
parents:
diff changeset
264 unittest.main(defaultTest='suite')
Copyright (C) 2012-2017 Edgewall Software