[Python-checkins] distutils2: checking all version predicates in check()

tarek.ziade python-checkins at python.org
Tue Apr 13 00:31:53 CEST 2010


tarek.ziade pushed 2f5204ed2ad6 to distutils2:

http://hg.python.org/distutils2/rev/2f5204ed2ad6
changeset:   113:2f5204ed2ad6
tag:         tip
user:        Tarek Ziade <tarek at ziade.org>
date:        Tue Apr 13 00:31:45 2010 +0200
summary:     checking all version predicates in check()
files:       src/distutils2/metadata.py, src/distutils2/tests/test_metadata.py

diff --git a/src/distutils2/metadata.py b/src/distutils2/metadata.py
--- a/src/distutils2/metadata.py
+++ b/src/distutils2/metadata.py
@@ -387,6 +387,27 @@
             warnings = self._check_rst_data(self['Description'])
         else:
             warnings = []
+
+        # checking metadata 1.2 (XXX needs to check 1.1, 1.0)
+        if self['Metadata-Version'] != '1.2':
+            return missing, warnings
+
+        for field in _345_FIELDS:
+            value = self[field]
+            if value is None:
+                continue
+
+            if field in _PREDICATE_FIELDS:
+                for v in value:
+                    if not is_valid_predicate(v.split(';')[0]):
+                        warnings.append('"%s" is not a valid predicate' % v)
+            elif field in _VERSIONS_FIELDS:
+                if not is_valid_versions(value):
+                    warnings.append('"%s" is not a valid predicate' % value)
+            elif field in _VERSION_FIELDS:
+                if not is_valid_version(value):
+                    warnings.append('"%s" is not a valid version' % value)
+
         return missing, warnings
 
     def keys(self):
diff --git a/src/distutils2/tests/test_metadata.py b/src/distutils2/tests/test_metadata.py
--- a/src/distutils2/tests/test_metadata.py
+++ b/src/distutils2/tests/test_metadata.py
@@ -192,6 +192,15 @@
                           [('one', 'http://ok')])
         self.assertEquals(metadata.version, '1.2')
 
+    def test_check(self):
+        metadata = DistributionMetadata()
+        metadata['Version'] = 'rr'
+        metadata['Requires-dist'] = ['Foo (a)']
+        missing, warnings = metadata.check()
+        self.assertEquals(missing, ['Name', 'Home-page'])
+        self.assertEquals(len(warnings), 3)
+
+
 def test_suite():
     return unittest2.makeSuite(DistributionMetadataTestCase)
 

--
Repository URL: http://hg.python.org/distutils2


More information about the Python-checkins mailing list