Esempio n. 1
0
    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)
Esempio n. 2
0
    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
Esempio n. 3
0
    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')))
Esempio n. 4
0
    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