* improve error handling
- make Checks less redundant - use Checks uniformly - metadata.package.release must exist
This commit is contained in:
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 #
|
||||
|
||||
Reference in New Issue
Block a user