From db4ce1824145661d6659c0d43aa0dccedc033298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Metin?= Date: Wed, 29 Jun 2005 09:19:02 +0000 Subject: [PATCH] =?UTF-8?q?-=20Package=20i=C3=A7erisinde=20de=20IsA=20bird?= =?UTF-8?q?en=20fazla=20olabilir=20(PartOf=20olamaz=20tabi:)=20-=20pisi.ly?= =?UTF-8?q?x=20i=C3=A7erisinde=20anlat=C4=B1lan=20merge=20ve=20override=20?= =?UTF-8?q?i=C5=9Flemi=20i=C3=A7in=20"lame"=20iki=20fonksiyon=20yazd=C4=B1?= =?UTF-8?q?m.=20Elini=20aya=C4=9F=C4=B1n=C4=B1=20d=C3=BCzeltiriz=20bunlar?= =?UTF-8?q?=C4=B1n=20yak=C4=B1nda...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pisi/specfile.py | 40 +++++++++++++++++++++++++++++++++++++--- tests/specfiletests.py | 23 +++++++++++++++++++++++ 2 files changed, 60 insertions(+), 3 deletions(-) diff --git a/pisi/specfile.py b/pisi/specfile.py index 41982fa9..98ae1d64 100644 --- a/pisi/specfile.py +++ b/pisi/specfile.py @@ -89,6 +89,7 @@ class SourceInfo: self.name = getNodeText(node, "Name") self.homepage = getNodeText(node, "HomePage") self.packager = PackagerInfo(getNode(node, "Packager")) + self.summary = getNodeText(node, "Summary") self.description = getNodeText(node, "Description") self.license = map(getNodeText, getAllNodes(node, "License")) self.isa = map(getNodeText, getAllNodes(node, "IsA")) @@ -144,7 +145,7 @@ class PackageInfo(object): self.name = getNodeText(node, "Name") self.summary = getNodeText(node, "Summary") self.description = getNodeText(node, "Description") - self.isa = getNodeText(node, "IsA") + self.isa = map(getNodeText, getAllNodes(node, "IsA")) self.partof = getNodeText(node, "PartOf") self.license = getNodeText(node, "License") iDepElts = getAllNodes(node, "InstallDependencies/Dependency") @@ -160,8 +161,8 @@ class PackageInfo(object): xml.addTextNodeUnder(node, "Name", self.name) xml.addTextNodeUnder(node, "Summary", self.summary) xml.addTextNodeUnder(node, "Description", self.description) - if self.isa: - xml.addTextNodeUnder(node, "IsA", self.isa) + for isa in self.isa: + xml.addTextNodeUnder(node, "IsA", isa) if self.partof: xml.addTextNodeUnder(node, "PartOf", self.partof) for dep in self.installDeps: @@ -204,7 +205,40 @@ class SpecFile(XmlFile): packageElts = self.getAllNodes("Package") self.packages = [PackageInfo(p) for p in packageElts] + self.doMerges() + self.doOverrides() + self.unlink() + + def doOverrides(self): + """Override tags from Source in Packages. Some tags in Packages + overrides the tags from Source. There is a more detailed + description in documents.""" + + for pkg in self.packages: + + if not pkg.partof: + pkg.paftof = self.source.partof + + if not pkg.license: + pkg.licence = self.source.partof + + def doMerges(self): + """Merge tags from Source in Packages. Some tags in Packages merged + with the tags from Source. There is a more detailed + description in documents.""" + + for pkg in self.packages: + + if not pkg.summary: + pkg.summary = self.source.summary + + if not pkg.description: + pkg.description = self.source.description + + if not pkg.isa: + pkg.isa = self.source.isa + def verify(self): """Verify PSPEC structures, are they what we want of them?""" diff --git a/tests/specfiletests.py b/tests/specfiletests.py index fc77da83..512cba62 100644 --- a/tests/specfiletests.py +++ b/tests/specfiletests.py @@ -38,6 +38,29 @@ class SpecFileTestCase(unittest.TestCase): if not matched: self.fail("Failed to match pathname: %s" %pn) + def testIsAPartOf(self): + # test existence in Source + if not "library:util:optparser" in self.spec.source.isa: + self.fail("Failed to match isA in Source") + if not isinstance(self.spec.source.isa, list): + self.fail("source.isa is not a list, but it must be...") + + if "rpm:archive" != self.spec.source.partof: + self.fail("Failed to match PartOf in Source") + + # test existence in Package + pkg = self.spec.packages[0] + if not "library:util:optparser" in pkg.isa: + self.fail("Failed to match isA....") + if not isinstance(pkg.isa, list): + self.fail("source.isa is not a list, but it must be...") + + print pkg.partof + if "rpm:archive" != pkg.partof: + self.fail("Failed to match PartOf") + + + def testCopy(self): util.check_dir(config.tmp_dir()) self.spec.read("samples/popt/popt.pspec")