mirror of https://github.com/python/cpython
Fix input() builtin function to respect compiler flags.
(SF patch 876178, patch by mwh, unittest by perky)
This commit is contained in:
parent
96c44658b9
commit
ff83c2bacc
|
@ -931,6 +931,19 @@ class BuiltinTest(unittest.TestCase):
|
|||
self.assertEqual(input(), 'whitespace')
|
||||
sys.stdin = cStringIO.StringIO()
|
||||
self.assertRaises(EOFError, input)
|
||||
|
||||
# SF 876178: make sure input() respect future options.
|
||||
sys.stdin = cStringIO.StringIO('1/2')
|
||||
sys.stdout = cStringIO.StringIO()
|
||||
exec compile('print input()', 'test_builtin_tmp', 'exec')
|
||||
sys.stdin.seek(0, 0)
|
||||
exec compile('from __future__ import division;print input()',
|
||||
'test_builtin_tmp', 'exec')
|
||||
sys.stdin.seek(0, 0)
|
||||
exec compile('print input()', 'test_builtin_tmp', 'exec')
|
||||
self.assertEqual(sys.stdout.getvalue().splitlines(),
|
||||
['0', '0.5', '0'])
|
||||
|
||||
del sys.stdout
|
||||
self.assertRaises(RuntimeError, input, 'prompt')
|
||||
del sys.stdin
|
||||
|
|
|
@ -12,6 +12,9 @@ What's New in Python 2.4 alpha 1?
|
|||
Core and builtins
|
||||
-----------------
|
||||
|
||||
- input() builtin function now respects compiler flags such as
|
||||
__future__ statements. SF patch 876178.
|
||||
|
||||
- Removed PendingDeprecationWarning from apply(). apply() remains
|
||||
deprecated, but the nuisance warning will not be issued.
|
||||
|
||||
|
|
|
@ -979,6 +979,7 @@ builtin_input(PyObject *self, PyObject *args)
|
|||
char *str;
|
||||
PyObject *res;
|
||||
PyObject *globals, *locals;
|
||||
PyCompilerFlags cf;
|
||||
|
||||
line = builtin_raw_input(self, args);
|
||||
if (line == NULL)
|
||||
|
@ -994,7 +995,9 @@ builtin_input(PyObject *self, PyObject *args)
|
|||
PyEval_GetBuiltins()) != 0)
|
||||
return NULL;
|
||||
}
|
||||
res = PyRun_String(str, Py_eval_input, globals, locals);
|
||||
cf.cf_flags = 0;
|
||||
PyEval_MergeCompilerFlags(&cf);
|
||||
res = PyRun_StringFlags(str, Py_eval_input, globals, locals, &cf);
|
||||
Py_DECREF(line);
|
||||
return res;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue