commit:     e66ee7b35405a650c517939e503443948b660ca9
Author:     Dirkjan Ochtman <dirkjan <AT> ochtman <DOT> nl>
AuthorDate: Mon Jan 25 18:33:32 2016 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue May  3 06:25:53 2016 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=e66ee7b3

repoman/modules/.../pkgmetadata.py: Early return in metadata check code for 
readability

 pym/repoman/modules/scan/metadata/pkgmetadata.py | 190 ++++++++++++-----------
 1 file changed, 96 insertions(+), 94 deletions(-)

diff --git a/pym/repoman/modules/scan/metadata/pkgmetadata.py 
b/pym/repoman/modules/scan/metadata/pkgmetadata.py
index 5c6452a..3c1c2d0 100644
--- a/pym/repoman/modules/scan/metadata/pkgmetadata.py
+++ b/pym/repoman/modules/scan/metadata/pkgmetadata.py
@@ -83,112 +83,114 @@ class PkgMetadata(ScanBase, USEFlagChecks):
                # metadata.xml file check
                if "metadata.xml" not in checkdirlist:
                        self.qatracker.add_error("metadata.missing", xpkg + 
"/metadata.xml")
+                       self.muselist = frozenset(self.musedict)
+                       return False
+
                # metadata.xml parse check
+               metadata_bad = False
+               xml_info = {}
+               xml_parser = _XMLParser(xml_info, target=_MetadataTreeBuilder())
+
+               # read metadata.xml into memory
+               try:
+                       _metadata_xml = xml.etree.ElementTree.parse(
+                               _unicode_encode(
+                                       os.path.join(checkdir, "metadata.xml"),
+                                       encoding=_encodings['fs'], 
errors='strict'),
+                               parser=xml_parser)
+               except (ExpatError, SyntaxError, EnvironmentError) as e:
+                       metadata_bad = True
+                       self.qatracker.add_error("metadata.bad", 
"%s/metadata.xml: %s" % (xpkg, e))
+                       del e
                else:
-                       metadata_bad = False
-                       xml_info = {}
-                       xml_parser = _XMLParser(xml_info, 
target=_MetadataTreeBuilder())
-
-                       # read metadata.xml into memory
-                       try:
-                               _metadata_xml = xml.etree.ElementTree.parse(
-                                       _unicode_encode(
-                                               os.path.join(checkdir, 
"metadata.xml"),
-                                               encoding=_encodings['fs'], 
errors='strict'),
-                                       parser=xml_parser)
-                       except (ExpatError, SyntaxError, EnvironmentError) as e:
-                               metadata_bad = True
-                               self.qatracker.add_error("metadata.bad", 
"%s/metadata.xml: %s" % (xpkg, e))
-                               del e
+                       if not hasattr(xml_parser, 'parser') or \
+                               sys.hexversion < 0x2070000 or \
+                               (sys.hexversion > 0x3000000 and sys.hexversion 
< 0x3020000):
+                               # doctype is not parsed with python 2.6 or 3.1
+                               pass
                        else:
-                               if not hasattr(xml_parser, 'parser') or \
-                                       sys.hexversion < 0x2070000 or \
-                                       (sys.hexversion > 0x3000000 and 
sys.hexversion < 0x3020000):
-                                       # doctype is not parsed with python 2.6 
or 3.1
-                                       pass
+                               if "XML_DECLARATION" not in xml_info:
+                                       self.qatracker.add_error(
+                                               "metadata.bad", 
"%s/metadata.xml: "
+                                               "xml declaration is missing on 
first line, "
+                                               "should be '%s'" % (xpkg, 
metadata_xml_declaration))
                                else:
-                                       if "XML_DECLARATION" not in xml_info:
+                                       xml_version, xml_encoding, 
xml_standalone = \
+                                               xml_info["XML_DECLARATION"]
+                                       if xml_encoding is None or \
+                                               xml_encoding.upper() != 
metadata_xml_encoding:
+                                               if xml_encoding is None:
+                                                       encoding_problem = "but 
it is undefined"
+                                               else:
+                                                       encoding_problem = "not 
'%s'" % xml_encoding
                                                self.qatracker.add_error(
                                                        "metadata.bad", 
"%s/metadata.xml: "
-                                                       "xml declaration is 
missing on first line, "
-                                                       "should be '%s'" % 
(xpkg, metadata_xml_declaration))
-                                       else:
-                                               xml_version, xml_encoding, 
xml_standalone = \
-                                                       
xml_info["XML_DECLARATION"]
-                                               if xml_encoding is None or \
-                                                       xml_encoding.upper() != 
metadata_xml_encoding:
-                                                       if xml_encoding is None:
-                                                               
encoding_problem = "but it is undefined"
-                                                       else:
-                                                               
encoding_problem = "not '%s'" % xml_encoding
-                                                       
self.qatracker.add_error(
-                                                               "metadata.bad", 
"%s/metadata.xml: "
-                                                               "xml 
declaration encoding should be '%s', %s" %
-                                                               (xpkg, 
metadata_xml_encoding, encoding_problem))
-
-                                       if "DOCTYPE" not in xml_info:
-                                               metadata_bad = True
-                                               self.qatracker.add_error(
-                                                       "metadata.bad",
-                                                       "%s/metadata.xml: %s" % 
(xpkg, "DOCTYPE is missing"))
-                                       else:
-                                               doctype_name, doctype_system, 
doctype_pubid = \
-                                                       xml_info["DOCTYPE"]
-                                               if doctype_system != 
metadata_dtd_uri:
-                                                       if doctype_system is 
None:
-                                                               system_problem 
= "but it is undefined"
-                                                       else:
-                                                               system_problem 
= "not '%s'" % doctype_system
-                                                       
self.qatracker.add_error(
-                                                               "metadata.bad", 
"%s/metadata.xml: "
-                                                               "DOCTYPE: 
SYSTEM should refer to '%s', %s" %
-                                                               (xpkg, 
metadata_dtd_uri, system_problem))
+                                                       "xml declaration 
encoding should be '%s', %s" %
+                                                       (xpkg, 
metadata_xml_encoding, encoding_problem))
 
