[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