[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