[Python-checkins] distutils2: Began writting out tests for the get_distributions function. Currently the
tarek.ziade
python-checkins at python.org
Mon Apr 5 23:09:19 CEST 2010
tarek.ziade pushed 50ec89224cfc to distutils2:
http://hg.python.org/distutils2/rev/50ec89224cfc
changeset: 93:50ec89224cfc
user: pumazi
date: Tue Mar 30 23:11:52 2010 -0400
summary: Began writting out tests for the get_distributions function. Currently the tests fails because the Distribution instances are empty. Next step is to test the Distribution class.
files: src/distutils2/_backport/pkgutil.py, src/distutils2/_backport/tests/fake_dists/choxie-2009.dist-info/INSTALLER, src/distutils2/_backport/tests/fake_dists/choxie-2009.dist-info/METADATA, src/distutils2/_backport/tests/fake_dists/choxie-2009.dist-info/RECORD, src/distutils2/_backport/tests/fake_dists/choxie-2009.dist-info/REQUESTED, src/distutils2/_backport/tests/fake_dists/grammar-1.0a4.dist-info/INSTALLER, src/distutils2/_backport/tests/fake_dists/grammar-1.0a4.dist-info/METADATA, src/distutils2/_backport/tests/fake_dists/grammar-1.0a4.dist-info/RECORD, src/distutils2/_backport/tests/fake_dists/grammar-1.0a4.dist-info/REQUESTED, src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/INSTALLER, src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/METADATA, src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/RECORD, src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/REQUESTED, src/distutils2/_backport/tests/test_pkgutil.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
@@ -654,8 +654,10 @@
def get_distinfo_files(self, local=False):
"""
- Iterates over the RECORD entries and returns paths for each line if the path is pointing to a file located in the ``.dist-info`` directory or one of its subdirectories.
-
+ Iterates over the RECORD entries and returns paths for each line if the
+ path is pointing to a file located in the ``.dist-info`` directory or
+ one of its subdirectories.
+
:parameter local: If *local* is ``True``, each returned path is
transformed into a local absolute path. Otherwise the
raw value from RECORD is returned.
@@ -698,7 +700,14 @@
them.
:rtype: iterator of :class:`Distribution` instances"""
- pass
+ for path in sys.path:
+ realpath = os.path.realpath(path)
+ if not os.path.isdir(realpath):
+ continue
+ for dir in os.listdir(realpath):
+ if dir.endswith('.dist-info'):
+ dist = Distribution(os.path.join(realpath, dir))
+ yield dist
def get_distribution(name):
"""
diff --git a/src/distutils2/_backport/tests/fake_dists/choxie-2009.dist-info/INSTALLER b/src/distutils2/_backport/tests/fake_dists/choxie-2009.dist-info/INSTALLER
new file mode 100644
diff --git a/src/distutils2/_backport/tests/fake_dists/choxie-2009.dist-info/METADATA b/src/distutils2/_backport/tests/fake_dists/choxie-2009.dist-info/METADATA
new file mode 100644
diff --git a/src/distutils2/_backport/tests/fake_dists/choxie-2009.dist-info/RECORD b/src/distutils2/_backport/tests/fake_dists/choxie-2009.dist-info/RECORD
new file mode 100644
diff --git a/src/distutils2/_backport/tests/fake_dists/choxie-2009.dist-info/REQUESTED b/src/distutils2/_backport/tests/fake_dists/choxie-2009.dist-info/REQUESTED
new file mode 100644
diff --git a/src/distutils2/_backport/tests/fake_dists/grammar-1.0a4.dist-info/INSTALLER b/src/distutils2/_backport/tests/fake_dists/grammar-1.0a4.dist-info/INSTALLER
new file mode 100644
diff --git a/src/distutils2/_backport/tests/fake_dists/grammar-1.0a4.dist-info/METADATA b/src/distutils2/_backport/tests/fake_dists/grammar-1.0a4.dist-info/METADATA
new file mode 100644
diff --git a/src/distutils2/_backport/tests/fake_dists/grammar-1.0a4.dist-info/RECORD b/src/distutils2/_backport/tests/fake_dists/grammar-1.0a4.dist-info/RECORD
new file mode 100644
diff --git a/src/distutils2/_backport/tests/fake_dists/grammar-1.0a4.dist-info/REQUESTED b/src/distutils2/_backport/tests/fake_dists/grammar-1.0a4.dist-info/REQUESTED
new file mode 100644
diff --git a/src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/INSTALLER b/src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/INSTALLER
new file mode 100644
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
new file mode 100644
diff --git a/src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/RECORD b/src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/RECORD
new file mode 100644
diff --git a/src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/REQUESTED b/src/distutils2/_backport/tests/fake_dists/towel_stuff-0.1.dist-info/REQUESTED
new file mode 100644
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
@@ -41,6 +41,34 @@
dirname = distinfo_dirname(name, version)
self.assertEqual(dirname, standard_dirname)
+ def test_get_distributions(self):
+ """Lookup all distributions found in the ``sys.path``."""
+ # This test could potentially pick up other installed distributions
+ fake_dists = [('grammar', '1.0a4'), ('choxie', '2009'),
+ ('towel-stuff', '0.1')]
+ found_dists = []
+
+ # Setup the path environment with our fake distributions
+ current_path = os.path.abspath(os.path.dirname(__file__))
+ sys.path[0:0] = [os.path.join(current_path, 'fake_dists')]
+
+ # Import the function in question
+ from distutils2._backport.pkgutil import get_distributions, Distribution
+
+ # Verify the fake dists have been found.
+ dists = [ dist for dist in get_distributions() ]
+ for dist in dists:
+ if not isinstance(dist, Distribution):
+ self.fail("item received was not a Distribution instance: "
+ "%s" % type(dist))
+ if dist.name in dict(fake_dists).keys():
+ found_dists.append((dist.name, dist.metadata.version,))
+ # otherwise we don't care what other distributions are found
+
+ # Finally, test that we found all that we were looking for
+ self.assertListEqual(found_dists, dict(fake_dists).keys())
+
+
def test_suite():
return unittest2.makeSuite(TestPkgUtil)
--
Repository URL: http://hg.python.org/distutils2
More information about the Python-checkins
mailing list