SF #736962, port test_future to unittest, add a bit more coverage, by Walter Dörwald
diff --git a/Lib/test/badsyntax_future3.py b/Lib/test/badsyntax_future3.py
index 166628c..f1c8417 100644
--- a/Lib/test/badsyntax_future3.py
+++ b/Lib/test/badsyntax_future3.py
@@ -7,4 +7,4 @@
         return x + y
     return g
 
-print f(2)(4)
+result = f(2)(4)
diff --git a/Lib/test/badsyntax_future4.py b/Lib/test/badsyntax_future4.py
index 805263b..b5f4c98 100644
--- a/Lib/test/badsyntax_future4.py
+++ b/Lib/test/badsyntax_future4.py
@@ -7,4 +7,4 @@
         return x + y
     return g
 
-print f(2)(4)
+result = f(2)(4)
diff --git a/Lib/test/badsyntax_future5.py b/Lib/test/badsyntax_future5.py
index 1186208..8a7e5fc 100644
--- a/Lib/test/badsyntax_future5.py
+++ b/Lib/test/badsyntax_future5.py
@@ -9,4 +9,4 @@
         return x + y
     return g
 
-print f(2)(4)
+result = f(2)(4)
diff --git a/Lib/test/badsyntax_future6.py b/Lib/test/badsyntax_future6.py
index 35c1455..5a8b55a 100644
--- a/Lib/test/badsyntax_future6.py
+++ b/Lib/test/badsyntax_future6.py
@@ -7,4 +7,4 @@
         return x + y
     return g
 
-print f(2)(4)
+result = f(2)(4)
diff --git a/Lib/test/badsyntax_future7.py b/Lib/test/badsyntax_future7.py
index 370372d..131db2c 100644
--- a/Lib/test/badsyntax_future7.py
+++ b/Lib/test/badsyntax_future7.py
@@ -8,4 +8,4 @@
         return x + y
     return g
 
-print f(2)(4)
+result = f(2)(4)
diff --git a/Lib/test/badsyntax_future8.py b/Lib/test/badsyntax_future8.py
new file mode 100644
index 0000000..c167b09
--- /dev/null
+++ b/Lib/test/badsyntax_future8.py
@@ -0,0 +1,10 @@
+"""This is a test"""
+
+from __future__ import *
+
+def f(x):
+    def g(y):
+        return x + y
+    return g
+
+print f(2)(4)
diff --git a/Lib/test/badsyntax_future9.py b/Lib/test/badsyntax_future9.py
new file mode 100644
index 0000000..cdce32a
--- /dev/null
+++ b/Lib/test/badsyntax_future9.py
@@ -0,0 +1,10 @@
+"""This is a test"""
+
+from __future__ import nested_scopes, braces
+
+def f(x):
+    def g(y):
+        return x + y
+    return g
+
+print f(2)(4)
diff --git a/Lib/test/output/test_future b/Lib/test/output/test_future
deleted file mode 100644
index 4631489..0000000
--- a/Lib/test/output/test_future
+++ /dev/null
@@ -1,8 +0,0 @@
-test_future
-6
-6
-SyntaxError badsyntax_future3 3
-SyntaxError badsyntax_future4 3
-SyntaxError badsyntax_future5 4
-SyntaxError badsyntax_future6 3
-SyntaxError badsyntax_future7 3
diff --git a/Lib/test/test_future.py b/Lib/test/test_future.py
index 12813d4..f5462e20 100644
--- a/Lib/test/test_future.py
+++ b/Lib/test/test_future.py
@@ -1,47 +1,89 @@
 # Test various flavors of legal and illegal future statements
 
-from test.test_support import unload
+import unittest
+from test import test_support
 import re
 
 rx = re.compile('\((\S+).py, line (\d+)')
 
-def check_error_location(msg):
-    mo = rx.search(msg)
-    print "SyntaxError %s %s" % mo.group(1, 2)
+def get_error_location(msg):
+    mo = rx.search(str(msg))
+    return mo.group(1, 2)
 
