| 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 |