-                                               if doctype_name != 
metadata_doctype_name:
-                                                       
self.qatracker.add_error(
-                                                               "metadata.bad", 
"%s/metadata.xml: "
-                                                               "DOCTYPE: name 
should be '%s', not '%s'" %
-                                                               (xpkg, 
metadata_doctype_name, doctype_name))
-
-                               # load USE flags from metadata.xml
-                               try:
-                                       self.musedict = 
parse_metadata_use(_metadata_xml)
-                               except portage.exception.ParseError as e:
+                               if "DOCTYPE" not in xml_info:
                                        metadata_bad = True
                                        self.qatracker.add_error(
-                                               "metadata.bad", 
"%s/metadata.xml: %s" % (xpkg, e))
+                                               "metadata.bad",
+                                               "%s/metadata.xml: %s" % (xpkg, 
"DOCTYPE is missing"))
                                else:
-                                       for atom in 
chain(*self.musedict.values()):
-                                               if atom is None:
-                                                       continue
-                                               try:
-                                                       atom = Atom(atom)
-                                               except InvalidAtom as e:
+                                       doctype_name, doctype_system, 
doctype_pubid = \
+                                               xml_info["DOCTYPE"]
+                                       if doctype_system != metadata_dtd_uri:
+                                               if doctype_system is None:
+                                                       system_problem = "but 
it is undefined"
+                                               else:
+                                                       system_problem = "not 
'%s'" % doctype_system
+                                               self.qatracker.add_error(
+                                                       "metadata.bad", 
"%s/metadata.xml: "
+                                                       "DOCTYPE: SYSTEM should 
refer to '%s', %s" %
+                                                       (xpkg, 
metadata_dtd_uri, system_problem))
+
+                                       if doctype_name != 
metadata_doctype_name:
+                                               self.qatracker.add_error(
+                                                       "metadata.bad", 
"%s/metadata.xml: "
+                                                       "DOCTYPE: name should 
be '%s', not '%s'" %
+                                                       (xpkg, 
metadata_doctype_name, doctype_name))
+
+                       # load USE flags from metadata.xml
+                       try:
+                               self.musedict = 
parse_metadata_use(_metadata_xml)
+                       except portage.exception.ParseError as e:
+                               metadata_bad = True
+                               self.qatracker.add_error(
+                                       "metadata.bad", "%s/metadata.xml: %s" % 
(xpkg, e))
+                       else:
+                               for atom in chain(*self.musedict.values()):
+                                       if atom is None:
+                                               continue
+                                       try:
+                                               atom = Atom(atom)
+                                       except InvalidAtom as e:
+                                               self.qatracker.add_error(
+                                                       "metadata.bad",
+                                                       "%s/metadata.xml: 
Invalid atom: %s" % (xpkg, e))
+                                       else:
+                                               if atom.cp != xpkg:
                                                        
self.qatracker.add_error(
                                                                "metadata.bad",
-                                                               
"%s/metadata.xml: Invalid atom: %s" % (xpkg, e))
-                                               else:
-                                                       if atom.cp != xpkg:
-                                                               
self.qatracker.add_error(
-                                                                       
"metadata.bad",
-                                                                       
"%s/metadata.xml: Atom contains "
-                                                                       
"unexpected cat/pn: %s" % (xpkg, atom))
-
-                               # Run other metadata.xml checkers
-                               try:
-                                       check_metadata(_metadata_xml, 
get_herd_base(
-                                               self.repoman_settings))
-                               except (UnknownHerdsError, ) as e:
-                                       metadata_bad = True
-                                       self.qatracker.add_error(
-                                               "metadata.bad", 
"%s/metadata.xml: %s" % (xpkg, e))
-                                       del e
-
-                       # Only carry out if in package directory or check forced
-                       if not metadata_bad:
-                               if not self.xmllint.check(checkdir, repolevel):
-                                       
self.qatracker.add_error("metadata.bad", xpkg + "/metadata.xml")
-                       del metadata_bad
+                                                               
"%s/metadata.xml: Atom contains "
+                                                               "unexpected 
cat/pn: %s" % (xpkg, atom))
+
+                       # Run other metadata.xml checkers
+                       try:
+                               check_metadata(_metadata_xml, get_herd_base(
+                                       self.repoman_settings))
+                       except (UnknownHerdsError, ) as e:
+                               metadata_bad = True
+                               self.qatracker.add_error(
+                                       "metadata.bad", "%s/metadata.xml: %s" % 
(xpkg, e))
+                               del e
+
+               # Only carry out if in package directory or check forced
+               if not metadata_bad:
+                       if not self.xmllint.check(checkdir, repolevel):
+                               self.qatracker.add_error("metadata.bad", xpkg + 
"/metadata.xml")
+               del metadata_bad
                self.muselist = frozenset(self.musedict)
                return False
 

Reply via email to