Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(553)

Side by Side Diff: grit/tool/rc2grd_unittest.py

Issue 1442863002: Remove contents of grit's SVN repository. (Closed) Base URL: http://grit-i18n.googlecode.com/svn/trunk/
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « grit/tool/rc2grd.py ('k') | grit/tool/resize.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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.tool.rc2grd'''
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 re
14 import StringIO
15 import unittest
16
17 from grit import grd_reader
18 from grit.node import base
19 from grit.tool import rc2grd
20
21
22 class Rc2GrdUnittest(unittest.TestCase):
23 def testPlaceholderize(self):
24 tool = rc2grd.Rc2Grd()
25 original = "Hello %s, how are you? I'm $1 years old!"
26 msg = tool.Placeholderize(original)
27 self.failUnless(msg.GetPresentableContent() == "Hello TODO_0001, how are you ? I'm TODO_0002 years old!")
28 self.failUnless(msg.GetRealContent() == original)
29
30 def testHtmlPlaceholderize(self):
31 tool = rc2grd.Rc2Grd()
32 original = "Hello <b>[USERNAME]</b>, how are you? I'm [AGE] years old!"
33 msg = tool.Placeholderize(original)
34 self.failUnless(msg.GetPresentableContent() ==
35 "Hello BEGIN_BOLDX_USERNAME_XEND_BOLD, how are you? I'm X_AG E_X years old!")
36 self.failUnless(msg.GetRealContent() == original)
37
38 def testMenuWithoutWhitespaceRegression(self):
39 # There was a problem in the original regular expression for parsing out
40 # menu sections, that would parse the following block of text as a single
41 # menu instead of two.
42 two_menus = '''
43 // Hyper context menus
44 IDR_HYPERMENU_FOLDER MENU
45 BEGIN
46 POPUP "HyperFolder"
47 BEGIN
48 MENUITEM "Open Containing Folder", IDM_OPENFOLDER
49 END
50 END
51
52 IDR_HYPERMENU_FILE MENU
53 BEGIN
54 POPUP "HyperFile"
55 BEGIN
56 MENUITEM "Open Folder", IDM_OPENFOLDER
57 END
58 END
59
60 '''
61 self.failUnless(len(rc2grd._MENU.findall(two_menus)) == 2)
62
63 def testRegressionScriptWithTranslateable(self):
64 tool = rc2grd.Rc2Grd()
65
66 # test rig
67 class DummyNode(base.Node):
68 def AddChild(self, item):
69 self.node = item
70 verbose = False
71 extra_verbose = False
72 tool.not_localizable_re = re.compile('')
73 tool.o = DummyNode()
74
75 rc_text = '''STRINGTABLE\nBEGIN\nID_BINGO "<SPAN id=hp style='BEHAVIOR: url( #default#homepage)'></SPAN><script>if (!hp.isHomePage('[$~HOMEPAGE~$]')) {docume nt.write(""<a href=\\""[$~SETHOMEPAGEURL~$]\\"" >Set As Homepage</a> - "");}</sc ript>"\nEND\n'''
76 tool.AddMessages(rc_text, tool.o)
77 self.failUnless(tool.o.node.GetCdata().find('Set As Homepage') != -1)
78
79 # TODO(joi) Improve the HTML parser to support translateables inside
80 # <script> blocks?
81 self.failUnless(tool.o.node.attrs['translateable'] == 'false')
82
83 def testRoleModel(self):
84 rc_text = ('STRINGTABLE\n'
85 'BEGIN\n'
86 ' // This should not show up\n'
87 ' IDS_BINGO "Hello %s, how are you?"\n'
88 ' // The first description\n'
89 ' IDS_BONGO "Hello %s, my name is %s, and yours?"\n'
90 ' IDS_PROGRAMS_SHUTDOWN_TEXT "Google Desktop Search needs t o close the following programs:\\n\\n$1\\nThe installation will not proceed if y ou choose to cancel."\n'
91 'END\n')
92 tool = rc2grd.Rc2Grd()
93 tool.role_model = grd_reader.Parse(StringIO.StringIO(
94 '''<?xml version="1.0" encoding="UTF-8"?>
95 <grit latest_public_release="2" source_lang_id="en-US" current_release="3" base_dir=".">
96 <release seq="3">
97 <messages>
98 <message name="IDS_BINGO">
99 Hello <ph name="USERNAME">%s<ex>Joi</ex></ph>, how are you?
100 </message>
101 <message name="IDS_BONGO" desc="The other description">
102 Hello <ph name="USERNAME">%s<ex>Jakob</ex></ph>, my name is <ph na me="ADMINNAME">%s<ex>Joi</ex></ph>, and yours?
103 </message>
104 <message name="IDS_PROGRAMS_SHUTDOWN_TEXT" desc="LIST_OF_PROGRAMS is replaced by a bulleted list of program names.">
105 Google Desktop Search needs to close the following programs:
106
107 <ph name="LIST_OF_PROGRAMS">$1<ex>Program 1, Program 2</ex></ph>
108 The installation will not proceed if you choose to cancel.
109 </message>
110 </messages>
111 </release>
112 </grit>'''), dir='.')
113
114 # test rig
115 class DummyOpts(object):
116 verbose = False
117 extra_verbose = False
118 tool.o = DummyOpts()
119 result = tool.Process(rc_text, '.\resource.rc')
120 self.failUnless(
121 result.children[2].children[2].children[0].attrs['desc'] == '')
122 self.failUnless(
123 result.children[2].children[2].children[0].children[0].attrs['name'] == 'U SERNAME')
124 self.failUnless(
125 result.children[2].children[2].children[1].attrs['desc'] == 'The other des cription')
126 self.failUnless(
127 result.children[2].children[2].children[1].attrs['meaning'] == '')
128 self.failUnless(
129 result.children[2].children[2].children[1].children[0].attrs['name'] == 'U SERNAME')
130 self.failUnless(
131 result.children[2].children[2].children[1].children[1].attrs['name'] == 'A DMINNAME')
132 self.failUnless(
133 result.children[2].children[2].children[2].children[0].attrs['name'] == 'L IST_OF_PROGRAMS')
134
135 if __name__ == '__main__':
136 unittest.main()
137
OLDNEW
« no previous file with comments | « grit/tool/rc2grd.py ('k') | grit/tool/resize.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698