[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