summaryrefslogtreecommitdiff
path: root/babel
diff options
context:
space:
mode:
authorArmin Ronacher <armin.ronacher@active-4.com>2008-06-17 21:55:14 +0000
committerArmin Ronacher <armin.ronacher@active-4.com>2008-06-17 21:55:14 +0000
commit5d2a30deb7507385ff70796caa00b6dd3efc91bb (patch)
treec73bc58cfd10e263e562e44db819b55dbb90208c /babel
parentb17bcf748ebe63b557531b6663606dabaf3bfc03 (diff)
downloadbabel-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.py8
-rw-r--r--babel/messages/tests/catalog.py7
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):