[Python-checkins] distutils2: emitting warnings instead of installing distributions from option

tarek.ziade python-checkins at python.org
Sun Sep 19 10:20:21 CEST 2010


tarek.ziade pushed cbcd1ec808dc to distutils2:

http://hg.python.org/distutils2/rev/cbcd1ec808dc
changeset:   605:cbcd1ec808dc
user:        Konrad Delong <konryd at gmail.com>
date:        Tue Jul 27 15:06:44 2010 +0200
summary:     emitting warnings instead of installing distributions from  option
files:       src/distutils2/command/test.py, src/distutils2/dist.py, src/distutils2/tests/test_test.py, src/distutils2/tests/with_support.py

diff --git a/src/distutils2/command/test.py b/src/distutils2/command/test.py
--- a/src/distutils2/command/test.py
+++ b/src/distutils2/command/test.py
@@ -1,6 +1,8 @@
 import os, sys
 from distutils2.core import Command 
+from distutils2._backport.pkgutil import get_distribution
 import unittest
+import warnings
 
 def get_loader_instance(dotted_path):
     if dotted_path is None:
@@ -38,6 +40,11 @@
     
     def finalize_options(self):
         self.build_lib = self.get_finalized_command("build").build_lib
+        if self.distribution.tests_require:
+            for requirement in self.distribution.tests_require:
+                if get_distribution(requirement) is None:
+                    warnings.warn("The test dependency %s is not installed which may couse the tests to fail.",
+                                  RuntimeWarning)
 
     def run(self):
         prev_cwd = os.getcwd()
diff --git a/src/distutils2/dist.py b/src/distutils2/dist.py
--- a/src/distutils2/dist.py
+++ b/src/distutils2/dist.py
@@ -109,6 +109,8 @@
          "print the list of packages/modules provided"),
         ('requires', None,
          "print the list of packages/modules required"),
+        ('tests-require', None,
+         "print the list of packages/modules required to run the test suite"),
         ('obsoletes', None,
          "print the list of packages/modules made obsolete")
         ]
diff --git a/src/distutils2/tests/test_test.py b/src/distutils2/tests/test_test.py
--- a/src/distutils2/tests/test_test.py
+++ b/src/distutils2/tests/test_test.py
@@ -4,6 +4,7 @@
 from StringIO import StringIO
 from distutils2.tests.support import unittest, TempdirManager
 from distutils2.command.test import test
+from distutils2.dist import Distribution
 import subprocess
 
 try:
@@ -83,8 +84,19 @@
     def _test_works_with_2to3(self):
         pass
 
-    def _test_downloads_test_requires(self):
-        pass
+    @unittest.skipUnless(sys.version > '2.6', 'Need >= 2.6')
+    def test_checks_requires(self):
+        from distutils2.tests.with_support import examine_warnings
+        dist = Distribution()
+        dist.tests_require = ['ohno_ohno-impossible_1234-name_stop-that!']
+        cmd = test(dist)
+        def examinator(ws):
+            cmd.ensure_finalized()
+            self.assertEqual(1, len(ws))
+            warning = ws[0]
+            self.assertIs(warning.category, RuntimeWarning)
+
+        examine_warnings(examinator)
 
 def test_suite():
     return unittest.makeSuite(TestTest)
diff --git a/src/distutils2/tests/with_support.py b/src/distutils2/tests/with_support.py
new file mode 100644
--- /dev/null
+++ b/src/distutils2/tests/with_support.py
@@ -0,0 +1,7 @@
+def examine_warnings(examinator):
+    """Given an examinator function calls it as if the code was under with
+    catch_warnings block. Useful for testing older Python versions"""
+    import warnings
+    warnings.simplefilter('default')
+    with warnings.catch_warnings(record=True) as ws:
+        examinator(ws)

--
Repository URL: http://hg.python.org/distutils2


More information about the Python-checkins mailing list