OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 '''Unit tests for the rc_header formatter''' | 6 '''Unit tests for the rc_header formatter''' |
7 | 7 |
8 # GRD samples exceed the 80 character limit. | 8 # GRD samples exceed the 80 character limit. |
9 # pylint: disable-msg=C6310 | 9 # pylint: disable-msg=C6310 |
10 | 10 |
11 import os | 11 import os |
12 import sys | 12 import sys |
| 13 import tempfile |
13 if __name__ == '__main__': | 14 if __name__ == '__main__': |
14 sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) | 15 sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) |
15 | 16 |
16 import StringIO | 17 import StringIO |
17 import unittest | 18 import unittest |
18 | 19 |
19 from grit import exception | 20 from grit import exception |
20 from grit import grd_reader | 21 from grit import grd_reader |
21 from grit import util | 22 from grit import util |
22 from grit.format import rc_header | 23 from grit.format import rc_header |
23 | 24 |
24 | 25 |
25 class RcHeaderFormatterUnittest(unittest.TestCase): | 26 class RcHeaderFormatterUnittest(unittest.TestCase): |
26 def FormatAll(self, grd): | 27 def FormatAll(self, grd): |
27 output = rc_header.FormatDefines(grd, grd.ShouldOutputAllResourceDefines()) | 28 output = rc_header.FormatDefines(grd, grd.ShouldOutputAllResourceDefines()) |
28 return ''.join(output).replace(' ', '') | 29 return ''.join(output).replace(' ', '') |
29 | 30 |
| 31 def _MakeTempPredeterminedIdsFile(self, content): |
| 32 tmp_dir = tempfile.gettempdir() |
| 33 predetermined_ids_file = tmp_dir + "/predetermined_ids.txt" |
| 34 with open(predetermined_ids_file, 'w') as f: |
| 35 f.write(content) |
| 36 return predetermined_ids_file |
| 37 |
30 def testFormatter(self): | 38 def testFormatter(self): |
31 grd = grd_reader.Parse(StringIO.StringIO('''<?xml version="1.0" encoding="UT
F-8"?> | 39 grd = grd_reader.Parse(StringIO.StringIO('''<?xml version="1.0" encoding="UT
F-8"?> |
32 <grit latest_public_release="2" source_lang_id="en" current_release="3" ba
se_dir="."> | 40 <grit latest_public_release="2" source_lang_id="en" current_release="3" ba
se_dir="."> |
33 <release seq="3"> | 41 <release seq="3"> |
34 <includes first_id="300" comment="bingo"> | 42 <includes first_id="300" comment="bingo"> |
35 <include type="gif" name="ID_LOGO" file="images/logo.gif" /> | 43 <include type="gif" name="ID_LOGO" file="images/logo.gif" /> |
36 </includes> | 44 </includes> |
37 <messages first_id="10000"> | 45 <messages first_id="10000"> |
38 <message name="IDS_GREETING" desc="Printed to greet the currently lo
gged in user"> | 46 <message name="IDS_GREETING" desc="Printed to greet the currently lo
gged in user"> |
39 Hello <ph name="USERNAME">%s<ex>Joi</ex></ph>, how are you doing t
oday? | 47 Hello <ph name="USERNAME">%s<ex>Joi</ex></ph>, how are you doing t
oday? |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 # Using a custom rc_header format string. | 190 # Using a custom rc_header format string. |
183 grd.AssignRcHeaderFormat( | 191 grd.AssignRcHeaderFormat( |
184 '#define {textual_id} _Pragma("{textual_id}") {numeric_id}') | 192 '#define {textual_id} _Pragma("{textual_id}") {numeric_id}') |
185 output = rc_header.FormatDefines(grd, grd.ShouldOutputAllResourceDefines(), | 193 output = rc_header.FormatDefines(grd, grd.ShouldOutputAllResourceDefines(), |
186 grd.GetRcHeaderFormat()) | 194 grd.GetRcHeaderFormat()) |
187 self.assertEqual(('#define IDR_LOGO _Pragma("IDR_LOGO") 300\n' | 195 self.assertEqual(('#define IDR_LOGO _Pragma("IDR_LOGO") 300\n' |
188 '#define IDS_GREETING _Pragma("IDS_GREETING") 10000\n' | 196 '#define IDS_GREETING _Pragma("IDS_GREETING") 10000\n' |
189 '#define IDS_BONGO _Pragma("IDS_BONGO") 10001\n'), | 197 '#define IDS_BONGO _Pragma("IDS_BONGO") 10001\n'), |
190 ''.join(output)) | 198 ''.join(output)) |
191 | 199 |
| 200 def testPredeterminedIds(self): |
| 201 predetermined_ids_file = self._MakeTempPredeterminedIdsFile( |
| 202 'IDS_BONGO 101\nID_LOGO 102\n') |
| 203 grd = grd_reader.Parse(StringIO.StringIO('''<?xml version="1.0" encoding="UT
F-8"?> |
| 204 <grit latest_public_release="2" source_lang_id="en" current_release="3" ba
se_dir="."> |
| 205 <release seq="3"> |
| 206 <includes first_id="300" comment="bingo"> |
| 207 <include type="gif" name="ID_LOGO" file="images/logo.gif" /> |
| 208 </includes> |
| 209 <messages first_id="10000"> |
| 210 <message name="IDS_GREETING" desc="Printed to greet the currently lo
gged in user"> |
| 211 Hello <ph name="USERNAME">%s<ex>Joi</ex></ph>, how are you doing t
oday? |
| 212 </message> |
| 213 <message name="IDS_BONGO"> |
| 214 Bongo! |
| 215 </message> |
| 216 </messages> |
| 217 </release> |
| 218 </grit>'''), '.', predetermined_ids_file=predetermined_ids_file) |
| 219 output = rc_header.FormatDefines(grd, grd.ShouldOutputAllResourceDefines(), |
| 220 grd.GetRcHeaderFormat()) |
| 221 self.assertEqual(('#define ID_LOGO 102\n' |
| 222 '#define IDS_GREETING 10000\n' |
| 223 '#define IDS_BONGO 101\n'), ''.join(output)) |
| 224 |
| 225 def testPredeterminedIdsOverlap(self): |
| 226 predetermined_ids_file = self._MakeTempPredeterminedIdsFile( |
| 227 'ID_LOGO 10000\n') |
| 228 grd = grd_reader.Parse(StringIO.StringIO('''<?xml version="1.0" encoding="UT
F-8"?> |
| 229 <grit latest_public_release="2" source_lang_id="en" current_release="3" ba
se_dir="."> |
| 230 <release seq="3"> |
| 231 <includes first_id="300" comment="bingo"> |
| 232 <include type="gif" name="ID_LOGO" file="images/logo.gif" /> |
| 233 </includes> |
| 234 <messages first_id="10000"> |
| 235 <message name="IDS_GREETING" desc="Printed to greet the currently lo
gged in user"> |
| 236 Hello <ph name="USERNAME">%s<ex>Joi</ex></ph>, how are you doing t
oday? |
| 237 </message> |
| 238 <message name="IDS_BONGO"> |
| 239 Bongo! |
| 240 </message> |
| 241 </messages> |
| 242 </release> |
| 243 </grit>'''), '.', predetermined_ids_file=predetermined_ids_file) |
| 244 output = rc_header.FormatDefines(grd, grd.ShouldOutputAllResourceDefines(), |
| 245 grd.GetRcHeaderFormat()) |
| 246 self.assertRaises(exception.IdRangeOverlap, self.FormatAll, grd) |
| 247 |
192 if __name__ == '__main__': | 248 if __name__ == '__main__': |
193 unittest.main() | 249 unittest.main() |
OLD | NEW |