OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 | |
6 '''Unit tests for io.FileNode''' | |
7 | |
8 import os | |
9 import sys | |
10 if __name__ == '__main__': | |
11 sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) | |
12 | |
13 import os | |
14 import StringIO | |
15 import unittest | |
16 | |
17 from grit.node import misc | |
18 from grit.node import io | |
19 from grit.node import empty | |
20 from grit import grd_reader | |
21 from grit import util | |
22 | |
23 | |
24 class FileNodeUnittest(unittest.TestCase): | |
25 def testGetPath(self): | |
26 root = misc.GritNode() | |
27 root.StartParsing(u'grit', None) | |
28 root.HandleAttribute(u'latest_public_release', u'0') | |
29 root.HandleAttribute(u'current_release', u'1') | |
30 root.HandleAttribute(u'base_dir', ur'..\resource') | |
31 translations = empty.TranslationsNode() | |
32 translations.StartParsing(u'translations', root) | |
33 root.AddChild(translations) | |
34 file_node = io.FileNode() | |
35 file_node.StartParsing(u'file', translations) | |
36 file_node.HandleAttribute(u'path', ur'flugel\kugel.pdf') | |
37 translations.AddChild(file_node) | |
38 root.EndParsing() | |
39 | |
40 self.failUnless(root.ToRealPath(file_node.GetInputPath()) == | |
41 util.normpath( | |
42 os.path.join(ur'../resource', ur'flugel/kugel.pdf'))) | |
43 | |
44 def VerifyCliquesContainEnglishAndFrenchAndNothingElse(self, cliques): | |
45 for clique in cliques: | |
46 self.failUnlessEquals(len(clique[0].clique), 2) | |
47 self.failUnless('en' in cliques[i][0].clique) | |
48 self.failUnless('fr' in cliques[i][0].clique) | |
49 | |
50 def testLoadTranslations(self): | |
51 xml = '''<?xml version="1.0" encoding="UTF-8"?> | |
52 <grit latest_public_release="2" source_lang_id="en-US" current_release="3"
base_dir="."> | |
53 <translations> | |
54 <file path="generated_resources_fr.xtb" lang="fr" /> | |
55 </translations> | |
56 <release seq="3"> | |
57 <messages> | |
58 <message name="ID_HELLO">Hello!</message> | |
59 <message name="ID_HELLO_USER">Hello <ph name="USERNAME">%s<ex>Joi</e
x></ph></message> | |
60 </messages> | |
61 </release> | |
62 </grit>''' | |
63 grd = grd_reader.Parse(StringIO.StringIO(xml), | |
64 util.PathFromRoot('grit/testdata')) | |
65 grd.SetOutputLanguage('en') | |
66 grd.RunGatherers() | |
67 self.VerifyCliquesContainEnglishAndFrenchAndNothingElse(grd.GetCliques()) | |
68 | |
69 def testIffyness(self): | |
70 grd = grd_reader.Parse(StringIO.StringIO('''<?xml version="1.0" encoding="UT
F-8"?> | |
71 <grit latest_public_release="2" source_lang_id="en-US" current_release="3"
base_dir="."> | |
72 <translations> | |
73 <if expr="lang == 'fr'"> | |
74 <file path="generated_resources_fr.xtb" lang="fr" /> | |
75 </if> | |
76 </translations> | |
77 <release seq="3"> | |
78 <messages> | |
79 <message name="ID_HELLO">Hello!</message> | |
80 <message name="ID_HELLO_USER">Hello <ph name="USERNAME">%s<ex>Joi</e
x></ph></message> | |
81 </messages> | |
82 </release> | |
83 </grit>'''), util.PathFromRoot('grit/testdata')) | |
84 grd.SetOutputLanguage('en') | |
85 grd.RunGatherers() | |
86 | |
87 grd.SetOutputLanguage('fr') | |
88 grd.RunGatherers() | |
89 | |
90 def testConditionalLoadTranslations(self): | |
91 xml = '''<?xml version="1.0" encoding="UTF-8"?> | |
92 <grit latest_public_release="2" source_lang_id="en-US" current_release="3" | |
93 base_dir="."> | |
94 <translations> | |
95 <if expr="True"> | |
96 <file path="generated_resources_fr.xtb" lang="fr" /> | |
97 </if> | |
98 <if expr="False"> | |
99 <file path="no_such_file.xtb" lang="de" /> | |
100 </if> | |
101 </translations> | |
102 <release seq="3"> | |
103 <messages> | |
104 <message name="ID_HELLO">Hello!</message> | |
105 <message name="ID_HELLO_USER">Hello <ph name="USERNAME">%s<ex> | |
106 Joi</ex></ph></message> | |
107 </messages> | |
108 </release> | |
109 </grit>''' | |
110 grd = grd_reader.Parse(StringIO.StringIO(xml), | |
111 util.PathFromRoot('grit/testdata')) | |
112 grd.SetOutputLanguage('en') | |
113 grd.RunGatherers() | |
114 self.VerifyCliquesContainEnglishAndFrenchAndNothingElse(grd.GetCliques()) | |
115 | |
116 def testConditionalOutput(self): | |
117 xml = '''<?xml version="1.0" encoding="UTF-8"?> | |
118 <grit latest_public_release="2" source_lang_id="en-US" current_release="3" | |
119 base_dir="."> | |
120 <outputs> | |
121 <output filename="resource.h" type="rc_header" /> | |
122 <output filename="en/generated_resources.rc" type="rc_all" | |
123 lang="en" /> | |
124 <if expr="pp_if('NOT_TRUE')"> | |
125 <output filename="de/generated_resources.rc" type="rc_all" | |
126 lang="de" /> | |
127 </if> | |
128 </outputs> | |
129 <release seq="3"> | |
130 <messages> | |
131 <message name="ID_HELLO">Hello!</message> | |
132 </messages> | |
133 </release> | |
134 </grit>''' | |
135 grd = grd_reader.Parse(StringIO.StringIO(xml), | |
136 util.PathFromRoot('grit/test/data'), | |
137 defines={}) | |
138 grd.SetOutputLanguage('en') | |
139 grd.RunGatherers() | |
140 outputs = grd.GetChildrenOfType(io.OutputNode) | |
141 active = set(grd.ActiveDescendants()) | |
142 self.failUnless(outputs[0] in active) | |
143 self.failUnless(outputs[0].GetType() == 'rc_header') | |
144 self.failUnless(outputs[1] in active) | |
145 self.failUnless(outputs[1].GetType() == 'rc_all') | |
146 self.failUnless(outputs[2] not in active) | |
147 self.failUnless(outputs[2].GetType() == 'rc_all') | |
148 | |
149 # Verify that 'iw' and 'no' language codes in xtb files are mapped to 'he' and | |
150 # 'nb'. | |
151 def testLangCodeMapping(self): | |
152 grd = grd_reader.Parse(StringIO.StringIO('''<?xml version="1.0" encoding="UT
F-8"?> | |
153 <grit latest_public_release="2" source_lang_id="en-US" current_release="3"
base_dir="."> | |
154 <translations> | |
155 <file path="generated_resources_no.xtb" lang="nb" /> | |
156 <file path="generated_resources_iw.xtb" lang="he" /> | |
157 </translations> | |
158 <release seq="3"> | |
159 <messages></messages> | |
160 </release> | |
161 </grit>'''), util.PathFromRoot('grit/testdata')) | |
162 grd.SetOutputLanguage('en') | |
163 grd.RunGatherers() | |
164 | |
165 | |
166 if __name__ == '__main__': | |
167 unittest.main() | |
OLD | NEW |