Victor Stinner [Fri, 24 Jun 2011 18:52:27 +0000 (20:52 +0200)]
Issue #12392: fix thread initialization on FreeBSD 6
On FreeBSD6, pthread_kill() doesn't work on the main thread before the creation
of the first thread. Create therefore a dummy thread (no-op) a startup to
initialize the pthread library.
Add also a test for this use case, test written by Charles-François Natali.
Victor Stinner [Thu, 23 Jun 2011 09:57:56 +0000 (11:57 +0200)]
Issue #11223: skip test_lock_acquire_interruption() on FreeBSD6
Locks are implemented using a mutex and a condition variable of the pthread
library on FreeBSD6. POSIX condition variables cannot be interrupted by signals
(see pthread_cond_wait manual page).
Victor Stinner [Wed, 22 Jun 2011 19:29:07 +0000 (21:29 +0200)]
(merge 3.2) Issue #12383: fix test_empty_env() of subprocess on Mac OS X
Mac OS X adds __CF_USER_TEXT_ENCODING variable to an empty environment. Fix
also the test on the Py_ENABLE_SHARED config varible: test that the variable is
present, don't check it's value.
Victor Stinner [Wed, 22 Jun 2011 19:28:43 +0000 (21:28 +0200)]
Issue #12383: fix test_empty_env() of subprocess on Mac OS X
Mac OS X adds __CF_USER_TEXT_ENCODING variable to an empty environment. Fix
also the test on the Py_ENABLE_SHARED config varible: test that the variable is
present, don't check it's value.
Victor Stinner [Mon, 20 Jun 2011 21:28:09 +0000 (23:28 +0200)]
Close #12363: fix a race condition in siginterrupt() tests
The previous tests used time.sleep() to synchronize two processes. If the host
was too slow, the test could fail.
The new tests only use one process, but they use a subprocess to:
- have only one thread
- have a timeout on the blocking read (select cannot be used in the test,
select always fail with EINTR, the kernel doesn't restart it)
- not touch signal handling of the parent process
Victor Stinner [Mon, 20 Jun 2011 12:59:53 +0000 (14:59 +0200)]
Issue #6697: _lsprof: normalizeUserObj() doesn't encode/decode (UTF-8) the
module name anymore, only work on unicode strings. Therefore it doesn't
truncate module names with embedded NUL characters, or fail if the module name
contains surrogate characters (UTF-8 encoder fails on a surrogate character).
Victor Stinner [Mon, 20 Jun 2011 12:45:54 +0000 (14:45 +0200)]
calculate_path() decodes the PYTHONPATH environment variable from the locale
encoding using _Py_char2wchar() instead of mbstowcs() to store undecodable
bytes as surrogates characters (PEP 383) instead of ignoring silently
the PYTHONPATH variable.
R David Murray [Sun, 19 Jun 2011 00:21:09 +0000 (20:21 -0400)]
#6771: Move wrapper function into __init__ and eliminate wrapper module
Andrew agreed in the issue that eliminating the module file made sense.
Wrapper has only been exposed as a function, and so there is no (easy)
way to access the wrapper module, which in any case only had the one
function in it. Since __init__ already contains a couple wrapper
functions, it seems to make sense to just move wrapper there instead of
importing it from a single function module.
R David Murray [Sat, 18 Jun 2011 16:57:28 +0000 (12:57 -0400)]
#11584: make Header and make_header handle binary unknown-8bit input
Analogous to the decode_header fix, this fix makes Header.append and
make_header correctly handle the unknown-8bit charset introduced by email5.1,
when the input to them is binary strings. Previous to this fix the
make_header(decode_header(x)) == x invariant was broken in the face of the
unknown-8bit charset.
R David Murray [Fri, 17 Jun 2011 16:54:56 +0000 (12:54 -0400)]
#11767: use context manager to close file in __getitem__ to prevent FD leak
All of the other methods in mailbox that create message objects take care to
close the file descriptors they use, so it seems to make sense to have
__getitem__ do so as well.
Éric Araujo [Fri, 17 Jun 2011 13:43:18 +0000 (15:43 +0200)]
Packaging tests: don’t let an internal cache grow indefinitely.
Victor Stinner diagnosed on #12167 that some reference leaks came from
util._path_created, a set used for caching; there are two tests that
cause additions to this set, so now they clear it in tearDown, avoiding
17 refleaks. (My tests show that it’s necessary to clear the set in
only one test, clearing it in both does not stop more refleaks, but
there’s no harm in doing it.)