* improve error handling

- make Checks less redundant
  - use Checks uniformly
  - metadata.package.release must exist
This commit is contained in:
Eray Özkural
2005-10-15 09:55:26 +00:00
parent 63ccd6c957
commit 4643e411e9
5 changed files with 27 additions and 21 deletions
+1
View File
@@ -75,6 +75,7 @@ class Installer:
def check_requirements(self):
"""check system requirements"""
#TODO: IS THERE ENOUGH SPACE?
# what to do if / is split into /usr, /var, etc.
pass
+10 -8
View File
@@ -49,7 +49,7 @@ class SourceInfo:
def has_errors(self):
if not self.name:
return [ _("SourceInfo should have a Name") ]
return None
return []
class PackageInfo(specfile.PackageInfo):
@@ -88,13 +88,15 @@ class PackageInfo(specfile.PackageInfo):
def has_errors(self):
# FIXME: there should be real error msgs
# and comment the logic here please, it isn't very clear -gurer
ret = (specfile.PackageInfo.has_errors(self) == None)
ret = ret and self.distribution!=None
ret = ret and self.distributionRelease!=None
ret = ret and self.architecture!=None and self.installedSize!=None
if ret:
return None
return [ _("Some error in package metadata") ]
err = Checks()
err.join(specfile.PackageInfo.has_errors(self))
err.has_tag(self.version, 'Package', 'Version')
err.has_tag(self.release, 'Package', 'Release')
err.has_tag(self.distribution, 'Package', 'Distribution')
err.has_tag(self.distributionRelease, 'Package', 'DistributionRelease')
err.has_tag(self.architecture, 'Package', 'Architecture')
err.has_tag(self.installedSize, 'Package', 'InstalledSize')
return err.list
def __str__(self):
s = specfile.PackageInfo.__str__(self)
+4 -1
View File
@@ -27,6 +27,7 @@ import pisi.archive as archive
from pisi.uri import URI
from pisi.metadata import MetaData
from pisi.files import Files
import pisi.util as util
class Error(pisi.Error):
pass
@@ -99,7 +100,9 @@ class Package:
self.metadata = MetaData()
self.metadata.read( join(outdir, ctx.const.metadata_xml) )
if self.metadata.has_errors():
errs = self.metadata.has_errors()
if errs:
util.Checks.print_errors(errs)
raise Error, _("MetaData format wrong")
self.files = Files()
+3 -3
View File
@@ -123,7 +123,7 @@ class PatchInfo:
def has_errors(self):
if not self.filename:
return [ _("Patch should have a filename string") ]
return None
return []
def __str__(self):
s = self.filename
@@ -187,7 +187,7 @@ class PathInfo:
def has_errors(self):
if not self.pathname:
return [ _("Path tag should have a name string") ]
return None
return []
def __str__(self):
s = self.pathname
@@ -209,7 +209,7 @@ class ComarProvide:
def has_errors(self):
if not self.om or not self.script:
return [ _("COMAR provide should have something :)") ]
return None
return []
def __str__(self):
s = self.script
+9 -9
View File
@@ -46,25 +46,25 @@ class FileError(Error):
class Checks:
def __init__(self):
self.list = None
self.list = []
def add(self, err):
if not self.list:
self.list = []
self.list.append(err)
def join(self, list):
if list != None:
if not self.list:
self.list = []
self.list.extend(list)
self.list.extend(list)
def has_tag(self, var, section, name):
if not var:
if not self.list:
self.list = []
self.list.append(_("%s section should have a '%s' tag") % (section, name))
def has_error():
return len(self.list)>0
def print_errors(list):
for x in list:
ctx.ui.error(x)
print_errors = staticmethod(print_errors)
#########################
# string/list functions #