def testAssignFirstIds(self): input = u'''<?xml version="1.0" encoding="UTF-8"?> <grit latest_public_release="2" source_lang_id="en-US" current_release="3" base_dir="."> <release seq="3"> <messages> <message name="IDS_TEST" desc="test"> test </message> </messages> </release> </grit>''' pseudo_file = StringIO.StringIO(input) root = grd_reader.Parse(pseudo_file, '.') root.AssignFirstIds("../../chrome/app/generated_resources.grd", None) messages_node = root.children[0].children[0] self.failUnless(isinstance(messages_node, empty.MessagesNode)) self.failUnless(messages_node.attrs["first_id"] != empty.MessagesNode().DefaultAttributes()["first_id"])
def doTestAssignFirstIds(self, first_ids_path): input = u'''<?xml version="1.0" encoding="UTF-8"?> <grit latest_public_release="2" source_lang_id="en-US" current_release="3" base_dir="." first_ids_file="%s"> <release seq="3"> <messages> <message name="IDS_TEST" desc="test"> test </message> </messages> </release> </grit>''' % first_ids_path pseudo_file = StringIO.StringIO(input) grit_root_dir = os.path.join( os.path.abspath(os.path.dirname(__file__)), '..') fake_input_path = os.path.join( grit_root_dir, "grit/testdata/chrome/app/generated_resources.grd") root = grd_reader.Parse(pseudo_file, os.path.split(fake_input_path)[0]) root.AssignFirstIds(fake_input_path, {}) messages_node = root.children[0].children[0] self.failUnless(isinstance(messages_node, empty.MessagesNode)) self.failUnless(messages_node.attrs["first_id"] != empty.MessagesNode().DefaultAttributes()["first_id"])
def Load(self, filename, params={}, output_file_name=None, extra_languages=None): self.filename_base = os.path.splitext(output_file_name or os.path.basename(filename))[0] self.orig_filename_base = os.path.splitext( os.path.basename(filename))[0] self.filedir = os.path.dirname(filename) self.resources = self.__load_resource(filename, params, extra_languages=extra_languages) #self.all_source_files.add(filename) file_list = ScanDir(self.filedir) for x in file_list: #print >>sys.stderr, "Adding", x, ":", x[0], x.startswith(".") if x.startswith("."): raise Exception(x) self.all_source_files.update(file_list) self.active_source_files.update(file_list) self["grit"] = dict(self.resources["resources"].attrs) if "outputs" in self.resources["nodes"]["internals"]: new_top = empty.OutputsNode() new_top.name = "outputs" _seq, old_top = self.resources["nodes"]["internals"]["outputs"][0] new_top.attrs = dict(old_top.attrs) for old_node in iter_gritnode(old_top, io.OutputNode): if (self.orig_filename_base != self.filename_base and old_node.attrs.get("type", None) == "data_package"): old_node.attrs["filename"] = old_node.attrs[ "filename"].replace(self.orig_filename_base + "_", self.filename_base + "_") #if self.orig_filename_base == "components_google_chrome_strings": # print >>sys.stderr, old_node.attrs["filename"] new_top.AddChild(old_node) old_node.parent = new_top self["outputs"] = new_top if "translations" in self.resources["nodes"]["internals"]: new_top = empty.TranslationsNode() new_top.name = "translations" _seq, old_top = self.resources["nodes"]["internals"][ "translations"][0] new_top.attrs = dict(old_top.attrs) for old_node in iter_gritnode(old_top, io.FileNode): new_node = io.FileNode() new_node.name = "file" new_node.attrs = dict(old_node.attrs) if "path" in new_node.attrs: self.all_source_files.add(new_node.attrs["path"].replace( "\\", "/")) new_node.attrs["path"] = os.path.join( os.getcwd(), old_node.ToRealPath(old_node.GetInputPath())) new_top.AddChild(new_node) new_node.parent = new_top self["translations"] = new_top if "release" in self.resources["nodes"]["internals"]: new_release = misc.ReleaseNode() new_release.name = "release" _seq, old_top = self.resources["nodes"]["internals"]["release"][0] new_release.attrs = dict(old_top.attrs) self["release"] = new_release if "includes" in self.resources["nodes"]["internals"]: _seq, old_top = self.resources["nodes"]["internals"]["includes"][0] if self.keep_sequence: new_top = old_top self.__remove_part_nodes(new_top) else: new_top = empty.IncludesNode() new_top.name = "includes" new_top.attrs = dict(old_top.attrs) self["includes"] = new_top self["include-files"] = {} for _seq, old_node in sorted([ x for x in self.resources["nodes"].itervalues() if isinstance(x, tuple) and isinstance(x[1], include.IncludeNode) ]): new_node = include.IncludeNode() new_node.name = "include" new_node.attrs = dict(old_node.attrs) if "file" in new_node.attrs: old_file = new_node.attrs["file"].replace("\\", "/") new_node.attrs["file"] = old_file self._AddFile(old_file) self["include-files"][new_node.attrs["name"]] = (_seq, new_node) if "messages" in self.resources["nodes"]["internals"]: _seq, old_top = self.resources["nodes"]["internals"]["messages"][0] if self.keep_sequence: new_top = old_top self.__remove_part_nodes(new_top) else: new_top = empty.MessagesNode() new_top.name = "messages" new_top.attrs = dict(old_top.attrs) self["messages"] = new_top self["message-entries"] = {} for _seq, old_node in sorted([ x for x in self.resources["nodes"].itervalues() if isinstance(x, tuple) and isinstance(x[1], message.MessageNode) ]): #if old_node.GetCliques(): # print old_node.GetCliques()[0].MessageForLanguage("no").GetPresentableContent() self["message-entries"][old_node.attrs["name"]] = (_seq, old_node) if "structures" in self.resources["nodes"]["internals"]: _seq, old_top = self.resources["nodes"]["internals"]["structures"][ 0] if self.keep_sequence: new_top = old_top self.__remove_part_nodes(new_top) else: new_top = empty.StructuresNode() new_top.name = "structures" new_top.attrs = dict(old_top.attrs) self["structures"] = new_top self["structure-entries"] = {} for _seq, old_node in sorted([ x for x in self.resources["nodes"].itervalues() if isinstance(x, tuple) and isinstance(x[1], structure.StructureNode) ]): if self.keep_sequence: new_node = old_node else: new_node = structure.StructureNode() new_node.name = "structure" new_node.attrs = dict(old_node.attrs) if "file" in new_node.attrs: old_file = new_node.attrs["file"].replace("\\", "/") new_node.attrs["file"] = old_file self._AddFile(old_file) self["structure-entries"][new_node.attrs["name"]] = (_seq, new_node)