# HG changeset patch # User cmlenz # Date 1184950028 0 # Node ID fd29fabdc98638156e979ed4cf6394f6a98ac638 # Parent 01dd895f396cc4f8dc3d6a93549493324e4790e9 Follow-up to [239]: also combine duplicate comments when writing PO files. diff --git a/babel/messages/catalog.py b/babel/messages/catalog.py --- a/babel/messages/catalog.py +++ b/babel/messages/catalog.py @@ -471,8 +471,10 @@ current.id = message.id current.string = message.string current.locations.extend(message.locations) - current.auto_comments.extend(message.auto_comments) - current.user_comments.extend(message.user_comments) + current.auto_comments = list(distinct(current.auto_comments + + message.auto_comments)) + current.user_comments = list(distinct(current.user_comments + + message.user_comments)) current.flags |= message.flags message = current elif id == '': diff --git a/babel/messages/tests/catalog.py b/babel/messages/tests/catalog.py --- a/babel/messages/tests/catalog.py +++ b/babel/messages/tests/catalog.py @@ -54,12 +54,18 @@ self.assertEqual(1, len(cat)) def test_duplicate_auto_comment(self): - msg = catalog.Message('foo', auto_comments=['A comment', 'A comment']) - self.assertEqual(['A comment'], msg.auto_comments) + cat = catalog.Catalog() + cat.add('foo', auto_comments=['A comment']) + cat.add('foo', auto_comments=['A comment', 'Another comment']) + self.assertEqual(['A comment', 'Another comment'], + cat['foo'].auto_comments) def test_duplicate_user_comment(self): - msg = catalog.Message('foo', user_comments=['A comment', 'A comment']) - self.assertEqual(['A comment'], msg.user_comments) + cat = catalog.Catalog() + cat.add('foo', user_comments=['A comment']) + cat.add('foo', user_comments=['A comment', 'Another comment']) + self.assertEqual(['A comment', 'Another comment'], + cat['foo'].user_comments) def test_update_message_updates_comments(self): cat = catalog.Catalog() diff --git a/babel/messages/tests/pofile.py b/babel/messages/tests/pofile.py --- a/babel/messages/tests/pofile.py +++ b/babel/messages/tests/pofile.py @@ -120,6 +120,16 @@ msgid "foo" msgstr ""''', buf.getvalue().strip()) + def test_duplicate_comments(self): + catalog = Catalog() + catalog.add(u'foo', auto_comments=['A comment']) + catalog.add(u'foo', auto_comments=['A comment']) + buf = StringIO() + pofile.write_po(buf, catalog, omit_header=True) + self.assertEqual('''#. A comment +msgid "foo" +msgstr ""''', buf.getvalue().strip()) + def test_wrap_long_lines(self): text = """Here's some text where white space and line breaks matter, and should