diff options
author | Armin Ronacher <armin.ronacher@active-4.com> | 2008-06-17 21:55:14 +0000 |
---|---|---|
committer | Armin Ronacher <armin.ronacher@active-4.com> | 2008-06-17 21:55:14 +0000 |
commit | 5d2a30deb7507385ff70796caa00b6dd3efc91bb (patch) | |
tree | c73bc58cfd10e263e562e44db819b55dbb90208c /babel | |
parent | b17bcf748ebe63b557531b6663606dabaf3bfc03 (diff) | |
download | babel-5d2a30deb7507385ff70796caa00b6dd3efc91bb.tar.gz |
Message.clone doesn't return a shallow copy any longer. This fixes a bug with update where flags where shared.
Diffstat (limited to 'babel')
-rw-r--r-- | babel/messages/catalog.py | 8 | ||||
-rw-r--r-- | babel/messages/tests/catalog.py | 7 |
2 files changed, 12 insertions, 3 deletions
diff --git a/babel/messages/catalog.py b/babel/messages/catalog.py index e6dee31..4b54fd8 100644 --- a/babel/messages/catalog.py +++ b/babel/messages/catalog.py @@ -17,6 +17,7 @@ from cgi import parse_header from datetime import datetime from difflib import get_close_matches from email import message_from_string +from copy import copy import re try: set @@ -104,9 +105,10 @@ class Message(object): return cmp(self.id, obj.id) def clone(self): - return Message(self.id, self.string, self.locations, self.flags, - self.auto_comments, self.user_comments, - self.previous_id, self.lineno, self.context) + return Message(*map(copy, (self.id, self.string, self.locations, + self.flags, self.auto_comments, + self.user_comments, self.previous_id, + self.lineno, self.context))) def check(self, catalog=None): """Run various validation checks on the message. Some validations diff --git a/babel/messages/tests/catalog.py b/babel/messages/tests/catalog.py index dbed58c..4015980 100644 --- a/babel/messages/tests/catalog.py +++ b/babel/messages/tests/catalog.py @@ -34,6 +34,7 @@ class MessageTestCase(unittest.TestCase): assert catalog.PYTHON_FORMAT.search('foo %(name).*f') assert catalog.PYTHON_FORMAT.search('foo %(name)3.*f') assert catalog.PYTHON_FORMAT.search('foo %(name)*.*f') + assert catalog.PYTHON_FORMAT.search('foo %()s') def test_translator_comments(self): mess = catalog.Message('foo', user_comments=['Comment About `foo`']) @@ -44,6 +45,12 @@ class MessageTestCase(unittest.TestCase): self.assertEqual(mess.auto_comments, ['Comment 1 About `foo`', 'Comment 2 About `foo`']) + def test_clone_message_object(self): + msg = catalog.Message('foo', locations=[('foo.py', 42)]) + clone = msg.clone() + clone.locations.append(('bar.py', 42)) + self.assertEqual(msg.locations, [('foo.py', 42)]) + class CatalogTestCase(unittest.TestCase): |