merge heads

This commit is contained in:
Benjamin Peterson 2012-08-08 17:22:57 -07:00
commit 652e758fc4
5 changed files with 42 additions and 6 deletions

View File

@ -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

View File

@ -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)

View File

@ -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.

View File

@ -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,

View File

@ -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 = ''