Victor Stinner [Fri, 25 Mar 2016 22:02:54 +0000 (23:02 +0100)]
Null merge 3.5
Victor Stinner [Fri, 25 Mar 2016 21:51:17 +0000 (22:51 +0100)]
Fix test_os.test_symlink(): remove create symlink
Alexander Belopolsky [Fri, 25 Mar 2016 19:46:55 +0000 (15:46 -0400)]
merge
Alexander Belopolsky [Fri, 25 Mar 2016 19:42:59 +0000 (15:42 -0400)]
Issue#26616:Fixed a bug in datetime.astimezone() method.
Victor Stinner [Fri, 25 Mar 2016 18:13:06 +0000 (19:13 +0100)]
Backed out changeset
245a16f33c4b
Serhiy asked me to review it.
Victor Stinner [Fri, 25 Mar 2016 16:36:33 +0000 (17:36 +0100)]
Rework libregrtest.save_env
* Replace get/restore methods with a Resource class and Resource subclasses
* Create ModuleAttr, ModuleAttrList and ModuleAttrDict helper classes
* Use __subclasses__() to get resource classes instead of using an hardcoded
list (2 shutil resources were missinged in the list!)
* Don't define MultiprocessingProcessDangling resource if the multiprocessing
module is missing
* Nicer diff for dictionaries. Useful for the big os.environ dict
* Reorder code to group resources
Victor Stinner [Fri, 25 Mar 2016 14:12:08 +0000 (15:12 +0100)]
changeset: 100749:
0b61b2d28a07
tag: tip
parent: 100742:
ebae81b31cf6
user: Victor Stinner <victor.stinner@gmail.com>
date: Fri Mar 25 15:03:34 2016 +0100
files: Lib/test/test_os.py
description:
test_os: Win32ErrorTests checks if file exists
Don't use os.path.exists() since it ignores *any* OSError.
Victor Stinner [Fri, 25 Mar 2016 11:50:54 +0000 (12:50 +0100)]
Merge 3.5
Victor Stinner [Fri, 25 Mar 2016 11:50:36 +0000 (12:50 +0100)]
doctest: fix _module_relative_path() error message
Write the module name rather than <module> in the error message, if module has
no __file__ attribute (ex: package).
Victor Stinner [Fri, 25 Mar 2016 11:48:17 +0000 (12:48 +0100)]
test_doctest: remove unused imports
Victor Stinner [Fri, 25 Mar 2016 11:30:40 +0000 (12:30 +0100)]
test_venv: enhance test_devnull()
Victor Stinner [Fri, 25 Mar 2016 11:27:02 +0000 (12:27 +0100)]
Skip test_venv.test_with_pip() if ctypes miss
Issue #26610.
Victor Stinner [Fri, 25 Mar 2016 10:54:47 +0000 (11:54 +0100)]
Modernize Python/makeopcodetargets.py
* Simply use "import opcode" to import the opcode module instead of tricks
using the imp module
* Use context manager for the output file
* Move code into a new main() function
* Replace assert with a regular if to check the number of arguments
* Import modules at top level
Victor Stinner [Fri, 25 Mar 2016 09:28:23 +0000 (10:28 +0100)]
test_os: Win32ErrorTests now ensures that TESTFN doesn't exist
Replace also other open(filename, "w") with open(filename, "x") to fail if a
previous test forgot to remove filename.
Raymond Hettinger [Fri, 25 Mar 2016 09:29:59 +0000 (02:29 -0700)]
Speed-up construction of empty sets by approx 12-14%.
Victor Stinner [Fri, 25 Mar 2016 09:03:49 +0000 (10:03 +0100)]
Null merge 3.5
Changes were backported (transplated) from default to 3.5.
Victor Stinner [Fri, 25 Mar 2016 08:51:14 +0000 (09:51 +0100)]
Issue #21925: Fix test_warnings for release mode
Use -Wd comment line option to log the ResourceWarning.
Victor Stinner [Fri, 25 Mar 2016 08:29:50 +0000 (09:29 +0100)]
Issue #25654:
* multiprocessing: open file with closefd=False to avoid ResourceWarning
* _test_multiprocessing: open file with O_EXCL to detect bugs in tests (if a
previous test forgot to remove TESTFN)
* test_sys_exit(): remove TESTFN after each loop iteration
Initial patch written by Serhiy Storchaka.
Victor Stinner [Fri, 25 Mar 2016 08:51:14 +0000 (09:51 +0100)]
Issue #21925: Fix test_warnings for release mode
Use -Wd comment line option to log the ResourceWarning.
Victor Stinner [Fri, 25 Mar 2016 08:29:50 +0000 (09:29 +0100)]
Issue #25654:
* multiprocessing: open file with closefd=False to avoid ResourceWarning
* _test_multiprocessing: open file with O_EXCL to detect bugs in tests (if a
previous test forgot to remove TESTFN)
* test_sys_exit(): remove TESTFN after each loop iteration
Initial patch written by Serhiy Storchaka.
Victor Stinner [Fri, 25 Mar 2016 08:07:07 +0000 (09:07 +0100)]
test_io: ignore DeprecationWarning on bytes path on Windows
Victor Stinner [Fri, 25 Mar 2016 07:57:16 +0000 (08:57 +0100)]
Issue #26637: Fix test_io
The import machinery now raises a different exception when it fails at Python
shutdown.
Benjamin Peterson [Fri, 25 Mar 2016 05:43:23 +0000 (22:43 -0700)]
remove duplicated check for fractions and complex numbers (closes #26076)
Patch by Oren Milman.
Zachary Ware [Fri, 25 Mar 2016 03:45:00 +0000 (22:45 -0500)]
Fix a few typos
Zachary Ware [Fri, 25 Mar 2016 03:44:41 +0000 (22:44 -0500)]
Don't doc check the venv dir
Victor Stinner [Fri, 25 Mar 2016 00:26:35 +0000 (01:26 +0100)]
Merge 3.5 (pystate.h)
Victor Stinner [Thu, 24 Mar 2016 23:54:18 +0000 (00:54 +0100)]
pystate.h: fix _PyThreadState_UncheckedGet()
Declare the function even if thread support is disabled.
Victor Stinner [Thu, 24 Mar 2016 23:40:59 +0000 (00:40 +0100)]
Fix bug in __import__ during Python shutdown
Issue #26637: The importlib module now emits an ImportError rather than a
TypeError if __import__() is tried during the Python shutdown process but
sys.path is already cleared (set to None).
Victor Stinner [Thu, 24 Mar 2016 23:33:12 +0000 (00:33 +0100)]
Merge 3.5
Issue #21925: warnings.formatwarning() now catches exceptions when calling
linecache.getline() and tracemalloc.get_object_traceback() to be able to log
ResourceWarning emitted late during the Python shutdown process.
Victor Stinner [Thu, 24 Mar 2016 23:30:32 +0000 (00:30 +0100)]
warnings.formatwarning(): catch exceptions
Issue #21925: warnings.formatwarning() now catches exceptions on
linecache.getline(...) to be able to log ResourceWarning emitted late during
the Python shutdown process.
Victor Stinner [Thu, 24 Mar 2016 23:28:56 +0000 (00:28 +0100)]
Fix test_warnings.test_improper_option()
test_warnings: only run test_improper_option() and test_warnings_bootstrap()
once. The unit test doesn't depend on self.module.
Victor Stinner [Thu, 24 Mar 2016 16:53:20 +0000 (17:53 +0100)]
Cleanup regrtest "main()" function
* Rename libregrtest.main_in_temp_cwd() to libregrtest.main()
* Add regrtest.main_in_temp_cwd() alias to libregrtest.main()
* Move old main_in_temp_cwd() code into libregrtest.Regrtest.main()
* Update multiple scripts to call libregrtest.main()
Victor Stinner [Thu, 24 Mar 2016 16:46:24 +0000 (17:46 +0100)]
rt.bat: use -m test instead of Lib\test\regrtest.py
Victor Stinner [Thu, 24 Mar 2016 16:43:53 +0000 (17:43 +0100)]
Cleanup regrtest.py
* Move code into a new _main() function
* Fix loop to cleanup sys.path
* Remove unused import
Victor Stinner [Thu, 24 Mar 2016 16:42:10 +0000 (17:42 +0100)]
support.temp_dir(): call support.rmtree() instead of shutil.rmtree()
Victor Stinner [Thu, 24 Mar 2016 16:21:17 +0000 (17:21 +0100)]
test_os: use support.rmtree() to cleanup WalkTests
Victor Stinner [Thu, 24 Mar 2016 16:12:55 +0000 (17:12 +0100)]
Enhance and modernize test_os
* add create_file() helper function
* create files using "x" mode instead of "w" to detect when a previous test
forget to remove a file
* open file for writing in unbuferred mode (buffering=0)
* replace "try/finally: unlink" with self.addCleanup(support.unlink)
* register unlink cleanup function *before* creating new files
Victor Stinner [Thu, 24 Mar 2016 15:50:41 +0000 (16:50 +0100)]
test_os: use @support.requires_linux_version
Victor Stinner [Thu, 24 Mar 2016 12:55:58 +0000 (13:55 +0100)]
Closes #26620: Fix ResourceWarning in test_urllib2_localnet
* Use context manager on urllib objects to ensure that they are closed on error
* Use self.addCleanup() to cleanup resources even if a test is interrupted
with CTRL+c
Victor Stinner [Thu, 24 Mar 2016 12:44:19 +0000 (13:44 +0100)]
Enhance and modernize test_genericpath
* Replace "try/finally: os.remove()" with self.addCleanup(support.unlink) or
self.addCleanup(support.rmdir): the support function handles the case when
the file doesn't exist
* Replace "try/finally: f.close()" with "with open(...) as f:"
* test_getsize: add a second test with a different size
* Create file using "x" mode to ensure that the file didn't exist before, to
detect bugs in tests
* Open files in unbuffered mode (buferring=0) to write immediatly data on disk
* Replace map() with simpler code
* Split isdir() unit test into two units tests to make them less dependant,
same change for isfile() test
* test_samefile(): test also two different files
Victor Stinner [Thu, 24 Mar 2016 11:23:18 +0000 (12:23 +0100)]
Enhance os._DummyDirEntry
Issue #25911:
* Try to fix test_os.BytesWalkTests on Windows
* Try to mimick better the reference os.DirEntry on Windows
* _DummyDirEntry now caches os.stat() result
* _DummyDirEntry constructor now tries to get os.stat()
Victor Stinner [Thu, 24 Mar 2016 11:04:15 +0000 (12:04 +0100)]
regrtest: when parallel tests are interrupted, display progress
Victor Stinner [Thu, 24 Mar 2016 10:55:29 +0000 (11:55 +0100)]
regrtest: mention in tests run sequentially or in parallel
Victor Stinner [Thu, 24 Mar 2016 08:43:00 +0000 (09:43 +0100)]
regrtest: fix --fromfile feature
* Update code for the name regrtest output format.
* Enhance also test_regrtest test on --fromfile
Victor Stinner [Thu, 24 Mar 2016 08:11:48 +0000 (09:11 +0100)]
Fix DeprecationWarning on Windows
Issue #25911: Use support.check_warnings() to expect or ignore
DeprecationWarning in test_os.
Victor Stinner [Wed, 23 Mar 2016 21:03:55 +0000 (22:03 +0100)]
_tracemalloc: use compact key for traces
Issue #26588: Optimize memory footprint of _tracemalloc before non-zero domain
is used. Start with compact key (Py_uintptr_t) and also switch to pointer_t key
when the first memory block with a non-zero domain is tracked.
Victor Stinner [Wed, 23 Mar 2016 20:35:29 +0000 (21:35 +0100)]
socketmodule.c: error if option larger than INT_MAX
On Windows, socket.setsockopt() raises an OverflowError if the socket option is
larger than INT_MAX bytes.
Victor Stinner [Wed, 23 Mar 2016 20:15:55 +0000 (21:15 +0100)]
Fix test_spwd on OpenIndiana
Issue #18787: restore "bin" name in test_spwd but catch KeyError.
Victor Stinner [Wed, 23 Mar 2016 20:08:25 +0000 (21:08 +0100)]
Try to fix test_gdb on s390x SLES 3.x
Ignore empty lines in stderr.
Stefan Krah [Wed, 23 Mar 2016 19:53:47 +0000 (20:53 +0100)]
Null merge.
Stefan Krah [Wed, 23 Mar 2016 19:53:22 +0000 (20:53 +0100)]
Issue #26621: Remove unnecessary test.
Stefan Krah [Wed, 23 Mar 2016 19:50:10 +0000 (20:50 +0100)]
Issue #26621: Update libmpdec version and remove unnecessary test case.
Victor Stinner [Wed, 23 Mar 2016 17:45:55 +0000 (18:45 +0100)]
Try to fix test_spwd on OpenIndiana
Issue #18787: try to get the "root" entry which should exist on all UNIX
instead of "bin" which doesn't exist on OpenIndiana.
Terry Jan Reedy [Wed, 23 Mar 2016 17:40:14 +0000 (13:40 -0400)]
Merge heads
Terry Jan Reedy [Wed, 23 Mar 2016 17:39:18 +0000 (13:39 -0400)]
Merge heads
Victor Stinner [Wed, 23 Mar 2016 17:37:54 +0000 (18:37 +0100)]
Issue #23848: Fix usage of _Py_DumpDecimal()
Terry Jan Reedy [Wed, 23 Mar 2016 17:37:15 +0000 (13:37 -0400)]
Merge with 3.5
Victor Stinner [Wed, 23 Mar 2016 17:36:54 +0000 (18:36 +0100)]
longobject.c: fix compilation warning on Windows 64-bit
We know that Py_SIZE(b) is -1 or 1 an so fits into the sdigit type.
Terry Jan Reedy [Wed, 23 Mar 2016 17:36:52 +0000 (13:36 -0400)]
Issue #26525: Change chr example to match change in ord example.
Victor Stinner [Wed, 23 Mar 2016 17:32:54 +0000 (18:32 +0100)]
Try to fix test_gdb on s390x buildbots
Victor Stinner [Wed, 23 Mar 2016 16:48:22 +0000 (17:48 +0100)]
get_warnings_attr(): Fix coverity warning
Don't check if the dict key exists before getting the key. Instead get the key
and handle error.
Victor Stinner [Wed, 23 Mar 2016 15:57:51 +0000 (16:57 +0100)]
Fix typo in doc: avoid the french "& cie" :-)
Victor Stinner [Wed, 23 Mar 2016 15:10:07 +0000 (16:10 +0100)]
Rework _Py_DumpASCII() to make Coverity happy
Victor Stinner [Wed, 23 Mar 2016 14:19:12 +0000 (15:19 +0100)]
Issue #23848: Try to fix test_faulthandler on ARM
Restore the previous code for stack_overflow().
Victor Stinner [Wed, 23 Mar 2016 13:44:14 +0000 (14:44 +0100)]
faulthandler: only log fatal exceptions
Issue #23848, #26622:
* faulthandler now only logs fatal Windows exceptions.
* write error code as decimal, not as hexadecimal
* replace "Windows exception" with "Windows fatal exception"
doko@ubuntu.com [Wed, 23 Mar 2016 11:58:00 +0000 (12:58 +0100)]
Merge 3.5
doko@ubuntu.com [Wed, 23 Mar 2016 11:57:29 +0000 (12:57 +0100)]
Makefile.pre.in (profile-opt): Fix bashism.
Victor Stinner [Wed, 23 Mar 2016 11:38:01 +0000 (12:38 +0100)]
Buildbots: change also Windows timeout from 1 hour to 15 min
Victor Stinner [Wed, 23 Mar 2016 11:14:10 +0000 (12:14 +0100)]
regrtest: display test duration in sequential mode
Only display duration if a test takes more than 30 seconds.
Victor Stinner [Wed, 23 Mar 2016 10:37:41 +0000 (11:37 +0100)]
_msi.c: try to fix compiler warnings
Victor Stinner [Wed, 23 Mar 2016 10:36:19 +0000 (11:36 +0100)]
compiler.c: fix compiler warnings on Windows
Victor Stinner [Wed, 23 Mar 2016 10:31:58 +0000 (11:31 +0100)]
getpathp.c: fix compiler warning
wcsnlen_s() result type is size_t.
Victor Stinner [Wed, 23 Mar 2016 10:30:43 +0000 (11:30 +0100)]
_PyMem_DebugFree(): fix compiler warning on Windows
Don't return a void value.
Victor Stinner [Wed, 23 Mar 2016 09:39:17 +0000 (10:39 +0100)]
faulthandler: add Windows exception handler
Issue #23848: On Windows, faulthandler.enable() now also installs an exception
handler to dump the traceback of all Python threads on any Windows exception,
not only on UNIX signals (SIGSEGV, SIGFPE, SIGABRT).
Victor Stinner [Wed, 23 Mar 2016 09:32:26 +0000 (10:32 +0100)]
Issue #23848: Expose _Py_DumpHexadecimal()
This function will be reused by faulthandler.
Victor Stinner [Wed, 23 Mar 2016 08:52:13 +0000 (09:52 +0100)]
Cleanup hashtable.h
Issue #26588:
* Pass the hash table rather than the key size to hash and compare functions
* _Py_HASHTABLE_READ_KEY() and _Py_HASHTABLE_ENTRY_READ_KEY() macros now expect
the hash table as the first parameter, rather than the key size
* tracemalloc_get_traces_fill(): use _Py_HASHTABLE_ENTRY_READ_DATA() rather
than pointer dereference
* Remove the _Py_HASHTABLE_ENTRY_WRITE_PKEY() macro
* Move "PKEY" and "PDATA" macros inside hashtable.c
Victor Stinner [Wed, 23 Mar 2016 08:38:54 +0000 (09:38 +0100)]
Issue #26588:
* Optimize tracemalloc_add_trace(): modify hashtable entry data (trace) if the
memory block is already tracked, rather than trying to remove the old trace
and then add a new trace.
* Add _Py_HASHTABLE_ENTRY_WRITE_DATA() macro
Victor Stinner [Wed, 23 Mar 2016 08:25:01 +0000 (09:25 +0100)]
Issue #26588:
* _Py_HASHTABLE_ENTRY_DATA: change type from "char *" to "const void *"
* Add _Py_HASHTABLE_ENTRY_WRITE_PKEY() macro
* Rename _Py_HASHTABLE_ENTRY_WRITE_DATA() macro to
_Py_HASHTABLE_ENTRY_WRITE_PDATA()
* Add _Py_HASHTABLE_ENTRY_WRITE_DATA() macro
Victor Stinner [Wed, 23 Mar 2016 08:08:08 +0000 (09:08 +0100)]
Issue #26588: Optimize tracemalloc_realloc()
No need to remove the old trace if the memory block didn't move.
Victor Stinner [Wed, 23 Mar 2016 01:05:39 +0000 (02:05 +0100)]
Makefile: change default value of TESTTIMEOUT from 1 hour to 15 min
The whole test suite takes 6 minutes on my laptop. It takes less than 30
minutes on most buildbots. The TESTTIMEOUT is the timeout for a single test
file.
Victor Stinner [Wed, 23 Mar 2016 01:04:32 +0000 (02:04 +0100)]
regrtest: add timeout to main process when using -jN
libregrtest: add a watchdog to run_tests_multiprocess() using
faulthandler.dump_traceback_later().
Victor Stinner [Tue, 22 Mar 2016 23:54:48 +0000 (00:54 +0100)]
_warnings.warn_explicit(): try to import warnings
Issue #26592: _warnings.warn_explicit() now tries to import the warnings module
(Python implementation) if the source parameter is set to be able to log the
traceback where the source was allocated.
Victor Stinner [Tue, 22 Mar 2016 23:43:54 +0000 (00:43 +0100)]
Implement finalizer for os.scandir() iterator
Issue #26603:
* Implement finalizer for os.scandir() iterator
* Set the source parameter when emitting the ResourceWarning warning
* Close the iterator before emitting the warning
Victor Stinner [Tue, 22 Mar 2016 23:28:08 +0000 (00:28 +0100)]
Add a source parameter to warnings.warn()
Issue #26604:
* Add a new optional source parameter to _warnings.warn() and warnings.warn()
* Modify asyncore, asyncio and _pyio modules to set the source parameter when
logging a ResourceWarning warning
Victor Stinner [Tue, 22 Mar 2016 23:18:36 +0000 (00:18 +0100)]
Fix macros in hashtable.h
Add parenthesis.
Victor Stinner [Tue, 22 Mar 2016 23:17:54 +0000 (00:17 +0100)]
Merge 3.5
Victor Stinner [Tue, 22 Mar 2016 23:17:04 +0000 (00:17 +0100)]
Enhance _tracemalloc debug mode
Issue #26588: Enhance assertion in set_reentrant()
Victor Stinner [Tue, 22 Mar 2016 23:10:24 +0000 (00:10 +0100)]
Fix _tracemalloc start/stop
Issue #26588: Fix _tracemalloc start/stop: don't play with the reentrant flag.
set_reentrant(1) fails with an assertion error if tracemalloc_init() is called
first in a thread A and tracemalloc_start() is called second in a thread B. The
tracemalloc is imported in a thread A. Importing the module calls
tracemalloc_init(). tracemalloc.start() is called in a thread B.
Victor Stinner [Tue, 22 Mar 2016 22:54:42 +0000 (23:54 +0100)]
Issue #26588: remove debug traces from _tracemalloc.
Victor Stinner [Tue, 22 Mar 2016 20:26:31 +0000 (21:26 +0100)]
Issue #26588: skip test_warnings.test_tracemalloc()
Victor Stinner [Tue, 22 Mar 2016 20:06:07 +0000 (21:06 +0100)]
Issue #26588: more debug traces
Victor Stinner [Tue, 22 Mar 2016 19:56:49 +0000 (20:56 +0100)]
Issue #26588: Don't call tracemalloc_init() at module initilization
So it's possible to get debug messages in test_tracemalloc.
Victor Stinner [Tue, 22 Mar 2016 17:48:50 +0000 (18:48 +0100)]
Issue #26588: one more assertion
Victor Stinner [Tue, 22 Mar 2016 16:45:09 +0000 (17:45 +0100)]
Add assertions on tracemalloc_reentrant_key
Issue #26588.
Victor Stinner [Tue, 22 Mar 2016 16:40:07 +0000 (17:40 +0100)]
Issue #26588: more assertions
Victor Stinner [Tue, 22 Mar 2016 15:29:02 +0000 (16:29 +0100)]
Issue #26588: fix compilation on Windows
Victor Stinner [Tue, 22 Mar 2016 15:13:31 +0000 (16:13 +0100)]
Issue #26588: add debug traces
Try to debug random failure on buildbots.
Victor Stinner [Tue, 22 Mar 2016 14:14:09 +0000 (15:14 +0100)]
regrtest: add time to output
Timestamps should help to debug slow buildbots, and timeout and hang on
buildbots.
Victor Stinner [Tue, 22 Mar 2016 12:39:05 +0000 (13:39 +0100)]
Add C functions _PyTraceMalloc_Track()
Issue #26530:
* Add C functions _PyTraceMalloc_Track() and _PyTraceMalloc_Untrack() to track
memory blocks using the tracemalloc module.
* Add _PyTraceMalloc_GetTraceback() to get the traceback of an object.
Victor Stinner [Tue, 22 Mar 2016 11:58:23 +0000 (12:58 +0100)]
tracemalloc now supports domains
Issue #26588:
* The _tracemalloc now supports tracing memory allocations of multiple address
spaces (domains).
* Add domain parameter to tracemalloc_add_trace() and
tracemalloc_remove_trace().
* tracemalloc_add_trace() now starts by removing the previous trace, if any.
* _tracemalloc._get_traces() now returns a list of (domain, size,
traceback_frames): the domain is new.
* Add tracemalloc.DomainFilter
* tracemalloc.Filter: add an optional domain parameter to the constructor and a
domain attribute
* Sublte change: use Py_uintptr_t rather than void* in the traces key.
* Add tracemalloc_config.use_domain, currently hardcoded to 1