changeset 230:aaf36f409166

Follow-up to [239]: also combine duplicate comments when writing PO files.
author cmlenz
date Fri, 20 Jul 2007 16:47:08 +0000
parents 85340bec3a97
children fc8b8c2bba53
files babel/messages/catalog.py babel/messages/tests/catalog.py babel/messages/tests/pofile.py
diffstat 3 files changed, 24 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- 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 == '':
--- 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()
--- 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
Copyright (C) 2012-2017 Edgewall Software