comparison babel/messages/tests/extract.py @ 569:1b801a0cb2cb trunk

Support for context-aware methods during message extraction (fixes #229, patch by David Rios)
author fschwarz
date Mon, 26 Sep 2011 20:01:01 +0000
parents ca203b2af83c
children
comparison
equal deleted inserted replaced
568:39ff5164e8ea 569:1b801a0cb2cb
382 """) 382 """)
383 messages = \ 383 messages = \
384 list(extract.extract('javascript', buf, extract.DEFAULT_KEYWORDS, 384 list(extract.extract('javascript', buf, extract.DEFAULT_KEYWORDS,
385 [], {})) 385 [], {}))
386 386
387 self.assertEqual([(1, 'simple', []), 387 self.assertEqual([(1, 'simple', [], None),
388 (2, 'simple', []), 388 (2, 'simple', [], None),
389 (3, ('s', 'p'), [])], messages) 389 (3, ('s', 'p'), [], None)], messages)
390 390
391 def test_various_calls(self): 391 def test_various_calls(self):
392 buf = StringIO("""\ 392 buf = StringIO("""\
393 msg1 = _(i18n_arg.replace(/"/, '"')) 393 msg1 = _(i18n_arg.replace(/"/, '"'))
394 msg2 = ungettext(i18n_arg.replace(/"/, '"'), multi_arg.replace(/"/, '"'), 2) 394 msg2 = ungettext(i18n_arg.replace(/"/, '"'), multi_arg.replace(/"/, '"'), 2)
402 msg10 = dngettext(domain, 'Page', 'Pages', 3) 402 msg10 = dngettext(domain, 'Page', 'Pages', 3)
403 """) 403 """)
404 messages = \ 404 messages = \
405 list(extract.extract('javascript', buf, extract.DEFAULT_KEYWORDS, [], 405 list(extract.extract('javascript', buf, extract.DEFAULT_KEYWORDS, [],
406 {})) 406 {}))
407 self.assertEqual([(5, (u'bunny', u'bunnies'), []), 407 self.assertEqual([(5, (u'bunny', u'bunnies'), [], None),
408 (8, u'Rabbit', []), 408 (8, u'Rabbit', [], None),
409 (10, (u'Page', u'Pages'), [])], messages) 409 (10, (u'Page', u'Pages'), [], None)], messages)
410 410
411 def test_message_with_line_comment(self): 411 def test_message_with_line_comment(self):
412 buf = StringIO("""\ 412 buf = StringIO("""\
413 // NOTE: hello 413 // NOTE: hello
414 msg = _('Bonjour à tous') 414 msg = _('Bonjour à tous')
479 msg10 = dngettext(domain, 'Page', 'Pages', 3) 479 msg10 = dngettext(domain, 'Page', 'Pages', 3)
480 """) 480 """)
481 messages = \ 481 messages = \
482 list(extract.extract('python', buf, extract.DEFAULT_KEYWORDS, [], 482 list(extract.extract('python', buf, extract.DEFAULT_KEYWORDS, [],
483 {})) 483 {}))
484 self.assertEqual([(5, (u'bunny', u'bunnies'), []), 484 self.assertEqual([(5, (u'bunny', u'bunnies'), [], None),
485 (8, u'Rabbit', []), 485 (8, u'Rabbit', [], None),
486 (10, (u'Page', u'Pages'), [])], messages) 486 (10, (u'Page', u'Pages'), [], None)], messages)
487 487
488 def test_invalid_extract_method(self): 488 def test_invalid_extract_method(self):
489 buf = StringIO('') 489 buf = StringIO('')
490 self.assertRaises(ValueError, list, extract.extract('spam', buf)) 490 self.assertRaises(ValueError, list, extract.extract('spam', buf))
491 491
518 self.assertEqual([], messages) 518 self.assertEqual([], messages)
519 assert 'warning: Empty msgid.' in sys.stderr.getvalue() 519 assert 'warning: Empty msgid.' in sys.stderr.getvalue()
520 finally: 520 finally:
521 sys.stderr = stderr 521 sys.stderr = stderr
522 522
523 def test_warn_if_empty_string_msgid_found_in_context_aware_extraction_method(self):
524 buf = StringIO("\nmsg = pgettext('ctxt', '')\n")
525 stderr = sys.stderr
526 sys.stderr = StringIO()
527 try:
528 messages = extract.extract('python', buf)
529 self.assertEqual([], list(messages))
530 assert 'warning: Empty msgid.' in sys.stderr.getvalue()
531 finally:
532 sys.stderr = stderr
533
523 534
524 def suite(): 535 def suite():
525 suite = unittest.TestSuite() 536 suite = unittest.TestSuite()
526 suite.addTest(doctest.DocTestSuite(extract)) 537 suite.addTest(doctest.DocTestSuite(extract))
527 suite.addTest(unittest.makeSuite(ExtractPythonTestCase)) 538 suite.addTest(unittest.makeSuite(ExtractPythonTestCase))
Copyright (C) 2012-2017 Edgewall Software