]> git.evergreen-ils.org Git - Evergreen.git/blob - build/i18n/tests/testbase.py
56aeee23bb852059dee0217382efd90d63817ca1
[Evergreen.git] / build / i18n / tests / testbase.py
1 #!/usr/bin/env python
2 # vim: set fileencoding=utf-8 :
3 """
4 Test the BaseL10N class to ensure that we have a solid foundation.
5 """
6
7 import filecmp
8 import os
9 import polib
10 import sys
11 import unittest
12
13 class TestBaseL10N(unittest.TestCase):
14
15     tmpdirs = [('tmp/')]
16     savefile = ('tmp/testsave.pot')
17     canonpot = ('data/complex.pot')
18     canonpo = ('data/complex.po')
19     poentries = [{
20         'msgid': 'Using Library', 
21         'msgstr': 'Utiliser la bibliothèque',
22         'occurences': [
23             {'line': 240, 'name': 'field.aihu.org_unit.label'},
24             {'line': 257, 'name': 'field.ancihu.org_unit.label'},
25         ]},
26         {
27         'msgid': '\nSuper crazy long and repetitive message ID from hell\nSuper crazy long and repetitive message ID from hell\nSuper crazy long and repetitive message ID from hell\nSuper crazy long and repetitive message ID from hell\nSuper crazy long and repetitive message ID from hell', 
28         'msgstr': 'ôèàéç',
29         'occurences': [
30             {'line': 2475, 'name': 'field.rxbt.voided.label'},
31         ]},
32         {
33         'msgid': 'Record Source', 
34         'occurences': [
35             {'line': 524, 'name': 'field.bre.source.label'},
36         ]},
37     ]
38
39     def setUp(self):
40         sys.path.append('../scripts/')
41         self.tearDown()
42         for dir in self.tmpdirs:
43             os.mkdir(dir)
44
45     def tearDown(self):
46         for dir in self.tmpdirs:
47             if os.access(dir, os.F_OK):
48                 for file in os.listdir(dir):
49                     os.remove(os.path.join(dir, file))
50                 os.rmdir(dir)
51
52     def testload(self):
53         """
54         Load a translated PO file and compare to a generated one
55         """
56         import basel10n
57         poload = basel10n.BaseL10N()
58         poload.loadpo(self.canonpo)
59         pogen = basel10n.BaseL10N()
60         pogen.pothead('Evergreen 1.4', '1999-12-31 23:59:59 -0400')
61         pogen.pot.metadata['PO-Revision-Date'] = '2007-12-08 23:14:20 -0400'
62         pogen.pot.metadata['Last-Translator'] = ' Dan Scott <dscott@laurentian.ca>'
63         pogen.pot.metadata['Language-Team'] = 'fr-CA <LL@li.org>'
64         for msg in self.poentries:
65             poe = polib.POEntry()
66             for x in msg['occurences']:
67                 poe.occurences.append((x['line'], x['name']))
68             poe.msgid = msg['msgid']
69             if msg.has_key('msgstr'):
70                 poe.msgstr = msg['msgstr']
71             pogen.pot.append(poe)
72
73         self.assertEqual(str(poload), str(pogen))
74
75     def testsavepot(self):
76         """
77         Save a generated POT file and compare to a known good one
78         """
79         import basel10n
80         pogen = basel10n.BaseL10N()
81         pogen.pothead('Evergreen 1.4', '1999-12-31 23:59:59 -0400')
82         for msg in self.poentries:
83             poe = polib.POEntry()
84             for x in msg['occurences']:
85                 poe.occurences.append((x['line'], x['name']))
86             poe.msgid = msg['msgid']
87             pogen.pot.append(poe)
88         pogen.savepot(self.savefile)
89
90         self.assertEqual(filecmp.cmp(self.savefile, self.canonpot), 1)
91
92 if __name__ == '__main__':
93     unittest.main()