Skip to content

Commit

Permalink
Wrap unittest.main in a compatibility wrapper for Python 3.1 compatib…
Browse files Browse the repository at this point in the history
…ility. Fixes pypa#183
  • Loading branch information
jaraco committed Apr 6, 2014
1 parent d5f19d2 commit 8b74269
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 4 deletions.
6 changes: 6 additions & 0 deletions CHANGES.txt
Expand Up @@ -2,6 +2,12 @@
CHANGES
=======

-----
3.4.2
-----

* Issue #183: Fix additional regression in test command on Python 3.1.

-----
3.4.1
-----
Expand Down
11 changes: 7 additions & 4 deletions setuptools/command/test.py
@@ -1,10 +1,15 @@
import unittest
from unittest import TestLoader

from setuptools import Command
from distutils.errors import DistutilsOptionError
import sys
from pkg_resources import (resource_listdir, resource_exists,
normalize_path, working_set, _namespace_packages, add_activation_listener,
require, EntryPoint)
from unittest import TestLoader

from setuptools.py31compat import unittest_main


class ScanningLoader(TestLoader):

Expand Down Expand Up @@ -141,8 +146,6 @@ def run(self):
self.with_project_on_sys_path(self.run_tests)

def run_tests(self):
import unittest

# Purge modules under test from sys.modules. The test loader will
# re-import them from the build location. Required when 2to3 is used
# with namespace packages.
Expand All @@ -158,7 +161,7 @@ def run_tests(self):
del_modules.append(name)
list(map(sys.modules.__delitem__, del_modules))

unittest.main(
unittest_main(
None, None, [unittest.__file__]+self.test_args,
testLoader=self._resolve_as_ep(self.test_loader),
testRunner=self._resolve_as_ep(self.test_runner),
Expand Down
15 changes: 15 additions & 0 deletions setuptools/py31compat.py
@@ -1,3 +1,6 @@
import sys
import unittest

__all__ = ['get_config_vars', 'get_path']

try:
Expand Down Expand Up @@ -35,3 +38,15 @@ def __exit__(self, exctype, excvalue, exctrace):
except OSError: #removal errors are not the only possible
pass
self.name = None


unittest_main = unittest.main

_PY31 = (3, 1) <= sys.version_info[:2] < (3, 2)
if _PY31:
# on Python 3.1, translate testRunner==None to defaultTestLoader
# for compatibility with Python 2.6, 2.7, and 3.2+
def unittest_main(*args, **kwargs):
if 'testRunner' in kwargs and kwargs['testRunner'] is None:
kwargs['testRunner'] = unittest.defaultTestLoader
return unittest.main(*args, **kwargs)

0 comments on commit 8b74269

Please sign in to comment.