]> git.evergreen-ils.org Git - Evergreen.git/blob - build/i18n/tests/testIDL.py
3dfaf4f802f16d932fb133c8bb7848476fd72768
[Evergreen.git] / build / i18n / tests / testIDL.py
1 #!/usr/bin/env python
2 # vim: set fileencoding=utf-8 :
3 """
4  Perform the following tests:
5   1. Generate an entityized version of an abbreviated version of fm_IDL.xml 
6   2. Generate a POT file from fm_IDL.xml
7   3. Generate an entity definition file from a PO file
8 """
9
10 import filecmp
11 import os
12 import polib
13 import re
14 import subprocess
15 import sys
16 import unittest
17
18 class TestIDLL10N(unittest.TestCase):
19
20     tmpdirs = [('tmp/')]
21     savepot = 'tmp/testsave.pot'
22     saveidlent = 'tmp/testidlent.xml'
23     saveentities = 'tmp/testentity.ent'
24     idlfile = 'data/testidl.xml'
25     idlentfile = 'data/testidlent.xml'
26     idlentities = 'data/testidl.ent'
27     testpot = 'data/testidl.pot'
28     testpo = 'data/testidl.po'
29
30     def setUp(self):
31         sys.path.append('../scripts/')
32         self.tearDown()
33         for dir in self.tmpdirs:
34             os.mkdir(dir)
35
36     def tearDown(self):
37         for dir in self.tmpdirs:
38             if os.access(dir, os.F_OK):
39                 for file in os.listdir(dir):
40                     os.remove(os.path.join(dir, file))
41                 os.rmdir(dir)
42
43     def testentityize(self):
44         """
45         Convert an en-US IDL file to an entityized version
46         """
47         devnull = open('/dev/null', 'w')
48         proc = subprocess.Popen(
49             ('python', '../scripts/fieldmapper.py', '--convert', self.idlfile,
50             '--output', self.saveidlent),
51             0, None, None, devnull, devnull).wait()
52
53         self.assertEqual(filecmp.cmp(self.saveidlent, self.idlentfile), 1)
54
55     def testsavepot(self):
56         """
57         Create a POT file from a fieldmapper IDL file
58         """
59         devnull = open('/dev/null', 'w')
60         proc = subprocess.Popen(
61             ('python', '../scripts/fieldmapper.py', '--pot', self.idlfile,
62             '--output', self.savepot),
63             0, None, None, devnull, devnull).wait()
64
65         mungepothead(self.savepot)
66         mungepothead(self.testpot)
67
68         self.assertEqual(filecmp.cmp(self.savepot, self.testpot), 1)
69
70     def testgenent(self):
71         """
72         Generate an entity definition file from a PO file
73         """
74         devnull = open('/dev/null', 'w')
75         proc = subprocess.Popen(
76             ('python', '../scripts/fieldmapper.py', '--entity', self.testpo,
77             '--output', self.saveentities),
78             0, None, None, devnull, devnull).wait()
79         self.assertEqual(filecmp.cmp(self.saveentities, self.idlentities), 1)
80
81
82 def mungepothead(file):
83     """
84     Change POT header to avoid annoying timestamp mismatch
85     """
86     lines = [] 
87     mungefile = open(file)
88     for line in mungefile:
89         line = re.sub(r'^("POT-Creation-Date: ).+"$', r'\1', line)
90         lines.append(line)
91     mungefile.close()
92
93     # Write the changed lines back out
94     mungefile = open(file, 'w')
95     for line in lines:
96         mungefile.write(line)
97     mungefile.close()
98
99 if __name__ == '__main__':
100     unittest.main()