except ValueError:
continue
locations.append((location[:pos], lineno))
+ else:
+ locations.append((location, None))
elif line[1:].startswith(','):
for flag in line[2:].lstrip().split(','):
flags.append(flag.strip())
_write_comment(comment, prefix='.')
if not no_location:
- locs = u' '.join([u'%s:%d' % (filename.replace(os.sep, '/'), lineno)
- for filename, lineno in message.locations])
- _write_comment(locs, prefix=':')
+ locs = []
+ for filename, lineno in message.locations:
+ if lineno:
+ locs.append(u'%s:%d' % (filename.replace(os.sep, '/'), lineno))
+ else:
+ locs.append(u'%s' % filename.replace(os.sep, '/'))
+ _write_comment(' '.join(locs), prefix=':')
if message.flags:
_write('#%s\n' % ', '.join([''] + sorted(message.flags)))
msgstr[1] "Voeh"''' in value
assert value.find(b'msgid ""') < value.find(b'msgid "bar"') < value.find(b'msgid "foo"')
+ def test_file_with_no_lineno(self):
+ catalog = Catalog()
+ catalog.add(u'bar', locations=[('utils.py', None)],
+ user_comments=['Comment About `bar` with',
+ 'multiple lines.'])
+ buf = BytesIO()
+ pofile.write_po(buf, catalog, sort_output=True)
+ value = buf.getvalue().strip()
+ assert b'''\
+# Comment About `bar` with
+# multiple lines.
+#: utils.py
+msgid "bar"
+msgstr ""''' in value
+
def test_silent_location_fallback(self):
buf = BytesIO(b'''\
#: broken_file.py
msgid "broken line number"
msgstr ""''')
catalog = pofile.read_po(buf)
- self.assertEqual(catalog['missing line number'].locations, [])
+ self.assertEqual(catalog['missing line number'].locations, [(u'broken_file.py', None)])
self.assertEqual(catalog['broken line number'].locations, [])