-# The first two tests should work
+class FutureTest(unittest.TestCase):
 
-unload('test_future1')
-from test import test_future1
+    def test_future1(self):
+        test_support.unload('test_future1')
+        from test import test_future1
+        self.assertEqual(test_future1.result, 6)
 
-unload('test_future2')
-from test import test_future2
+    def test_future2(self):
+        test_support.unload('test_future2')
+        from test import test_future2
+        self.assertEqual(test_future2.result, 6)
 
-unload('test_future3')
-from test import test_future3
+    def test_future3(self):
+        test_support.unload('test_future3')
+        from test import test_future3
 
-# The remaining tests should fail
-try:
-    from test import badsyntax_future3
-except SyntaxError, msg:
-    check_error_location(str(msg))
+    def test_badfuture3(self):
+        try:
+            from test import badsyntax_future3
+        except SyntaxError, msg:
+            self.assertEqual(get_error_location(msg), ("badsyntax_future3", '3'))
+        else:
+            self.fail("expected exception didn't occur")
 
-try:
-    from test import badsyntax_future4
-except SyntaxError, msg:
-    check_error_location(str(msg))
+    def test_badfuture4(self):
+        try:
+            from test import badsyntax_future4
+        except SyntaxError, msg:
+            self.assertEqual(get_error_location(msg), ("badsyntax_future4", '3'))
+        else:
+            self.fail("expected exception didn't occur")
 
-try:
-    from test import badsyntax_future5
-except SyntaxError, msg:
-    check_error_location(str(msg))
+    def test_badfuture5(self):
+        try:
+            from test import badsyntax_future5
+        except SyntaxError, msg:
+            self.assertEqual(get_error_location(msg), ("badsyntax_future5", '4'))
+        else:
+            self.fail("expected exception didn't occur")
 
-try:
-    from test import badsyntax_future6
-except SyntaxError, msg:
-    check_error_location(str(msg))
+    def test_badfuture6(self):
+        try:
+            from test import badsyntax_future6
+        except SyntaxError, msg:
+            self.assertEqual(get_error_location(msg), ("badsyntax_future6", '3'))
+        else:
+            self.fail("expected exception didn't occur")
 
-try:
-    from test import badsyntax_future7
-except SyntaxError, msg:
-    check_error_location(str(msg))
+    def test_badfuture7(self):
+        try:
+            from test import badsyntax_future7
+        except SyntaxError, msg:
+            self.assertEqual(get_error_location(msg), ("badsyntax_future7", '3'))
+        else:
+            self.fail("expected exception didn't occur")
+
+    def test_badfuture8(self):
+        try:
+            from test import badsyntax_future8
+        except SyntaxError, msg:
+            self.assertEqual(get_error_location(msg), ("badsyntax_future8", '3'))
+        else:
+            self.fail("expected exception didn't occur")
+
+    def test_badfuture9(self):
+        try:
+            from test import badsyntax_future9
+        except SyntaxError, msg:
+            self.assertEqual(get_error_location(msg), ("badsyntax_future9", '3'))
+        else:
+            self.fail("expected exception didn't occur")
+
+def test_main():
+    test_support.run_unittest(FutureTest)
+
+if __name__ == "__main__":
+    test_main()
diff --git a/Lib/test/test_future1.py b/Lib/test/test_future1.py
index b0d2a5c..297c2e0 100644
--- a/Lib/test/test_future1.py
+++ b/Lib/test/test_future1.py
@@ -8,4 +8,4 @@
         return x + y
     return g
 
-print f(2)(4)
+result = f(2)(4)
diff --git a/Lib/test/test_future2.py b/Lib/test/test_future2.py
index e3df0a6..79eb731 100644
--- a/Lib/test/test_future2.py
+++ b/Lib/test/test_future2.py
@@ -7,4 +7,4 @@
         return x + y
     return g
 
-print f(2)(4)
+result = f(2)(4)