[Python-checkins] distutils2: make sure we control only filled values

tarek.ziade python-checkins at python.org
Tue Apr 13 01:04:46 CEST 2010


tarek.ziade pushed 010d480f3066 to distutils2:

http://hg.python.org/distutils2/rev/010d480f3066
changeset:   114:010d480f3066
tag:         tip
user:        Tarek Ziade <tarek at ziade.org>
date:        Tue Apr 13 01:04:36 2010 +0200
summary:     make sure we control only filled values
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
@@ -392,21 +392,24 @@
         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)
+        def is_valid_predicates(value):
+            for v in value:
+                if not is_valid_predicate(v.split(';')[0]):
+                    return False
+            return True
+
+        for fields, controller in ((_PREDICATE_FIELDS, is_valid_predicates),
+                                  (_VERSIONS_FIELDS, is_valid_versions),
+                                  (_VERSION_FIELDS, is_valid_version)):
+            for field in fields:
+                value = self[field]
+                if value == 'UNKNOWN':
+                    continue
+
+                if not controller(value):
+                    warnings.append('Wrong value for "%s": %s' \
+                            % (field, value))
 
         return missing, warnings
 
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
@@ -198,7 +198,7 @@
         metadata['Requires-dist'] = ['Foo (a)']
         missing, warnings = metadata.check()
         self.assertEquals(missing, ['Name', 'Home-page'])
-        self.assertEquals(len(warnings), 3)
+        self.assertEquals(len(warnings), 2)
 
 
 def test_suite():

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


More information about the Python-checkins mailing list