annotate babel/messages/tests/catalog.py @ 546:10de195cfb04

catalog.add() now returns the message instance (closes #245)
author fschwarz
date Sat, 19 Mar 2011 19:28:59 +0000
parents e93f68837913
children
rev   line source
58
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
1 # -*- coding: utf-8 -*-
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
2 #
532
e93f68837913 Update the copyright line.
jruigrok
parents: 468
diff changeset
3 # Copyright (C) 2007-2011 Edgewall Software
58
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
4 # All rights reserved.
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
5 #
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
6 # This software is licensed as described in the file COPYING, which
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
7 # you should have received as part of this distribution. The terms
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
8 # are also available at http://babel.edgewall.org/wiki/License.
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
9 #
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
10 # This software consists of voluntary contributions made by many
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
11 # individuals. For the exact contribution history, see the revision
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
12 # history and logs, available at http://babel.edgewall.org/log/.
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
13
421
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
14 import copy
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
15 import datetime
58
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
16 import doctest
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
17 import unittest
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
18
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
19 from babel.messages import catalog
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
20
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
21
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
22 class MessageTestCase(unittest.TestCase):
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
23
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
24 def test_python_format(self):
222
bd8b1301b27e Added infrastructure for adding catalog checkers, and implement a checker that validations Python format parameters in translations, closing #19.
cmlenz
parents: 202
diff changeset
25 assert catalog.PYTHON_FORMAT.search('foo %d bar')
bd8b1301b27e Added infrastructure for adding catalog checkers, and implement a checker that validations Python format parameters in translations, closing #19.
cmlenz
parents: 202
diff changeset
26 assert catalog.PYTHON_FORMAT.search('foo %s bar')
bd8b1301b27e Added infrastructure for adding catalog checkers, and implement a checker that validations Python format parameters in translations, closing #19.
cmlenz
parents: 202
diff changeset
27 assert catalog.PYTHON_FORMAT.search('foo %r bar')
227
f358dd40a960 Applied patch by Ramiro Morales for more extensive detection of Python string formatting specifiers. Closes #57.
cmlenz
parents: 222
diff changeset
28 assert catalog.PYTHON_FORMAT.search('foo %(name).1f')
f358dd40a960 Applied patch by Ramiro Morales for more extensive detection of Python string formatting specifiers. Closes #57.
cmlenz
parents: 222
diff changeset
29 assert catalog.PYTHON_FORMAT.search('foo %(name)3.3f')
f358dd40a960 Applied patch by Ramiro Morales for more extensive detection of Python string formatting specifiers. Closes #57.
cmlenz
parents: 222
diff changeset
30 assert catalog.PYTHON_FORMAT.search('foo %(name)3f')
f358dd40a960 Applied patch by Ramiro Morales for more extensive detection of Python string formatting specifiers. Closes #57.
cmlenz
parents: 222
diff changeset
31 assert catalog.PYTHON_FORMAT.search('foo %(name)06d')
f358dd40a960 Applied patch by Ramiro Morales for more extensive detection of Python string formatting specifiers. Closes #57.
cmlenz
parents: 222
diff changeset
32 assert catalog.PYTHON_FORMAT.search('foo %(name)Li')
f358dd40a960 Applied patch by Ramiro Morales for more extensive detection of Python string formatting specifiers. Closes #57.
cmlenz
parents: 222
diff changeset
33 assert catalog.PYTHON_FORMAT.search('foo %(name)#d')
f358dd40a960 Applied patch by Ramiro Morales for more extensive detection of Python string formatting specifiers. Closes #57.
cmlenz
parents: 222
diff changeset
34 assert catalog.PYTHON_FORMAT.search('foo %(name)-4.4hs')
f358dd40a960 Applied patch by Ramiro Morales for more extensive detection of Python string formatting specifiers. Closes #57.
cmlenz
parents: 222
diff changeset
35 assert catalog.PYTHON_FORMAT.search('foo %(name)*.3f')
f358dd40a960 Applied patch by Ramiro Morales for more extensive detection of Python string formatting specifiers. Closes #57.
cmlenz
parents: 222
diff changeset
36 assert catalog.PYTHON_FORMAT.search('foo %(name).*f')
f358dd40a960 Applied patch by Ramiro Morales for more extensive detection of Python string formatting specifiers. Closes #57.
cmlenz
parents: 222
diff changeset
37 assert catalog.PYTHON_FORMAT.search('foo %(name)3.*f')
f358dd40a960 Applied patch by Ramiro Morales for more extensive detection of Python string formatting specifiers. Closes #57.
cmlenz
parents: 222
diff changeset
38 assert catalog.PYTHON_FORMAT.search('foo %(name)*.*f')
360
36408f068138 Message.clone doesn't return a shallow copy any longer. This fixes a bug with update where flags where shared.
aronacher
parents: 352
diff changeset
39 assert catalog.PYTHON_FORMAT.search('foo %()s')
107
4b42e23644e5 `Message`, `read_po` and `write_po` now all handle user/auto comments correctly.
palgarvio
parents: 97
diff changeset
40
82
f421e5576d26 Added support for translator comments at the API and frontends levels.(See #12, item 1). Updated docs and tests accordingly.
palgarvio
parents: 71
diff changeset
41 def test_translator_comments(self):
107
4b42e23644e5 `Message`, `read_po` and `write_po` now all handle user/auto comments correctly.
palgarvio
parents: 97
diff changeset
42 mess = catalog.Message('foo', user_comments=['Comment About `foo`'])
202
d3c272492053 Added `--no-fuzzy-matching` to the frontends and also `--previous` which adds the old msgid's as comments. The latest closes #31.
palgarvio
parents: 183
diff changeset
43 self.assertEqual(mess.user_comments, ['Comment About `foo`'])
82
f421e5576d26 Added support for translator comments at the API and frontends levels.(See #12, item 1). Updated docs and tests accordingly.
palgarvio
parents: 71
diff changeset
44 mess = catalog.Message('foo',
107
4b42e23644e5 `Message`, `read_po` and `write_po` now all handle user/auto comments correctly.
palgarvio
parents: 97
diff changeset
45 auto_comments=['Comment 1 About `foo`',
82
f421e5576d26 Added support for translator comments at the API and frontends levels.(See #12, item 1). Updated docs and tests accordingly.
palgarvio
parents: 71
diff changeset
46 'Comment 2 About `foo`'])
107
4b42e23644e5 `Message`, `read_po` and `write_po` now all handle user/auto comments correctly.
palgarvio
parents: 97
diff changeset
47 self.assertEqual(mess.auto_comments, ['Comment 1 About `foo`',
82
f421e5576d26 Added support for translator comments at the API and frontends levels.(See #12, item 1). Updated docs and tests accordingly.
palgarvio
parents: 71
diff changeset
48 'Comment 2 About `foo`'])
58
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
49
360
36408f068138 Message.clone doesn't return a shallow copy any longer. This fixes a bug with update where flags where shared.
aronacher
parents: 352
diff changeset
50 def test_clone_message_object(self):
36408f068138 Message.clone doesn't return a shallow copy any longer. This fixes a bug with update where flags where shared.
aronacher
parents: 352
diff changeset
51 msg = catalog.Message('foo', locations=[('foo.py', 42)])
36408f068138 Message.clone doesn't return a shallow copy any longer. This fixes a bug with update where flags where shared.
aronacher
parents: 352
diff changeset
52 clone = msg.clone()
36408f068138 Message.clone doesn't return a shallow copy any longer. This fixes a bug with update where flags where shared.
aronacher
parents: 352
diff changeset
53 clone.locations.append(('bar.py', 42))
36408f068138 Message.clone doesn't return a shallow copy any longer. This fixes a bug with update where flags where shared.
aronacher
parents: 352
diff changeset
54 self.assertEqual(msg.locations, [('foo.py', 42)])
361
1b78b747b386 Updated catalog test case for last commit, flags are now tested too in the clone test case.
aronacher
parents: 360
diff changeset
55 msg.flags.add('fuzzy')
1b78b747b386 Updated catalog test case for last commit, flags are now tested too in the clone test case.
aronacher
parents: 360
diff changeset
56 assert not clone.fuzzy and msg.fuzzy
360
36408f068138 Message.clone doesn't return a shallow copy any longer. This fixes a bug with update where flags where shared.
aronacher
parents: 352
diff changeset
57
58
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
58
71
b260ffa01a2d Message catalogs can have multiple messages with the same ID, where some of them have plural strings, and others don't. Still the same message.
cmlenz
parents: 69
diff changeset
59 class CatalogTestCase(unittest.TestCase):
546
10de195cfb04 catalog.add() now returns the message instance (closes #245)
fschwarz
parents: 532
diff changeset
60 def test_add_returns_message_instance(self):
10de195cfb04 catalog.add() now returns the message instance (closes #245)
fschwarz
parents: 532
diff changeset
61 cat = catalog.Catalog()
10de195cfb04 catalog.add() now returns the message instance (closes #245)
fschwarz
parents: 532
diff changeset
62 message = cat.add('foo')
10de195cfb04 catalog.add() now returns the message instance (closes #245)
fschwarz
parents: 532
diff changeset
63 self.assertEquals('foo', message.id)
71
b260ffa01a2d Message catalogs can have multiple messages with the same ID, where some of them have plural strings, and others don't. Still the same message.
cmlenz
parents: 69
diff changeset
64
b260ffa01a2d Message catalogs can have multiple messages with the same ID, where some of them have plural strings, and others don't. Still the same message.
cmlenz
parents: 69
diff changeset
65 def test_two_messages_with_same_singular(self):
b260ffa01a2d Message catalogs can have multiple messages with the same ID, where some of them have plural strings, and others don't. Still the same message.
cmlenz
parents: 69
diff changeset
66 cat = catalog.Catalog()
b260ffa01a2d Message catalogs can have multiple messages with the same ID, where some of them have plural strings, and others don't. Still the same message.
cmlenz
parents: 69
diff changeset
67 cat.add('foo')
b260ffa01a2d Message catalogs can have multiple messages with the same ID, where some of them have plural strings, and others don't. Still the same message.
cmlenz
parents: 69
diff changeset
68 cat.add(('foo', 'foos'))
b260ffa01a2d Message catalogs can have multiple messages with the same ID, where some of them have plural strings, and others don't. Still the same message.
cmlenz
parents: 69
diff changeset
69 self.assertEqual(1, len(cat))
97
debd9ac3bb4d Fix for #11 (use local timezone in timestamps of generated POT).
cmlenz
parents: 91
diff changeset
70
229
85340bec3a97 Fix tests broken by [233], and add new tests.
cmlenz
parents: 227
diff changeset
71 def test_duplicate_auto_comment(self):
230
aaf36f409166 Follow-up to [239]: also combine duplicate comments when writing PO files.
cmlenz
parents: 229
diff changeset
72 cat = catalog.Catalog()
aaf36f409166 Follow-up to [239]: also combine duplicate comments when writing PO files.
cmlenz
parents: 229
diff changeset
73 cat.add('foo', auto_comments=['A comment'])
aaf36f409166 Follow-up to [239]: also combine duplicate comments when writing PO files.
cmlenz
parents: 229
diff changeset
74 cat.add('foo', auto_comments=['A comment', 'Another comment'])
aaf36f409166 Follow-up to [239]: also combine duplicate comments when writing PO files.
cmlenz
parents: 229
diff changeset
75 self.assertEqual(['A comment', 'Another comment'],
aaf36f409166 Follow-up to [239]: also combine duplicate comments when writing PO files.
cmlenz
parents: 229
diff changeset
76 cat['foo'].auto_comments)
229
85340bec3a97 Fix tests broken by [233], and add new tests.
cmlenz
parents: 227
diff changeset
77
85340bec3a97 Fix tests broken by [233], and add new tests.
cmlenz
parents: 227
diff changeset
78 def test_duplicate_user_comment(self):
230
aaf36f409166 Follow-up to [239]: also combine duplicate comments when writing PO files.
cmlenz
parents: 229
diff changeset
79 cat = catalog.Catalog()
aaf36f409166 Follow-up to [239]: also combine duplicate comments when writing PO files.
cmlenz
parents: 229
diff changeset
80 cat.add('foo', user_comments=['A comment'])
aaf36f409166 Follow-up to [239]: also combine duplicate comments when writing PO files.
cmlenz
parents: 229
diff changeset
81 cat.add('foo', user_comments=['A comment', 'Another comment'])
aaf36f409166 Follow-up to [239]: also combine duplicate comments when writing PO files.
cmlenz
parents: 229
diff changeset
82 self.assertEqual(['A comment', 'Another comment'],
aaf36f409166 Follow-up to [239]: also combine duplicate comments when writing PO files.
cmlenz
parents: 229
diff changeset
83 cat['foo'].user_comments)
229
85340bec3a97 Fix tests broken by [233], and add new tests.
cmlenz
parents: 227
diff changeset
84
232
1448b500de40 Forgot to update test method name after copy/paste.
cmlenz
parents: 231
diff changeset
85 def test_duplicate_location(self):
231
fc8b8c2bba53 Remove duplicate locations of catalog messages.
cmlenz
parents: 230
diff changeset
86 cat = catalog.Catalog()
fc8b8c2bba53 Remove duplicate locations of catalog messages.
cmlenz
parents: 230
diff changeset
87 cat.add('foo', locations=[('foo.py', 1)])
fc8b8c2bba53 Remove duplicate locations of catalog messages.
cmlenz
parents: 230
diff changeset
88 cat.add('foo', locations=[('foo.py', 1)])
fc8b8c2bba53 Remove duplicate locations of catalog messages.
cmlenz
parents: 230
diff changeset
89 self.assertEqual([('foo.py', 1)], cat['foo'].locations)
fc8b8c2bba53 Remove duplicate locations of catalog messages.
cmlenz
parents: 230
diff changeset
90
279
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
91 def test_update_message_changed_to_plural(self):
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
92 cat = catalog.Catalog()
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
93 cat.add(u'foo', u'Voh')
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
94 tmpl = catalog.Catalog()
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
95 tmpl.add((u'foo', u'foos'))
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
96 cat.update(tmpl)
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
97 self.assertEqual((u'Voh', ''), cat['foo'].string)
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
98 assert cat['foo'].fuzzy
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
99
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
100 def test_update_message_changed_to_simple(self):
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
101 cat = catalog.Catalog()
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
102 cat.add((u'foo' u'foos'), (u'Voh', u'Vöhs'))
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
103 tmpl = catalog.Catalog()
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
104 tmpl.add(u'foo')
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
105 cat.update(tmpl)
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
106 self.assertEqual(u'Voh', cat['foo'].string)
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
107 assert cat['foo'].fuzzy
3308e9971fab Fix for updating catalog messages that changed from gettext to ngettext or vice versa.
cmlenz
parents: 232
diff changeset
108
91
f517ad70d8fc Unittest for the problem reported by pjenvey fixed on [88].
palgarvio
parents: 82
diff changeset
109 def test_update_message_updates_comments(self):
f517ad70d8fc Unittest for the problem reported by pjenvey fixed on [88].
palgarvio
parents: 82
diff changeset
110 cat = catalog.Catalog()
f517ad70d8fc Unittest for the problem reported by pjenvey fixed on [88].
palgarvio
parents: 82
diff changeset
111 cat[u'foo'] = catalog.Message('foo', locations=[('main.py', 5)])
107
4b42e23644e5 `Message`, `read_po` and `write_po` now all handle user/auto comments correctly.
palgarvio
parents: 97
diff changeset
112 self.assertEqual(cat[u'foo'].auto_comments, [])
4b42e23644e5 `Message`, `read_po` and `write_po` now all handle user/auto comments correctly.
palgarvio
parents: 97
diff changeset
113 self.assertEqual(cat[u'foo'].user_comments, [])
91
f517ad70d8fc Unittest for the problem reported by pjenvey fixed on [88].
palgarvio
parents: 82
diff changeset
114 # Update cat[u'foo'] with a new location and a comment
f517ad70d8fc Unittest for the problem reported by pjenvey fixed on [88].
palgarvio
parents: 82
diff changeset
115 cat[u'foo'] = catalog.Message('foo', locations=[('main.py', 7)],
107
4b42e23644e5 `Message`, `read_po` and `write_po` now all handle user/auto comments correctly.
palgarvio
parents: 97
diff changeset
116 user_comments=['Foo Bar comment 1'])
4b42e23644e5 `Message`, `read_po` and `write_po` now all handle user/auto comments correctly.
palgarvio
parents: 97
diff changeset
117 self.assertEqual(cat[u'foo'].user_comments, ['Foo Bar comment 1'])
91
f517ad70d8fc Unittest for the problem reported by pjenvey fixed on [88].
palgarvio
parents: 82
diff changeset
118 # now add yet another location with another comment
f517ad70d8fc Unittest for the problem reported by pjenvey fixed on [88].
palgarvio
parents: 82
diff changeset
119 cat[u'foo'] = catalog.Message('foo', locations=[('main.py', 9)],
202
d3c272492053 Added `--no-fuzzy-matching` to the frontends and also `--previous` which adds the old msgid's as comments. The latest closes #31.
palgarvio
parents: 183
diff changeset
120 auto_comments=['Foo Bar comment 2'])
107
4b42e23644e5 `Message`, `read_po` and `write_po` now all handle user/auto comments correctly.
palgarvio
parents: 97
diff changeset
121 self.assertEqual(cat[u'foo'].auto_comments, ['Foo Bar comment 2'])
71
b260ffa01a2d Message catalogs can have multiple messages with the same ID, where some of them have plural strings, and others don't. Still the same message.
cmlenz
parents: 69
diff changeset
122
167
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
123 def test_update_fuzzy_matching_with_case_change(self):
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
124 cat = catalog.Catalog()
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
125 cat.add('foo', 'Voh')
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
126 cat.add('bar', 'Bahr')
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
127 tmpl = catalog.Catalog()
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
128 tmpl.add('Foo')
183
e927dffc9ab4 The frontends now provide ways to update existing translations catalogs from a template. Closes #22.
cmlenz
parents: 167
diff changeset
129 cat.update(tmpl)
e927dffc9ab4 The frontends now provide ways to update existing translations catalogs from a template. Closes #22.
cmlenz
parents: 167
diff changeset
130 self.assertEqual(1, len(cat.obsolete))
167
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
131 assert 'foo' not in cat
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
132
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
133 self.assertEqual('Voh', cat['Foo'].string)
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
134 self.assertEqual(True, cat['Foo'].fuzzy)
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
135
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
136 def test_update_fuzzy_matching_with_char_change(self):
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
137 cat = catalog.Catalog()
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
138 cat.add('fo', 'Voh')
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
139 cat.add('bar', 'Bahr')
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
140 tmpl = catalog.Catalog()
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
141 tmpl.add('foo')
183
e927dffc9ab4 The frontends now provide ways to update existing translations catalogs from a template. Closes #22.
cmlenz
parents: 167
diff changeset
142 cat.update(tmpl)
e927dffc9ab4 The frontends now provide ways to update existing translations catalogs from a template. Closes #22.
cmlenz
parents: 167
diff changeset
143 self.assertEqual(1, len(cat.obsolete))
167
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
144 assert 'fo' not in cat
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
145
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
146 self.assertEqual('Voh', cat['foo'].string)
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
147 self.assertEqual(True, cat['foo'].fuzzy)
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
148
314
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
149 def test_update_fuzzy_matching_no_msgstr(self):
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
150 cat = catalog.Catalog()
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
151 cat.add('fo', '')
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
152 tmpl = catalog.Catalog()
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
153 tmpl.add('fo')
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
154 tmpl.add('foo')
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
155 cat.update(tmpl)
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
156 assert 'fo' in cat
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
157 assert 'foo' in cat
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
158
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
159 self.assertEqual('', cat['fo'].string)
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
160 self.assertEqual(False, cat['fo'].fuzzy)
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
161 self.assertEqual(None, cat['foo'].string)
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
162 self.assertEqual(False, cat['foo'].fuzzy)
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
163
352
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
164 def test_update_fuzzy_matching_with_new_context(self):
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
165 cat = catalog.Catalog()
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
166 cat.add('foo', 'Voh')
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
167 cat.add('bar', 'Bahr')
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
168 tmpl = catalog.Catalog()
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
169 tmpl.add('Foo', context='Menu')
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
170 cat.update(tmpl)
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
171 self.assertEqual(1, len(cat.obsolete))
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
172 assert 'foo' not in cat
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
173
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
174 message = cat.get('Foo', 'Menu')
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
175 self.assertEqual('Voh', message.string)
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
176 self.assertEqual(True, message.fuzzy)
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
177 self.assertEqual('Menu', message.context)
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
178
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
179 def test_update_fuzzy_matching_with_changed_context(self):
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
180 cat = catalog.Catalog()
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
181 cat.add('foo', 'Voh', context='Menu|File')
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
182 cat.add('bar', 'Bahr', context='Menu|File')
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
183 tmpl = catalog.Catalog()
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
184 tmpl.add('Foo', context='Menu|Edit')
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
185 cat.update(tmpl)
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
186 self.assertEqual(1, len(cat.obsolete))
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
187 assert cat.get('Foo', 'Menu|File') is None
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
188
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
189 message = cat.get('Foo', 'Menu|Edit')
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
190 self.assertEqual('Voh', message.string)
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
191 self.assertEqual(True, message.fuzzy)
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
192 self.assertEqual('Menu|Edit', message.context)
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
193
314
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
194 def test_update_fuzzy_matching_no_cascading(self):
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
195 cat = catalog.Catalog()
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
196 cat.add('fo', 'Voh')
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
197 cat.add('foo', 'Vohe')
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
198 tmpl = catalog.Catalog()
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
199 tmpl.add('fo')
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
200 tmpl.add('foo')
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
201 tmpl.add('fooo')
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
202 cat.update(tmpl)
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
203 assert 'fo' in cat
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
204 assert 'foo' in cat
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
205
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
206 self.assertEqual('Voh', cat['fo'].string)
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
207 self.assertEqual(False, cat['fo'].fuzzy)
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
208 self.assertEqual('Vohe', cat['foo'].string)
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
209 self.assertEqual(False, cat['foo'].fuzzy)
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
210 self.assertEqual('Vohe', cat['fooo'].string)
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
211 self.assertEqual(True, cat['fooo'].fuzzy)
5c0bda4f20b1 Fix catalog updating with fuzzy matches. Closes #82.
cmlenz
parents: 279
diff changeset
212
167
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
213 def test_update_without_fuzzy_matching(self):
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
214 cat = catalog.Catalog()
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
215 cat.add('fo', 'Voh')
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
216 cat.add('bar', 'Bahr')
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
217 tmpl = catalog.Catalog()
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
218 tmpl.add('foo')
202
d3c272492053 Added `--no-fuzzy-matching` to the frontends and also `--previous` which adds the old msgid's as comments. The latest closes #31.
palgarvio
parents: 183
diff changeset
219 cat.update(tmpl, no_fuzzy_matching=True)
183
e927dffc9ab4 The frontends now provide ways to update existing translations catalogs from a template. Closes #22.
cmlenz
parents: 167
diff changeset
220 self.assertEqual(2, len(cat.obsolete))
167
533baef258bb Implement fuzzy matching to catalog updates. No frontend yet.
cmlenz
parents: 113
diff changeset
221
427
52492583006a Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id)` because this is always 2, instead, it's should be checked against `catalog.num_plurals`.
palgarvio
parents: 424
diff changeset
222 def test_fuzzy_matching_regarding_plurals(self):
52492583006a Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id)` because this is always 2, instead, it's should be checked against `catalog.num_plurals`.
palgarvio
parents: 424
diff changeset
223 cat = catalog.Catalog()
52492583006a Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id)` because this is always 2, instead, it's should be checked against `catalog.num_plurals`.
palgarvio
parents: 424
diff changeset
224 cat.add(('foo', 'foh'), ('foo', 'foh'))
52492583006a Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id)` because this is always 2, instead, it's should be checked against `catalog.num_plurals`.
palgarvio
parents: 424
diff changeset
225 ru = copy.copy(cat)
52492583006a Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id)` because this is always 2, instead, it's should be checked against `catalog.num_plurals`.
palgarvio
parents: 424
diff changeset
226 ru.locale = 'ru_RU'
52492583006a Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id)` because this is always 2, instead, it's should be checked against `catalog.num_plurals`.
palgarvio
parents: 424
diff changeset
227 ru.update(cat)
52492583006a Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id)` because this is always 2, instead, it's should be checked against `catalog.num_plurals`.
palgarvio
parents: 424
diff changeset
228 self.assertEqual(True, ru['foo'].fuzzy)
52492583006a Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id)` because this is always 2, instead, it's should be checked against `catalog.num_plurals`.
palgarvio
parents: 424
diff changeset
229 ru = copy.copy(cat)
52492583006a Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id)` because this is always 2, instead, it's should be checked against `catalog.num_plurals`.
palgarvio
parents: 424
diff changeset
230 ru.locale = 'ru_RU'
52492583006a Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id)` because this is always 2, instead, it's should be checked against `catalog.num_plurals`.
palgarvio
parents: 424
diff changeset
231 ru['foo'].string = ('foh', 'fohh', 'fohhh')
52492583006a Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id)` because this is always 2, instead, it's should be checked against `catalog.num_plurals`.
palgarvio
parents: 424
diff changeset
232 ru.update(cat)
52492583006a Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id)` because this is always 2, instead, it's should be checked against `catalog.num_plurals`.
palgarvio
parents: 424
diff changeset
233 self.assertEqual(False, ru['foo'].fuzzy)
52492583006a Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id)` because this is always 2, instead, it's should be checked against `catalog.num_plurals`.
palgarvio
parents: 424
diff changeset
234
315
654b632e5482 Merging catalogs would sometimes mix translations from different runs.
cmlenz
parents: 314
diff changeset
235 def test_update_no_template_mutation(self):
654b632e5482 Merging catalogs would sometimes mix translations from different runs.
cmlenz
parents: 314
diff changeset
236 tmpl = catalog.Catalog()
654b632e5482 Merging catalogs would sometimes mix translations from different runs.
cmlenz
parents: 314
diff changeset
237 tmpl.add('foo')
654b632e5482 Merging catalogs would sometimes mix translations from different runs.
cmlenz
parents: 314
diff changeset
238 cat1 = catalog.Catalog()
654b632e5482 Merging catalogs would sometimes mix translations from different runs.
cmlenz
parents: 314
diff changeset
239 cat1.add('foo', 'Voh')
654b632e5482 Merging catalogs would sometimes mix translations from different runs.
cmlenz
parents: 314
diff changeset
240 cat1.update(tmpl)
654b632e5482 Merging catalogs would sometimes mix translations from different runs.
cmlenz
parents: 314
diff changeset
241 cat2 = catalog.Catalog()
654b632e5482 Merging catalogs would sometimes mix translations from different runs.
cmlenz
parents: 314
diff changeset
242 cat2.update(tmpl)
654b632e5482 Merging catalogs would sometimes mix translations from different runs.
cmlenz
parents: 314
diff changeset
243
654b632e5482 Merging catalogs would sometimes mix translations from different runs.
cmlenz
parents: 314
diff changeset
244 self.assertEqual(None, cat2['foo'].string)
654b632e5482 Merging catalogs would sometimes mix translations from different runs.
cmlenz
parents: 314
diff changeset
245 self.assertEqual(False, cat2['foo'].fuzzy)
421
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
246
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
247 def test_update_po_updates_pot_creation_date(self):
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
248 template = catalog.Catalog()
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
249 localized_catalog = copy.deepcopy(template)
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
250 localized_catalog.locale = 'de_DE'
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
251 self.assertNotEqual(template.mime_headers,
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
252 localized_catalog.mime_headers)
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
253 self.assertEqual(template.creation_date,
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
254 localized_catalog.creation_date)
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
255 template.creation_date = datetime.datetime.now() - \
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
256 datetime.timedelta(minutes=5)
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
257 localized_catalog.update(template)
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
258 self.assertEqual(template.creation_date,
cadc2f937a78 Testcase for fix of #148.
palgarvio
parents: 361
diff changeset
259 localized_catalog.creation_date)
424
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
260
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
261 def test_update_po_keeps_po_revision_date(self):
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
262 template = catalog.Catalog()
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
263 localized_catalog = copy.deepcopy(template)
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
264 localized_catalog.locale = 'de_DE'
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
265 fake_rev_date = datetime.datetime.now() - datetime.timedelta(days=5)
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
266 localized_catalog.revision_date = fake_rev_date
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
267 self.assertNotEqual(template.mime_headers,
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
268 localized_catalog.mime_headers)
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
269 self.assertEqual(template.creation_date,
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
270 localized_catalog.creation_date)
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
271 template.creation_date = datetime.datetime.now() - \
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
272 datetime.timedelta(minutes=5)
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
273 localized_catalog.update(template)
d07989336794 Final and complete fix for #148.
palgarvio
parents: 421
diff changeset
274 self.assertEqual(localized_catalog.revision_date, fake_rev_date)
71
b260ffa01a2d Message catalogs can have multiple messages with the same ID, where some of them have plural strings, and others don't. Still the same message.
cmlenz
parents: 69
diff changeset
275
429
08e2d18163d9 Fix Catalog._set_mime_headers' handing of negative offsets.
jruigrok
parents: 427
diff changeset
276 def test_stores_datetime_correctly(self):
08e2d18163d9 Fix Catalog._set_mime_headers' handing of negative offsets.
jruigrok
parents: 427
diff changeset
277 localized = catalog.Catalog()
08e2d18163d9 Fix Catalog._set_mime_headers' handing of negative offsets.
jruigrok
parents: 427
diff changeset
278 localized.locale = 'de_DE'
08e2d18163d9 Fix Catalog._set_mime_headers' handing of negative offsets.
jruigrok
parents: 427
diff changeset
279 localized[''] = catalog.Message('',
08e2d18163d9 Fix Catalog._set_mime_headers' handing of negative offsets.
jruigrok
parents: 427
diff changeset
280 "POT-Creation-Date: 2009-03-09 15:47-0700\n" +
08e2d18163d9 Fix Catalog._set_mime_headers' handing of negative offsets.
jruigrok
parents: 427
diff changeset
281 "PO-Revision-Date: 2009-03-09 15:47-0700\n")
08e2d18163d9 Fix Catalog._set_mime_headers' handing of negative offsets.
jruigrok
parents: 427
diff changeset
282 for key, value in localized.mime_headers:
08e2d18163d9 Fix Catalog._set_mime_headers' handing of negative offsets.
jruigrok
parents: 427
diff changeset
283 if key in ('POT-Creation-Date', 'PO-Revision-Date'):
08e2d18163d9 Fix Catalog._set_mime_headers' handing of negative offsets.
jruigrok
parents: 427
diff changeset
284 self.assertEqual(value, '2009-03-09 15:47-0700')
352
90849c44c531 More work on msgctxt support (#54).
cmlenz
parents: 315
diff changeset
285
58
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
286 def suite():
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
287 suite = unittest.TestSuite()
468
e58dac9a58e7 Fix test to run under Python 2.3.
jruigrok
parents: 429
diff changeset
288 if hasattr(doctest, 'ELLIPSIS'):
e58dac9a58e7 Fix test to run under Python 2.3.
jruigrok
parents: 429
diff changeset
289 suite.addTest(doctest.DocTestSuite(catalog, optionflags=doctest.ELLIPSIS))
e58dac9a58e7 Fix test to run under Python 2.3.
jruigrok
parents: 429
diff changeset
290 else:
e58dac9a58e7 Fix test to run under Python 2.3.
jruigrok
parents: 429
diff changeset
291 suite.addTest(doctest.DocTestSuite(catalog))
58
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
292 suite.addTest(unittest.makeSuite(MessageTestCase))
71
b260ffa01a2d Message catalogs can have multiple messages with the same ID, where some of them have plural strings, and others don't. Still the same message.
cmlenz
parents: 69
diff changeset
293 suite.addTest(unittest.makeSuite(CatalogTestCase))
58
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
294 return suite
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
295
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
296 if __name__ == '__main__':
068952b4d4c0 Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
diff changeset
297 unittest.main(defaultTest='suite')
Copyright (C) 2012-2017 Edgewall Software