def testGetPathNoBasedir(self): root = misc.GritNode() root.StartParsing(u'grit', None) root.HandleAttribute(u'latest_public_release', u'0') root.HandleAttribute(u'current_release', u'1') root.HandleAttribute(u'base_dir', r'..\resource') release = misc.ReleaseNode() release.StartParsing(u'release', root) release.HandleAttribute(u'seq', u'1') root.AddChild(release) includes = empty.IncludesNode() includes.StartParsing(u'includes', release) release.AddChild(includes) include_node = include.IncludeNode() include_node.StartParsing(u'include', includes) include_node.HandleAttribute(u'file', r'flugel\kugel.pdf') include_node.HandleAttribute(u'use_base_dir', u'false') includes.AddChild(include_node) root.EndParsing() last_dir = os.path.basename(os.getcwd()) expected_path = util.normpath( os.path.join(u'..', last_dir, u'flugel/kugel.pdf')) self.assertEqual(root.ToRealPath(include_node.GetInputPath()), expected_path)
def testIncludeWithReservedHeader(self): from grit import util from grit.node import misc, include, empty root = misc.GritNode() root.StartParsing(u'grit', None) root.HandleAttribute(u'latest_public_release', u'0') root.HandleAttribute(u'current_release', u'1') root.HandleAttribute(u'base_dir', ur'..\resource') release = misc.ReleaseNode() release.StartParsing(u'release', root) release.HandleAttribute(u'seq', u'1') root.AddChild(release) includes = empty.IncludesNode() includes.StartParsing(u'includes', release) release.AddChild(includes) include_node = include.IncludeNode() include_node.StartParsing(u'include', includes) include_node.HandleAttribute(u'name', u'test') include_node.HandleAttribute(u'type', u'BINDATA') include_node.HandleAttribute(u'file', u'doesntmatter') includes.AddChild(include_node) include_node.EndParsing() root.EndParsing() ReadFile_copy = util.ReadFile try: util.ReadFile = lambda a, b: include.IncludeNode.RESERVED_HEADER with self.assertRaises(exception.ReservedHeaderCollision): data_pack.Format(root) finally: util.ReadFile = ReadFile_copy
def testGetPath(self): root = misc.GritNode() root.StartParsing(u'grit', None) root.HandleAttribute(u'latest_public_release', u'0') root.HandleAttribute(u'current_release', u'1') root.HandleAttribute(u'base_dir', ur'..\resource') translations = empty.TranslationsNode() translations.StartParsing(u'translations', root) root.AddChild(translations) file_node = io.FileNode() file_node.StartParsing(u'file', translations) file_node.HandleAttribute(u'path', ur'flugel\kugel.pdf') translations.AddChild(file_node) root.EndParsing() self.failUnless(file_node.GetFilePath() == util.normpath( os.path.join(ur'../resource', ur'flugel/kugel.pdf')))
def GritNode(self): new_resource = misc.GritNode() new_resource.name = "grit" new_resource.attrs = dict(self["grit"]) if "outputs" in self: new_resource.AddChild(self["outputs"]) self["outputs"].parent = new_resource if "generated_translations" in self: new_resource.AddChild(self["generated_translations"]) self["generated_translations"].parent = new_resource if "release" in self: new_release = self["release"] new_resource.AddChild(new_release) new_release.parent = new_resource if "includes" in self and self.get("include-files", None): new_top = self["includes"] if not self.keep_sequence: for _seq, old_node in sorted( self["include-files"].itervalues()): new_node = include.IncludeNode() new_node.name = "include" new_node.attrs = dict(old_node.attrs) new_top.AddChild(new_node) new_node.parent = new_top else: self.__look_for_duplicated_nodes(new_top) new_release.AddChild(new_top) new_top.parent = new_release if "messages" in self and self.get("message-entries", None): new_top = self["messages"] if not self.keep_sequence: for _seq, old_node in sorted( self["message-entries"].itervalues()): new_top.AddChild(old_node) old_node.parent = new_top else: self.__look_for_duplicated_nodes(new_top) new_release.AddChild(new_top) new_top.parent = new_release if "structures" in self and self.get("structure-entries", None): new_top = self["structures"] if not self.keep_sequence: for _seq, old_node in sorted( self["structure-entries"].itervalues()): new_top.AddChild(old_node) old_node.parent = new_top else: self.__look_for_duplicated_nodes(new_top) new_release.AddChild(new_top) new_top.parent = new_release self.__look_for_duplicated_nodes(new_resource) return new_resource