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 'grit xmb' tool.''' | |
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 unittest | |
14 import StringIO | |
15 | |
16 from grit import grd_reader | |
17 from grit import util | |
18 from grit.tool import xmb | |
19 | |
20 | |
21 class XmbUnittest(unittest.TestCase): | |
22 def setUp(self): | |
23 self.res_tree = grd_reader.Parse( | |
24 StringIO.StringIO(u'''<?xml version="1.0" encoding="UTF-8"?> | |
25 <grit latest_public_release="2" source_lang_id="en-US" current_release="3"
base_dir="."> | |
26 <release seq="3"> | |
27 <includes> | |
28 <include type="gif" name="ID_LOGO" file="images/logo.gif" /> | |
29 </includes> | |
30 <messages> | |
31 <message name="GOOD" desc="sub" sub_variable="true"> | |
32 excellent | |
33 </message> | |
34 <message name="IDS_GREETING" desc="Printed to greet the currently lo
gged in user"> | |
35 Hello <ph name="USERNAME">%s<ex>Joi</ex></ph>, are you doing [GOOD
] today? | |
36 </message> | |
37 <message name="IDS_BONGOBINGO"> | |
38 Yibbee | |
39 </message> | |
40 </messages> | |
41 <structures> | |
42 <structure type="dialog" name="IDD_SPACYBOX" encoding="utf-16" file=
"grit/testdata/klonk.rc" /> | |
43 </structures> | |
44 </release> | |
45 </grit>'''), '.') | |
46 self.xmb_file = StringIO.StringIO() | |
47 | |
48 def testNormalOutput(self): | |
49 xmb.OutputXmb().Process(self.res_tree, self.xmb_file) | |
50 output = self.xmb_file.getvalue() | |
51 self.failUnless(output.count('Joi') and output.count('Yibbee')) | |
52 | |
53 def testLimitList(self): | |
54 limit_file = StringIO.StringIO( | |
55 'IDS_BONGOBINGO\nIDS_DOES_NOT_EXIST\nIDS_ALSO_DOES_NOT_EXIST') | |
56 xmb.OutputXmb().Process(self.res_tree, self.xmb_file, limit_file, False) | |
57 output = self.xmb_file.getvalue() | |
58 self.failUnless(output.count('Yibbee')) | |
59 self.failUnless(not output.count('Joi')) | |
60 | |
61 def testLimitGrd(self): | |
62 limit_file = StringIO.StringIO('''<?xml version="1.0" encoding="UTF-8"?> | |
63 <grit latest_public_release="2" source_lang_id="en-US" current_release="3"
base_dir="."> | |
64 <release seq="3"> | |
65 <messages> | |
66 <message name="IDS_GREETING" desc="Printed to greet the currently lo
gged in user"> | |
67 Hello <ph name="USERNAME">%s<ex>Joi</ex></ph>, how are you doing t
oday? | |
68 </message> | |
69 </messages> | |
70 </release> | |
71 </grit>''') | |
72 tool = xmb.OutputXmb() | |
73 class DummyOpts(object): | |
74 extra_verbose = False | |
75 tool.o = DummyOpts() | |
76 tool.Process(self.res_tree, self.xmb_file, limit_file, True, dir='.') | |
77 output = self.xmb_file.getvalue() | |
78 self.failUnless(output.count('Joi')) | |
79 self.failUnless(not output.count('Yibbee')) | |
80 | |
81 def testSubstitution(self): | |
82 self.res_tree.SetOutputLanguage('en') | |
83 os.chdir(util.PathFromRoot('.')) # so it can find klonk.rc | |
84 self.res_tree.RunGatherers() | |
85 xmb.OutputXmb().Process(self.res_tree, self.xmb_file) | |
86 output = self.xmb_file.getvalue() | |
87 self.failUnless(output.count( | |
88 '<ph name="GOOD_1"><ex>excellent</ex>[GOOD]</ph>')) | |
89 | |
90 def testLeadingTrailingWhitespace(self): | |
91 # Regression test for problems outputting messages with leading or | |
92 # trailing whitespace (these come in via structures only, as | |
93 # message nodes already strip and store whitespace). | |
94 self.res_tree.SetOutputLanguage('en') | |
95 os.chdir(util.PathFromRoot('.')) # so it can find klonk.rc | |
96 self.res_tree.RunGatherers() | |
97 xmb.OutputXmb().Process(self.res_tree, self.xmb_file) | |
98 output = self.xmb_file.getvalue() | |
99 self.failUnless(output.count('OK ? </msg>')) | |
100 | |
101 | |
102 if __name__ == '__main__': | |
103 unittest.main() | |
OLD | NEW |