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