@@ -299,10 +299,62 @@ def test_obsolete_message_with_context(self):
299299 catalog = pofile .read_po (buf )
300300 assert len (catalog ) == 2
301301 assert len (catalog .obsolete ) == 1
302- message = catalog .obsolete ["foo" ]
302+ message = catalog .obsolete [( "foo" , "other" ) ]
303303 assert message .context == 'other'
304304 assert message .string == 'Voh'
305305
306+ def test_obsolete_messages_with_context (self ):
307+ buf = StringIO ('''
308+ # This is an obsolete message
309+ #~ msgctxt "apple"
310+ #~ msgid "foo"
311+ #~ msgstr "Foo"
312+
313+ # This is an obsolete message with the same id but different context
314+ #~ msgctxt "orange"
315+ #~ msgid "foo"
316+ #~ msgstr "Bar"
317+ ''' )
318+ catalog = pofile .read_po (buf )
319+ assert len (catalog ) == 0
320+ assert len (catalog .obsolete ) == 2
321+ assert 'foo' not in catalog .obsolete
322+
323+ apple_msg = catalog .obsolete [('foo' , 'apple' )]
324+ assert apple_msg .id == 'foo'
325+ assert apple_msg .string == 'Foo'
326+ assert apple_msg .user_comments == ['This is an obsolete message' ]
327+
328+ orange_msg = catalog .obsolete [('foo' , 'orange' )]
329+ assert orange_msg .id == 'foo'
330+ assert orange_msg .string == 'Bar'
331+ assert orange_msg .user_comments == ['This is an obsolete message with the same id but different context' ]
332+
333+ def test_obsolete_messages_roundtrip (self ):
334+ buf = StringIO ('''\
335+ # This message is not obsolete
336+ #: main.py:1
337+ msgid "bar"
338+ msgstr "Bahr"
339+
340+ # This is an obsolete message
341+ #~ msgid "foo"
342+ #~ msgstr "Voh"
343+
344+ # This is an obsolete message
345+ #~ msgctxt "apple"
346+ #~ msgid "foo"
347+ #~ msgstr "Foo"
348+
349+ # This is an obsolete message with the same id but different context
350+ #~ msgctxt "orange"
351+ #~ msgid "foo"
352+ #~ msgstr "Bar"
353+
354+ ''' )
355+ generated_po_file = '' .join (pofile .generate_po (pofile .read_po (buf ), omit_header = True ))
356+ assert buf .getvalue () == generated_po_file
357+
306358 def test_multiline_context (self ):
307359 buf = StringIO ('''
308360msgctxt "a really long "
@@ -394,7 +446,7 @@ def test_obsolete_plural_with_square_brackets(self):
394446 assert len (catalog ) == 0
395447 assert len (catalog .obsolete ) == 1
396448 assert catalog .num_plurals == 2
397- message = catalog .obsolete [( 'foo' , 'foos' ) ]
449+ message = catalog .obsolete ['foo' ]
398450 assert len (message .string ) == 2
399451 assert message .string [0 ] == 'Voh [text]'
400452 assert message .string [1 ] == 'Vohs [text]'
0 commit comments