From 8979ce167101dec95c4cf994b3652debd6c8da6c Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Fri, 17 Aug 2018 15:46:04 +1000
Subject: [PATCH] tests: Modify tests that print repr of an exception with 1
 arg.

In Python 3.7 the behaviour of repr() of an exception with one argument
changed: it no longer prints a trailing comma in the argument list.  See
https://bugs.python.org/issue30399

This patch modifies tests that rely on this behaviour to not rely on it.
And the python34.py test is updated to include a test for this behaviour
with a .exp file.
---
 tests/basics/dict1.py            | 2 +-
 tests/basics/exception1.py       | 1 -
 tests/basics/generator_return.py | 2 +-
 tests/basics/python34.py         | 6 +++++-
 tests/basics/python34.py.exp     | 1 +
 tests/basics/subclass_native3.py | 4 ++--
 tests/basics/try_as_var.py       | 2 +-
 tests/misc/sys_exc_info.py       | 2 +-
 8 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/tests/basics/dict1.py b/tests/basics/dict1.py
index 20fa9def3..0cec51173 100644
--- a/tests/basics/dict1.py
+++ b/tests/basics/dict1.py
@@ -27,7 +27,7 @@ print({1:1} == {2:1})
 try:
     {}[0]
 except KeyError as er:
-    print('KeyError', er, repr(er), er.args)
+    print('KeyError', er, er.args)
 
 # unsupported unary op
 try:
diff --git a/tests/basics/exception1.py b/tests/basics/exception1.py
index 739dd3275..d83764cb9 100644
--- a/tests/basics/exception1.py
+++ b/tests/basics/exception1.py
@@ -1,7 +1,6 @@
 print(repr(IndexError()))
 print(str(IndexError()))
 
-print(repr(IndexError("foo")))
 print(str(IndexError("foo")))
 
 a = IndexError(1, "test", [100, 200])
diff --git a/tests/basics/generator_return.py b/tests/basics/generator_return.py
index a3ac88575..5814ce837 100644
--- a/tests/basics/generator_return.py
+++ b/tests/basics/generator_return.py
@@ -7,4 +7,4 @@ print(next(g))
 try:
     print(next(g))
 except StopIteration as e:
-    print(repr(e))
+    print(type(e), e.args)
diff --git a/tests/basics/python34.py b/tests/basics/python34.py
index 36531f11c..4030db143 100644
--- a/tests/basics/python34.py
+++ b/tests/basics/python34.py
@@ -1,4 +1,4 @@
-# tests that differ when running under Python 3.4 vs 3.5/3.6
+# tests that differ when running under Python 3.4 vs 3.5/3.6/3.7
 
 try:
     exec
@@ -36,3 +36,7 @@ test_syntax("del ()") # can't delete empty tuple (in 3.6 we can)
 import sys
 print(sys.version[:3])
 print(sys.version_info[0], sys.version_info[1])
+
+# from basics/exception1.py
+# in 3.7 no comma is printed if there is only 1 arg (in 3.4-3.6 one is printed)
+print(repr(IndexError("foo")))
diff --git a/tests/basics/python34.py.exp b/tests/basics/python34.py.exp
index 590fc364f..848017130 100644
--- a/tests/basics/python34.py.exp
+++ b/tests/basics/python34.py.exp
@@ -11,3 +11,4 @@ SyntaxError
 SyntaxError
 3.4
 3 4
+IndexError('foo',)
diff --git a/tests/basics/subclass_native3.py b/tests/basics/subclass_native3.py
index bd99ab0d6..6745b77bb 100644
--- a/tests/basics/subclass_native3.py
+++ b/tests/basics/subclass_native3.py
@@ -7,12 +7,12 @@ print(repr(e))
 print(e.args)
 
 try:
-    raise MyExc("Some error")
+    raise MyExc("Some error", 1)
 except MyExc as e:
     print("Caught exception:", repr(e))
 
 try:
-    raise MyExc("Some error2")
+    raise MyExc("Some error2", 2)
 except Exception as e:
     print("Caught exception:", repr(e))
 
diff --git a/tests/basics/try_as_var.py b/tests/basics/try_as_var.py
index 0a92f1cae..4f02f9c10 100644
--- a/tests/basics/try_as_var.py
+++ b/tests/basics/try_as_var.py
@@ -1,7 +1,7 @@
 try:
     raise ValueError(534)
 except ValueError as e:
-    print(repr(e))
+    print(type(e), e.args)
 
 # Var bound in except block is automatically deleted
 try:
diff --git a/tests/misc/sys_exc_info.py b/tests/misc/sys_exc_info.py
index 4bb2c61e8..bf9438e46 100644
--- a/tests/misc/sys_exc_info.py
+++ b/tests/misc/sys_exc_info.py
@@ -9,7 +9,7 @@ def f():
     print(sys.exc_info()[0:2])
 
 try:
-    1/0
+    raise ValueError('value', 123)
 except:
     print(sys.exc_info()[0:2])
     f()
-- 
GitLab