mirror of
				https://github.com/peeringdb/peeringdb.git
				synced 2024-05-11 05:55:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| import re
 | |
| from django.test import TestCase, Client
 | |
| from django.conf import settings
 | |
| from peeringdb_server.models import Organization, User
 | |
| from string import Formatter
 | |
| 
 | |
| 
 | |
| class LocaleFilesTest(TestCase):
 | |
|     def load_messages(self, language, filename="django.po"):
 | |
|         path = os.path.join(
 | |
|             os.path.dirname(__file__), "..", "locale", language, "LC_MESSAGES")
 | |
|         with open(os.path.join(path, filename), "r") as fh:
 | |
|             content = fh.read()
 | |
|             message_id = re.findall(r"\nmsgid (.+)\n", content)
 | |
|             message_str = re.findall(r"\nmsgstr (.+)\n", content)
 | |
|             messages = dict(zip(message_id, message_str))
 | |
|         return messages
 | |
| 
 | |
|     def test_pt(self):
 | |
|         """
 | |
|         Test portuguese locale files
 | |
|         """
 | |
|         self.assert_variables(
 | |
|             self.load_messages("en_US"), self.load_messages("pt"), "PT")
 | |
|         self.assert_variables(
 | |
|             self.load_messages("en_US", filename="djangojs.po"),
 | |
|             self.load_messages("pt", filename="djangojs.po"), "PT")
 | |
| 
 | |
|     def assert_variables(self, en_messages, other_messages, language):
 | |
|         """
 | |
|         Assert that the correct formatting variables exist
 | |
|         """
 | |
|         errors = 0
 | |
| 
 | |
|         for msgid, msgstr in en_messages.items():
 | |
| 
 | |
|             # %(name)s and %s type variables
 | |
|             variables_a = sorted(re.findall("%\([^\(]+\)s|%s", msgid))
 | |
|             variables_b = sorted(
 | |
|                 re.findall("%\([^\(]+\)s|%s", other_messages[msgid]))
 | |
|             if variables_a != variables_b:
 | |
|                 errors += 1
 | |
|                 print "{} Locale variable error at msgid {} -> {}".format(
 | |
|                     language, msgid, other_messages[msgid])
 | |
| 
 | |
|             # {name} and {} type variables
 | |
|             variables_a = sorted([
 | |
|                 fn for _, fn, _, _ in Formatter().parse(msgid)
 | |
|                 if fn is not None
 | |
|             ])
 | |
|             variables_b = ([
 | |
|                 fn for _, fn, _, _ in Formatter().parse(other_messages[msgid])
 | |
|                 if fn is not None
 | |
|             ])
 | |
|             if variables_a != variables_b:
 | |
|                 errors += 1
 | |
|                 print "{} Locale variable error at msgid {} -> {}".format(
 | |
|                     language, msgid, other_messages[msgid])
 | |
| 
 | |
|         assert errors == 0
 |