[Python-checkins] distutils2: fixed version and the two added functions, added test cases
tarek.ziade
python-checkins at python.org
Mon May 31 01:56:09 CEST 2010
tarek.ziade pushed 20ebf9c9da67 to distutils2:
http://hg.python.org/distutils2/rev/20ebf9c9da67
changeset: 177:20ebf9c9da67
user: Josip Djolonga
date: Thu May 27 20:45:49 2010 +0200
summary: fixed version and the two added functions, added test cases
files: src/distutils2/_backport/pkgutil.py, src/distutils2/_backport/tests/fake_dists/choxie-2.0.0.9.dist-info/METADATA, src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/METADATA, src/distutils2/_backport/tests/test_pkgutil.py, src/distutils2/version.py
diff --git a/src/distutils2/_backport/pkgutil.py b/src/distutils2/_backport/pkgutil.py
--- a/src/distutils2/_backport/pkgutil.py
+++ b/src/distutils2/_backport/pkgutil.py
@@ -790,7 +790,7 @@
obsoleted = dist.metadata['Obsoletes-Dist'] + dist.metadata['Obsoletes']
for obs in obsoleted:
o_components = obs.split(' ', 1)
- if len(o_components) == 1:
+ if len(o_components) == 1 or version is None:
if name == o_components[0]:
yield dist
break
@@ -826,7 +826,7 @@
if not version is None:
try:
predicate = VersionPredicate(name + ' (' + version + ')')
- except ValueErorr:
+ except ValueError:
raise DistutilsError('Invalid name or version')
for dist in get_distributions():
@@ -835,7 +835,7 @@
for p in provided:
p_components = p.split(' ', 1)
if len(p_components) == 1 or predicate is None:
- if name == p:
+ if name == p_components[0]:
yield dist
break
else:
diff --git a/src/distutils2/_backport/tests/fake_dists/choxie-2.0.0.9.dist-info/METADATA b/src/distutils2/_backport/tests/fake_dists/choxie-2.0.0.9.dist-info/METADATA
--- a/src/distutils2/_backport/tests/fake_dists/choxie-2.0.0.9.dist-info/METADATA
+++ b/src/distutils2/_backport/tests/fake_dists/choxie-2.0.0.9.dist-info/METADATA
@@ -4,3 +4,5 @@
Summary: Chocolate with a kick!
Requires-Dist: towel-stuff (0.1)
Provides-Dist: truffles (1.0)
+Obsoletes-Dist: truffles (<=0.8,>=0.5)
+Obsoletes-Dist: truffles (<=0.9,>=0.6)
diff --git a/src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/METADATA b/src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/METADATA
--- a/src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/METADATA
+++ b/src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/METADATA
@@ -1,3 +1,5 @@
Metadata-Version: 1.2
Name: towel-stuff
Version: 0.1
+Provides-Dist: truffles (1.1.2)
+Obsoletes-Dist: truffles (!=0.8,<1.0)
diff --git a/src/distutils2/_backport/tests/test_pkgutil.py b/src/distutils2/_backport/tests/test_pkgutil.py
--- a/src/distutils2/_backport/tests/test_pkgutil.py
+++ b/src/distutils2/_backport/tests/test_pkgutil.py
@@ -9,6 +9,8 @@
except ImportError:
from md5 import md5
+sys.path.append('/home/josip/dev/distutils2/src')
+
from test.test_support import run_unittest, TESTFN
import distutils2._backport.pkgutil
@@ -260,6 +262,52 @@
self.assertTrue(isinstance(dist, Distribution))
self.assertEqual(dist.name, name)
+ def test_provides(self):
+ """ Test for looking up distributions by what they provide """
+ from distutils2._backport.pkgutil import provides_distribution
+ from distutils2.errors import DistutilsError
+
+ l = [dist.name for dist in provides_distribution('truffles')]
+ self.assertListEqual(l, ['choxie', 'towel-stuff'])
+
+ l = [dist.name for dist in provides_distribution('truffles', '1.0')]
+ self.assertListEqual(l, ['choxie'])
+
+ l = [dist.name for dist in provides_distribution('truffles', '1.1.2')]
+ self.assertListEqual(l, ['towel-stuff'])
+
+ l = [dist.name for dist in provides_distribution('truffles', '1.1')]
+ self.assertListEqual(l, ['towel-stuff'])
+
+ l = [dist.name for dist in provides_distribution('truffles', '!=1.1,<=2.0')]
+ self.assertListEqual(l, ['choxie'])
+
+ l = [dist.name for dist in provides_distribution('truffles', '>1.0')]
+ self.assertListEqual(l, ['towel-stuff'])
+
+ l = [dist.name for dist in provides_distribution('truffles', '>=1.0')]
+ self.assertListEqual(l, ['choxie', 'towel-stuff'])
+
+ def test_obsoletes(self):
+ """ Test looking for distributions based on what they obsolete """
+ from distutils2._backport.pkgutil import obsoletes_distribution
+ from distutils2.errors import DistutilsError
+
+ l = [dist.name for dist in obsoletes_distribution('truffles', '1.0')]
+ self.assertListEqual(l, [])
+
+ l = [dist.name for dist in obsoletes_distribution('truffles', '0.8')]
+ self.assertListEqual(l, ['choxie'])
+
+ l = [dist.name for dist in obsoletes_distribution('truffles', '0.9.6')]
+ self.assertListEqual(l, ['choxie', 'towel-stuff'])
+
+ l = [dist.name for dist in obsoletes_distribution('truffles', '0.5.2.3')]
+ self.assertListEqual(l, ['choxie', 'towel-stuff'])
+
+ l = [dist.name for dist in obsoletes_distribution('truffles', '0.2')]
+ self.assertListEqual(l, ['towel-stuff'])
+
def test_suite():
suite = unittest2.TestSuite()
@@ -273,3 +321,16 @@
if __name__ == "__main__":
test_main()
+
+def test_suite():
+ suite = unittest2.TestSuite()
+ testcase_loader = unittest2.loader.defaultTestLoader.loadTestsFromTestCase
+ suite.addTest(testcase_loader(TestPkgUtilFunctions))
+ suite.addTest(testcase_loader(TestPkgUtilDistribution))
+ return suite
+
+def test_main():
+ run_unittest(test_suite())
+
+if __name__ == "__main__":
+ test_main()
diff --git a/src/distutils2/version.py b/src/distutils2/version.py
--- a/src/distutils2/version.py
+++ b/src/distutils2/version.py
@@ -330,10 +330,11 @@
_operators = {"<": lambda x, y: x < y,
">": lambda x, y: x > y,
- "<=": lambda x, y: x <= y,
- ">=": lambda x, y: x >= y,
- "==": lambda x, y: x == y,
- "!=": lambda x, y: x != y}
+ "<=": lambda x, y: str(x).startswith(str(y)) or x < y,
+ ">=": lambda x, y: str(x).startswith(str(y)) or x > y,
+ "==": lambda x, y: str(x).startswith(str(y)),
+ "!=": lambda x, y: not str(x).startswith(str(y)),
+ }
def __init__(self, predicate):
predicate = predicate.strip()
--
Repository URL: http://hg.python.org/distutils2
More information about the Python-checkins
mailing list