diff 0.8.x/babel/messages/tests/extract.py @ 142:4a7af44e6695 stable

Create branch for 0.8.x releases.
author cmlenz
date Wed, 20 Jun 2007 10:09:07 +0000
parents
children bdf9b34ed1e4
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/0.8.x/babel/messages/tests/extract.py
@@ -0,0 +1,146 @@
+# -*- 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 test_two_succeeding_comments(self):
+        buf = StringIO("""
+# NOTE: one
+# NOTE: two
+msg = _(u'Foo Bar')
+""")
+        messages = list(extract.extract_python(buf, ('_',), ['NOTE:'], {}))
+        self.assertEqual('Foo Bar', messages[0][2])
+        self.assertEqual(['one', 'NOTE: two'], messages[0][3])
+        
+    def test_invalid_translator_comments(self):
+        buf = StringIO("""
+# NOTE: this shouldn't apply to any messages
+hello = 'there'
+
+msg = _(u'Foo Bar')
+""")
+        messages = list(extract.extract_python(buf, ('_',), ['NOTE:'], {}))
+        self.assertEqual('Foo Bar', messages[0][2])
+        self.assertEqual([], messages[0][3])
+
+    def test_invalid_translator_comments2(self):
+        buf = StringIO("""
+# NOTE: Hi!
+hithere = _('Hi there!')
+
+# NOTE: you should not be seeing this in the .po
+rows = [[v for v in range(0,10)] for row in range(0,10)]
+
+# this (NOTE:) should not show up either
+hello = _('Hello')
+""")
+        messages = list(extract.extract_python(buf, ('_',), ['NOTE:'], {}))
+        self.assertEqual('Hi there!', messages[0][2])
+        self.assertEqual(['Hi!'], messages[0][3])
+        self.assertEqual('Hello', messages[1][2])
+        self.assertEqual([], messages[1][3])
+
+    def test_invalid_translator_comments3(self):
+        buf = StringIO("""
+# NOTE: Hi,
+
+# there!
+hithere = _('Hi there!')
+""")
+        messages = list(extract.extract_python(buf, ('_',), ['NOTE:'], {}))
+        self.assertEqual('Hi there!', messages[0][2])
+        self.assertEqual([], messages[0][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')
Copyright (C) 2012-2017 Edgewall Software