diff options
author | Benjamin Peterson <benjamin@python.org> | 2012-08-09 00:22:57 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2012-08-09 00:22:57 (GMT) |
commit | 652e758fc41c953c5235f389e7dbb481bc915f0a (patch) | |
tree | 2c87e935f9bbfe79d391ccfd31e32bc126a4327f | |
parent | 1a1367b821ee6e724cc4d66934f93d84d8544161 (diff) | |
parent | 9d512ab97f642215c16eace1705f585f41eb4162 (diff) | |
download | cpython-652e758fc41c953c5235f389e7dbb481bc915f0a.zip cpython-652e758fc41c953c5235f389e7dbb481bc915f0a.tar.gz cpython-652e758fc41c953c5235f389e7dbb481bc915f0a.tar.bz2 |
merge heads
-rwxr-xr-x | Lib/test/regrtest.py | 8 | ||||
-rwxr-xr-x | Lib/test/test_array.py | 14 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Modules/_testcapimodule.c | 2 | ||||
-rw-r--r-- | setup.py | 21 |
5 files changed, 42 insertions, 6 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index 15d7d0b..c9ef0ff 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -440,8 +440,11 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, args, kwargs = json.loads(a) try: result = runtest(*args, **kwargs) + except KeyboardInterrupt: + result = INTERRUPTED, '' except BaseException as e: - result = INTERRUPTED, e.__class__.__name__ + traceback.print_exc() + result = CHILD_ERROR, str(e) sys.stdout.flush() print() # Force a newline (just in case) print(json.dumps(result)) @@ -684,8 +687,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, sys.stdout.flush() sys.stderr.flush() if result[0] == INTERRUPTED: - assert result[1] == 'KeyboardInterrupt' - raise KeyboardInterrupt # What else? + raise KeyboardInterrupt if result[0] == CHILD_ERROR: raise Exception("Child error on {}: {}".format(test, result[1])) test_index += 1 diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py index 9385339..eb6d77f 100755 --- a/Lib/test/test_array.py +++ b/Lib/test/test_array.py @@ -1029,9 +1029,19 @@ class UnicodeTest(StringTest): smallerexample = '\x01\u263a\x00\ufefe' biggerexample = '\x01\u263a\x01\ufeff' outside = str('\x33') - minitemsize = 4 + minitemsize = 2 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') a = array.array('u', '\xa0\xc2\u1234') @@ -1041,7 +1051,7 @@ class UnicodeTest(StringTest): a.fromunicode('\x11abc\xff\u1234') s = a.tounicode() 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' a = array.array('u', s) @@ -312,6 +312,9 @@ Tests 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 to avoid curses.unget_wch bug present in older versions of ncurses such as those shipped with OS X. diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index ca526bd..ce58651 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -1210,7 +1210,7 @@ parse_tuple_and_keywords(PyObject *self, PyObject *args) int result; 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", &sub_args, &sub_kwargs, @@ -379,6 +379,27 @@ class PyBuildExt(build_ext): def add_multiarch_paths(self): # Debian/Ubuntu multiarch support. # 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'): return opt = '' |