summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2014-08-02 16:18:49 -0700
committerBenjamin Peterson <benjamin@python.org>2014-08-02 16:18:49 -0700
commit1dde0905af3bb226206095e32b43de26c7ade9df (patch)
tree39ee7e949456ae5f4197eccf9841d8cefe9c9576
parent7ae2f4118e4f3a85506c1e105f0ccd10c4ca135e (diff)
downloadsix-1dde0905af3bb226206095e32b43de26c7ade9df.tar.gz
instantiate the exception if the value is None (fixes #86)
-rw-r--r--CHANGES3
-rw-r--r--six.py2
-rw-r--r--test_six.py8
3 files changed, 13 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index 5e6d19f..698db3c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,9 @@ This file lists the changes in each six version.
Development version
-------------------
+- Issue #86: In reraise(), instantiate the exception if the second argument is
+ None.
+
- Pull request #45: Add six.moves.email_mime_nonmultipart.
- Issue #81: Add six.urllib.request.splittag mapping.
diff --git a/six.py b/six.py
index b1c063a..1cc90b0 100644
--- a/six.py
+++ b/six.py
@@ -609,6 +609,8 @@ if PY3:
def reraise(tp, value, tb=None):
+ if value is None:
+ value = tp()
if value.__traceback__ is not tb:
raise value.with_traceback(tb)
raise value
diff --git a/test_six.py b/test_six.py
index a520a83..1536276 100644
--- a/test_six.py
+++ b/test_six.py
@@ -560,6 +560,14 @@ def test_reraise():
assert tp2 is Exception
assert value2 is e
assert get_next(tb3) is tb2
+ try:
+ six.reraise(tp, None, tb)
+ except Exception:
+ tp2, value2, tb2 = sys.exc_info()
+ assert tp2 is Exception
+ assert value2 is not val
+ assert isinstance(value2, Exception)
+ assert tb is get_next(tb2)
def test_print_():