Bump version to 0.9.6, clean up Python 3 failures
diff --git a/run b/run
index 7f18fa9..4c0e809 100755
--- a/run
+++ b/run
@@ -87,15 +87,15 @@
def run_tests(args):
python = sys.executable
- print('Testing running the typ module directly if it is in sys.path.')
+ # Test running the typ module directly if it is in sys.path.
call([python, '-m', 'typ', 'typ.tests.main_test.TestMain.test_basic'])
- print('Testing running the runner directly if nothing is in sys.path.')
+ # Testing running the runner directly if nothing is in sys.path.'
home_dir = os.environ['HOME']
call([python, path_to_runner, 'typ.tests.main_test.TestMain.test_basic'],
cwd=home_dir)
- print('Running the unit tests.')
+ # Run the remaining tests.
call([python, path_to_runner])
diff --git a/typ/runner.py b/typ/runner.py
index c2975f1..7f5aeed 100644
--- a/typ/runner.py
+++ b/typ/runner.py
@@ -407,6 +407,11 @@
add_tests(suite)
else:
add_tests(loader.loadTestsFromName(name))
+ if hasattr(loader, 'errors') and loader.errors:
+ # In Python3's version of unittest, loader failures get converted
+ # into failed test cases, rather than raising exceptions. However,
+ # the errors also get recorded so you can err out immediately.
+ raise ImportError(loader.errors)
def _run_tests(self, result_set, test_set):
h = self.host
diff --git a/typ/tests/main_test.py b/typ/tests/main_test.py
index b580973..fe2968a 100644
--- a/typ/tests/main_test.py
+++ b/typ/tests/main_test.py
@@ -141,16 +141,17 @@
LOAD_TEST_PY = """
import unittest
+
+class BaseTest(unittest.TestCase):
+ pass
+
+def method_fail(self):
+ self.fail()
+
+def method_pass(self):
+ pass
+
def load_tests(_, _2, _3):
- class BaseTest(unittest.TestCase):
- pass
-
- def method_fail(self):
- self.fail()
-
- def method_pass(self):
- pass
-
setattr(BaseTest, "test_fail", method_fail)
setattr(BaseTest, "test_pass", method_pass)
suite = unittest.TestSuite()
@@ -341,8 +342,7 @@
pass
""")}
self.check(['-l', 'foo.py'], files=files, ret=1, err='',
- rout=('Failed to load "foo.py": No module named '
- '\'?package_that_does_not_exist\'?\n'))
+ rout=('Failed to load "foo.py":'))
def test_import_failure_no_tests(self):
files = {'foo.py': 'import unittest'}
@@ -359,9 +359,7 @@
""")}
_, out, _, _ = self.check([], files=files, ret=1, err='')
self.assertIn('Failed to import test module: syn_test', out)
- self.assertIn((' syntax error\n'
- ' ^\n'
- 'SyntaxError: invalid syntax\n'), out)
+ self.assertIn('SyntaxError: invalid syntax', out)
def test_interrupt(self):
files = {'interrupt_test.py': d("""\
@@ -385,8 +383,8 @@
def load_tests(_, _2, _3):
raise ValueError('this should fail')
""")}
- self.check([], files=files, ret=1, err='',
- out=('foo_test.load_tests() failed: this should fail\n'))
+ _, out, _, _ = self.check([], files=files, ret=1, err='')
+ self.assertIn('this should fail', out)
def test_load_tests_single_worker(self):
files = LOAD_TEST_FILES
diff --git a/typ/tests/pool_test.py b/typ/tests/pool_test.py
index e4b8bd7..319c396 100644
--- a/typ/tests/pool_test.py
+++ b/typ/tests/pool_test.py
@@ -157,11 +157,11 @@
host = Host()
jobs = 2
- self.assertRaises(ValueError, make_pool,
+ self.assertRaises(Exception, make_pool,
host, jobs, _stub, unpicklable_fn, None, None)
- self.assertRaises(ValueError, make_pool,
+ self.assertRaises(Exception, make_pool,
host, jobs, _stub, None, unpicklable_fn, None)
- self.assertRaises(ValueError, make_pool,
+ self.assertRaises(Exception, make_pool,
host, jobs, _stub, None, None, unpicklable_fn)
def test_no_close(self):
diff --git a/typ/version.py b/typ/version.py
index a0cc8a3..2f9bc1b 100644
--- a/typ/version.py
+++ b/typ/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-VERSION = '0.9.5'
+VERSION = '0.9.6'