mirror of https://github.com/python/cpython
merge heads
This commit is contained in:
commit
652e758fc4
|
@ -440,8 +440,11 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
|
||||||
args, kwargs = json.loads(a)
|
args, kwargs = json.loads(a)
|
||||||
try:
|
try:
|
||||||
result = runtest(*args, **kwargs)
|
result = runtest(*args, **kwargs)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
result = INTERRUPTED, ''
|
||||||
except BaseException as e:
|
except BaseException as e:
|
||||||
result = INTERRUPTED, e.__class__.__name__
|
traceback.print_exc()
|
||||||
|
result = CHILD_ERROR, str(e)
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
print() # Force a newline (just in case)
|
print() # Force a newline (just in case)
|
||||||
print(json.dumps(result))
|
print(json.dumps(result))
|
||||||
|
@ -684,8 +687,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
sys.stderr.flush()
|
sys.stderr.flush()
|
||||||
if result[0] == INTERRUPTED:
|
if result[0] == INTERRUPTED:
|
||||||
assert result[1] == 'KeyboardInterrupt'
|
raise KeyboardInterrupt
|
||||||
raise KeyboardInterrupt # What else?
|
|
||||||
if result[0] == CHILD_ERROR:
|
if result[0] == CHILD_ERROR:
|
||||||
raise Exception("Child error on {}: {}".format(test, result[1]))
|
raise Exception("Child error on {}: {}".format(test, result[1]))
|
||||||
test_index += 1
|
test_index += 1
|
||||||
|
|
|
@ -1029,9 +1029,19 @@ class UnicodeTest(StringTest):
|
||||||
smallerexample = '\x01\u263a\x00\ufefe'
|
smallerexample = '\x01\u263a\x00\ufefe'
|
||||||
biggerexample = '\x01\u263a\x01\ufeff'
|
biggerexample = '\x01\u263a\x01\ufeff'
|
||||||
outside = str('\x33')
|
outside = str('\x33')
|
||||||
minitemsize = 4
|
minitemsize = 2
|
||||||
|
|
||||||
def test_unicode(self):
|
def test_unicode(self):
|
||||||
|
try:
|
||||||
|
import ctypes
|
||||||
|
sizeof_wchar = ctypes.sizeof(ctypes.c_wchar)
|
||||||
|
except ImportError:
|
||||||
|
import sys
|
||||||
|
if sys.platform == 'win32':
|
||||||
|
sizeof_wchar = 2
|
||||||
|
else:
|
||||||
|
sizeof_wchar = 4
|
||||||
|
|
||||||
self.assertRaises(TypeError, array.array, 'b', 'foo')
|
self.assertRaises(TypeError, array.array, 'b', 'foo')
|
||||||
|
|
||||||
a = array.array('u', '\xa0\xc2\u1234')
|
a = array.array('u', '\xa0\xc2\u1234')
|
||||||
|
@ -1041,7 +1051,7 @@ class UnicodeTest(StringTest):
|
||||||
a.fromunicode('\x11abc\xff\u1234')
|
a.fromunicode('\x11abc\xff\u1234')
|
||||||
s = a.tounicode()
|
s = a.tounicode()
|
||||||
self.assertEqual(s, '\xa0\xc2\u1234 \x11abc\xff\u1234')
|
self.assertEqual(s, '\xa0\xc2\u1234 \x11abc\xff\u1234')
|
||||||
self.assertEqual(a.itemsize, 4)
|
self.assertEqual(a.itemsize, sizeof_wchar)
|
||||||
|
|
||||||
s = '\x00="\'a\\b\x80\xff\u0000\u0001\u1234'
|
s = '\x00="\'a\\b\x80\xff\u0000\u0001\u1234'
|
||||||
a = array.array('u', s)
|
a = array.array('u', s)
|
||||||
|
|
|
@ -312,6 +312,9 @@ Tests
|
||||||
Build
|
Build
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
- Issue #11715: Fix multiarch detection without having Debian development
|
||||||
|
tools (dpkg-dev) installed.
|
||||||
|
|
||||||
- Issue #15037: Build OS X installers with local copy of ncurses 5.9 libraries
|
- Issue #15037: Build OS X installers with local copy of ncurses 5.9 libraries
|
||||||
to avoid curses.unget_wch bug present in older versions of ncurses such as
|
to avoid curses.unget_wch bug present in older versions of ncurses such as
|
||||||
those shipped with OS X.
|
those shipped with OS X.
|
||||||
|
|
|
@ -1210,7 +1210,7 @@ parse_tuple_and_keywords(PyObject *self, PyObject *args)
|
||||||
int result;
|
int result;
|
||||||
PyObject *return_value = NULL;
|
PyObject *return_value = NULL;
|
||||||
|
|
||||||
char buffers[32][8];
|
double buffers[8][4]; /* double ensures alignment where necessary */
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, "OOyO:parse_tuple_and_keywords",
|
if (!PyArg_ParseTuple(args, "OOyO:parse_tuple_and_keywords",
|
||||||
&sub_args, &sub_kwargs,
|
&sub_args, &sub_kwargs,
|
||||||
|
|
21
setup.py
21
setup.py
|
@ -379,6 +379,27 @@ class PyBuildExt(build_ext):
|
||||||
def add_multiarch_paths(self):
|
def add_multiarch_paths(self):
|
||||||
# Debian/Ubuntu multiarch support.
|
# Debian/Ubuntu multiarch support.
|
||||||
# https://wiki.ubuntu.com/MultiarchSpec
|
# https://wiki.ubuntu.com/MultiarchSpec
|
||||||
|
cc = sysconfig.get_config_var('CC')
|
||||||
|
tmpfile = os.path.join(self.build_temp, 'multiarch')
|
||||||
|
if not os.path.exists(self.build_temp):
|
||||||
|
os.makedirs(self.build_temp)
|
||||||
|
ret = os.system(
|
||||||
|
'%s -print-multiarch > %s 2> /dev/null' % (cc, tmpfile))
|
||||||
|
multiarch_path_component = ''
|
||||||
|
try:
|
||||||
|
if ret >> 8 == 0:
|
||||||
|
with open(tmpfile) as fp:
|
||||||
|
multiarch_path_component = fp.readline().strip()
|
||||||
|
finally:
|
||||||
|
os.unlink(tmpfile)
|
||||||
|
|
||||||
|
if multiarch_path_component != '':
|
||||||
|
add_dir_to_list(self.compiler.library_dirs,
|
||||||
|
'/usr/lib/' + multiarch_path_component)
|
||||||
|
add_dir_to_list(self.compiler.include_dirs,
|
||||||
|
'/usr/include/' + multiarch_path_component)
|
||||||
|
return
|
||||||
|
|
||||||
if not find_executable('dpkg-architecture'):
|
if not find_executable('dpkg-architecture'):
|
||||||
return
|
return
|
||||||
opt = ''
|
opt = ''
|
||||||
|
|
Loading…
Reference in New Issue