Mercurial > babel > mirror
view babel/messages/tests/extract.py @ 92:ccb9da614597 trunk
Fixed bug introduced in [92], bad use of `lstrip()`. Added a unittest to test multiple translator comment tags.
author | palgarvio |
---|---|
date | Mon, 11 Jun 2007 23:29:45 +0000 |
parents | 5cff450b9ed5 |
children | f008662b5d6e |
line wrap: on
line source
# -*- coding: utf-8 -*- # # Copyright (C) 2007 Edgewall Software # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms # are also available at http://babel.edgewall.org/wiki/License. # # This software consists of voluntary contributions made by many # individuals. For the exact contribution history, see the revision # history and logs, available at http://babel.edgewall.org/log/. import doctest from StringIO import StringIO import unittest from babel.messages import extract class ExtractPythonTestCase(unittest.TestCase): def test_unicode_string_arg(self): buf = StringIO("msg = _(u'Foo Bar')") messages = list(extract.extract_python(buf, ('_',), [], {})) self.assertEqual('Foo Bar', messages[0][2]) def test_comment_tag(self): buf = StringIO(""" # NOTE: A translation comment msg = _(u'Foo Bar') """) messages = list(extract.extract_python(buf, ('_',), ['NOTE:'], {})) self.assertEqual('Foo Bar', messages[0][2]) self.assertEqual(['A translation comment'], messages[0][3]) def test_comment_tag_multiline(self): buf = StringIO(""" # NOTE: A translation comment # with a second line msg = _(u'Foo Bar') """) messages = list(extract.extract_python(buf, ('_',), ['NOTE:'], {})) self.assertEqual('Foo Bar', messages[0][2]) self.assertEqual(['A translation comment', 'with a second line'], messages[0][3]) def test_translator_comments_with_previous_non_translator_comments(self): buf = StringIO(""" # This shouldn't be in the output # because it didn't start with a comment tag # NOTE: A translation comment # with a second line msg = _(u'Foo Bar') """) messages = list(extract.extract_python(buf, ('_',), ['NOTE:'], {})) self.assertEqual('Foo Bar', messages[0][2]) self.assertEqual(['A translation comment', 'with a second line'], messages[0][3]) def test_comment_tags_not_on_start_of_comment(self): buf = StringIO(""" # This shouldn't be in the output # because it didn't start with a comment tag # do NOTE: this will no be a translation comment # NOTE: This one will be msg = _(u'Foo Bar') """) messages = list(extract.extract_python(buf, ('_',), ['NOTE:'], {})) self.assertEqual('Foo Bar', messages[0][2]) self.assertEqual(['This one will be'], messages[0][3]) def test_multiple_comment_tags(self): buf = StringIO(""" # NOTE1: A translation comment for tag1 # with a second line msg = _(u'Foo Bar1') # NOTE2: A translation comment for tag2 msg = _(u'Foo Bar2') """) messages = list(extract.extract_python(buf, ('_',), ['NOTE1:', 'NOTE2:'], {})) self.assertEqual('Foo Bar1', messages[0][2]) self.assertEqual(['A translation comment for tag1', 'with a second line'], messages[0][3]) self.assertEqual('Foo Bar2', messages[1][2]) self.assertEqual(['A translation comment for tag2'], messages[1][3]) def suite(): suite = unittest.TestSuite() suite.addTest(doctest.DocTestSuite(extract)) suite.addTest(unittest.makeSuite(ExtractPythonTestCase)) return suite if __name__ == '__main__': unittest.main(defaultTest='suite')