]> granicus.if.org Git - python/commitdiff
Merged revisions 67030-67031 via svnmerge from
authorBenjamin Peterson <benjamin@python.org>
Sun, 26 Oct 2008 20:58:53 +0000 (20:58 +0000)
committerBenjamin Peterson <benjamin@python.org>
Sun, 26 Oct 2008 20:58:53 +0000 (20:58 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r67030 | benjamin.peterson | 2008-10-26 15:21:13 -0500 (Sun, 26 Oct 2008) | 1 line

  fix __future__ imports when multiple features are given
........
  r67031 | benjamin.peterson | 2008-10-26 15:33:19 -0500 (Sun, 26 Oct 2008) | 1 line

  add forgotten test for r67030
........

Lib/test/test_future.py
Lib/test/test_future5.py [new file with mode: 0644]
Parser/parser.c

index 494f539a36a00b16e0741f14e397fb88b9545146..8846f6a8d19af630406d86a929669033e0209df6 100644 (file)
@@ -89,19 +89,23 @@ class FutureTest(unittest.TestCase):
         #       the parser hack disabled. If a new keyword is introduced in
         #       2.6, change this to refer to the new future import.
         try:
-            exec("from __future__ import division, with_statement; with = 0")
+            exec("from __future__ import print_function; print 0")
         except SyntaxError:
             pass
         else:
             self.fail("syntax error didn't occur")
 
         try:
-            exec("from __future__ import (with_statement, division); with = 0")
+            exec("from __future__ import (print_function); print 0")
         except SyntaxError:
             pass
         else:
             self.fail("syntax error didn't occur")
 
+    def test_multiple_features(self):
+        support.unload("test.test_future5")
+        from test import test_future5
+
 
 def test_main():
     support.run_unittest(FutureTest)
diff --git a/Lib/test/test_future5.py b/Lib/test/test_future5.py
new file mode 100644 (file)
index 0000000..57cbe9f
--- /dev/null
@@ -0,0 +1,21 @@
+# Check that multiple features can be enabled.
+from __future__ import unicode_literals, print_function
+
+import sys
+import unittest
+from . import support
+
+
+class TestMultipleFeatures(unittest.TestCase):
+
+    def test_unicode_literals(self):
+        self.assertTrue(isinstance("", str))
+
+    def test_print_function(self):
+        with support.captured_output("stderr") as s:
+            print("foo", file=sys.stderr)
+        self.assertEqual(s.getvalue(), "foo\n")
+
+
+def test_main():
+    support.run_unittest(TestMultipleFeatures)
index 9e115df1890d5ddd00bd4b4d8c0cb95c32240ad4..ff4ce1691b6cc33d3b456122df9316322e6a87c3 100644 (file)
@@ -210,13 +210,10 @@ future_hack(parser_state *ps)
                        char *str_ch = STR(CHILD(cch, 0));
                        if (strcmp(str_ch, FUTURE_WITH_STATEMENT) == 0) {
                                ps->p_flags |= CO_FUTURE_WITH_STATEMENT;
-                               break;
                        } else if (strcmp(str_ch, FUTURE_PRINT_FUNCTION) == 0) {
                                ps->p_flags |= CO_FUTURE_PRINT_FUNCTION;
-                               break;
                        } else if (strcmp(str_ch, FUTURE_UNICODE_LITERALS) == 0) {
                                ps->p_flags |= CO_FUTURE_UNICODE_LITERALS;
-                               break;
                        }
                }
        }