summaryrefslogtreecommitdiff
path: root/src/distutils2
diff options
context:
space:
mode:
authorTarek Ziade <tarek@ziade.org>2010-04-13 01:04:36 +0200
committerTarek Ziade <tarek@ziade.org>2010-04-13 01:04:36 +0200
commit0c38acb9a69aae99de8546ffa97bcd25c229945f (patch)
tree0e593252def4027ebedae12b14b3f4f12a2bb3a0 /src/distutils2
parentb504c483860468dfe4e95b1e430316f6a614bc69 (diff)
downloaddisutils2-0c38acb9a69aae99de8546ffa97bcd25c229945f.tar.gz
make sure we control only filled values
Diffstat (limited to 'src/distutils2')
-rw-r--r--src/distutils2/metadata.py31
-rw-r--r--src/distutils2/tests/test_metadata.py2
2 files changed, 18 insertions, 15 deletions
diff --git a/src/distutils2/metadata.py b/src/distutils2/metadata.py
index a2d25fd..446f93d 100644
--- a/src/distutils2/metadata.py
+++ b/src/distutils2/metadata.py
@@ -392,21 +392,24 @@ class DistributionMetadata(object):
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
index 6c34235..3313fb5 100644
--- a/src/distutils2/tests/test_metadata.py
+++ b/src/distutils2/tests/test_metadata.py
@@ -198,7 +198,7 @@ class DistributionMetadataTestCase(unittest2.TestCase):
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():