summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* gh-109179: Fix traceback display for SyntaxErrors with notes (#109197)Irit Katriel2023-09-113-34/+34
|
* gh-109276: libregrtest: use separated file for JSON (#109277)Victor Stinner2023-09-116-36/+84
| | | | | | | | | | | | | | libregrtest now uses a separated file descriptor to write test result as JSON. Previously, if a test wrote debug messages late around the JSON, the main test process failed to parse JSON. Rename TestResult.write_json() to TestResult.write_json_into(). worker_process() no longer writes an empty line at the end. There is no need to separate test process output from the JSON output anymore, since JSON is now written into a separated file descriptor. create_worker_process() now always spawn the process with close_fds=True.
* gh-90805: Make sure test_functools works with and without _functoolsmodule ↵Nikita Sobolev2023-09-111-30/+28
| | | | (GH-108644)
* gh-109190: What's New in 3.12: Add subheadings to removals for easy linking ↵Hugo van Kemenade2023-09-111-52/+107
| | | | | | (#109159) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
* gh-108987: Fix _thread.start_new_thread() race condition (#109135)Victor Stinner2023-09-115-41/+69
| | | | | | | | | | | | | Fix _thread.start_new_thread() race condition. If a thread is created during Python finalization, the newly spawned thread now exits immediately instead of trying to access freed memory and lead to a crash. thread_run() calls PyEval_AcquireThread() which checks if the thread must exit. The problem was that tstate was dereferenced earlier in _PyThreadState_Bind() which leads to a crash most of the time. Move _PyThreadState_CheckConsistency() from thread_run() to _PyThreadState_Bind().
* gh-109182: Fix and improve tests for gh-108654 (GH-109189)Serhiy Storchaka2023-09-111-18/+28
|
* GH-108976. Keep monitoring data structures valid during de-optimization ↵Mark Shannon2023-09-114-55/+79
| | | | during callback. (GH-109131)
* Better integration of doctest and unittest in test_ctypes.test_objects ↵Serhiy Storchaka2023-09-111-6/+4
| | | | | (GH-108922) Better integration of docrtest and unittest in test_ctypes.test_objects
* Test DocTestFinder directly instead of calling support.run_doctest() (GH-108917)Serhiy Storchaka2023-09-111-5/+3
|
* gh-109162: libregrtest: move code around (#109253)Victor Stinner2023-09-113-93/+105
| | | | | * Move Regrtest.display_header() to utils.py. * Move cleanup_temp_dir() to utils.py. * Move list_cases() to findtests.py.
* gh-107219: Fix concurrent.futures terminate_broken() (#109244)Victor Stinner2023-09-113-0/+27
| | | | | | | | | | | | | | | Fix a race condition in concurrent.futures. When a process in the process pool was terminated abruptly (while the future was running or pending), close the connection write end. If the call queue is blocked on sending bytes to a worker process, closing the connection write end interrupts the send, so the queue can be closed. Changes: * _ExecutorManagerThread.terminate_broken() now closes call_queue._writer. * multiprocessing PipeConnection.close() now interrupts WaitForMultipleObjects() in _send_bytes() by cancelling the overlapped operation.
* GH-108614: Increase importlib MAGIC for RESUME_CHECK instruction (#109247)Victor Stinner2023-09-111-1/+2
|
* gh-109162: libregrtest: use relative imports (#109250)Victor Stinner2023-09-1117-105/+110
| | | | libregrtest.__init__ no longer exposes any symbol, so "python -m test.libregrtest.worker" imports less modules.
* gh-109162: libregrtest: rename runtest_mp.py to run_workers.py (#109248)Victor Stinner2023-09-119-164/+171
| | | | | | | | | | | | | | | * Rename runtest_mp.py to run_workers.py * Move exit_timeout() and temp_cwd() context managers from Regrtest.main() to Regrtest.run_tests(). Actions like --list-tests or --list-cases don't need these protections. * Regrtest: remove selected and tests attributes. Pass 'selected' to list_tests(), list_cases() and run_tests(). display_result() now expects a TestTuple, instead of TestList. * Rename setup_tests() to setup_process() and rename setup_support() to setup_tests(). * Move _adjust_resource_limits() to utils and rename it to adjust_rlimit_nofile(). * Move replace_stdout() to utils. * Fix RunTests.verbose type: it's an int.
* gh-109162: libregrtest: fix Logger (#109246)Victor Stinner2023-09-113-30/+38
| | | | | * Pass results, quiet and pgo to Logger constructor. * Move display_progress() method from Regrtest to Logger. * No longer pass Regrtest to RunWorkers, but logger and results.
* gh-109162: libregrtest: add single.py and result.py (#109243)Victor Stinner2023-09-1114-697/+722
| | | | | | | | | | | * Add single.py and result.py files. * Rename runtest.py to runtests.py. * Move run_single_test() function and its helper functions to single.py. * Move remove_testfn(), abs_module_name() and normalize_test_name() to utils.py. * Move setup_support() to setup.py. * Move type hints like TestName to utils.py. * Rename runtest.py to runtests.py.
* gh-109162: libregrtest: add worker.py (#109229)Victor Stinner2023-09-1010-213/+238
| | | | | | | | | | | | | | | | | | | | | | | | Add new worker.py file: * Move create_worker_process() and worker_process() to this file. * Add main() function to worker.py. create_worker_process() now runs the command: "python -m test.libregrtest.worker JSON". * create_worker_process() now starts the worker process in the current working directory. Regrtest now gets the absolute path of the reflog.txt filename: -R command line option filename. * Remove --worker-json command line option. Remove test_regrtest.test_worker_json(). Related changes: * Add write_json() and from_json() methods to TestResult. * Rename select_temp_dir() to get_temp_dir() and move it to utils. * Rename make_temp_dir() to get_work_dir() and move it to utils. It no longer calls os.makedirs(): Regrtest.main() now calls it. * Move fix_umask() to utils. The function is now called by setup_tests(). * Move StrPath to utils. * Add exit_timeout() context manager to utils. * RunTests: Replace junit_filename (StrPath) with use_junit (bool).
* gh-109230: test_pyexpat no longer depends on the current directory (#109233)Victor Stinner2023-09-102-24/+53
| | | | | | | | Fix test_pyexpat.test_exception(): it can now be run from a directory different than Python source code directory. Before, the test failed in this case. Skip the test if Modules/pyexpat.c source is not available. Skip also the test on Python implementations other than CPython.
* gh-109237: Fix test_site for non-ASCII working directory (#109238)Victor Stinner2023-09-102-2/+6
| | | | | | Fix test_site.test_underpth_basic() when the working directory contains at least one non-ASCII character: encode the "._pth" file to UTF-8 and enable the UTF-8 Mode to use UTF-8 for the child process stdout.
* gh-50644: Forbid pickling of codecs streams (GH-109180)Serhiy Storchaka2023-09-103-0/+95
| | | | | | | | | Attempts to pickle or create a shallow or deep copy of codecs streams now raise a TypeError. Previously, copying failed with a RecursionError, while pickling produced wrong results that eventually caused unpickling to fail with a RecursionError.
* gh-109054: Don't use libatomic on cross-compilation (#109211)Victor Stinner2023-09-102-8/+6
| | | | | | | configure no longer uses libatomic by default when Python is cross-compiled. The LIBATOMIC variable can be set manually in this case: ./configure LIBATOMIC="-latomic" (...)
* gh-109207: Fix SystemError when printing symtable entry object. (GH-109225)云line2023-09-103-3/+7
|
* Fix "FSTRING_MIDDLE" typo in py312 "What's New" (#109222)Delgan2023-09-101-1/+1
|
* gh-93627: Align Python implementation of pickle with C implementation of ↵Pieter Eendebak2023-09-103-10/+72
| | | | | pickle (GH-103035) If a method like __reduce_ex_ or __reduce__ is set to None, a TypeError is raised.
* gh-109174: Add support of SimpleNamespace in copy.replace() (GH-109175)Serhiy Storchaka2023-09-104-0/+58
|
* gh-109162: libregrtest: add Logger class (#109212)Victor Stinner2023-09-104-99/+123
| | | | | | | | | | | | | | | | | | | | * Add Logger class in a new logger.py file. * Move Regrtest attributes to Logger: * start_time * test_count_text * test_count_width * win_load_tracker * Move Regrtest method to Logger: * log() * getloadavg(): rename to get_load_avg() * set_tests() * Add methods to the Logger class: * start_load_tracker() * stop_load_tracker()
* gh-109162: libregrtest: add TestResults class (#109208)Victor Stinner2023-09-103-274/+306
| | | | | | | | | | | | | | | | | | | | * Add TestResults class. * Move Regrtest methods to TestResults: * accumulate_result(): now takes a RunTests parameter * get_executed() * no_tests_run() * Add methods to TestResults: * add_junit() * display_result() * display_summary() * need_rerun() * prepare_rerun() * write_junit() * Rename 'need_rerun' attribute to 'bad_results'. * Rename 'total_stats' attribute to 'stats'.
* gh-109162: Refactor libregrtest.Regrtest (#109206)Victor Stinner2023-09-105-115/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add type hint types: TestName, StrPath, StrJSON. * Add attributes to Regrtest: * cmdline_args * coverage * coverage_dir * fail_rerun * next_single_filename * print_slowest * tmp_dir * want_rerun * want_run_leaks * Remove Regrtest.ns attribute. * Rename Regrtest methods: * cleanup() => cleanup_temp_dir() * create_temp_dir() => make_temp_dir() * set_temp_dir() => select_temp_dir() * Convert Regrtest methods to static methods: * cleanup_temp_dir() * display_header() * fix_umask() * get_rerun_match_tests() * list_tests() * make_temp_dir() * select_temp_dir() * Remove display_sanitizers() method: move code into display_header(). * Rename 'test_cwd' variable to 'work_dir'.
* gh-109162: Refactor libregrtest.runtest_mp (#109205)Victor Stinner2023-09-104-56/+57
| | | | | | | | | | | | | | * Add attributes to Regrtest and RunTests: * fail_env_changed * num_workers * Rename MultiprocessTestRunner to RunWorkers. Add num_workers parameters to RunWorkers constructor. Remove RunWorkers.ns attribute. * Rename TestWorkerProcess to WorkerThread. * get_running() now returns a string like: "running (...): ...". * Regrtest.action_run_tests() now selects the number of worker processes, instead of the command line parser.
* gh-109162: libregrtest: remove WorkerJob class (#109204)Victor Stinner2023-09-097-88/+126
| | | | | | | | | | | | | | | * Add attributes to Regrtest and RunTests: * gc_threshold * memory_limit * python_cmd * use_resources * Remove WorkerJob class. Add as_json() and from_json() methods to RunTests. A worker process now only uses RunTests for all parameters. * Add tests on support.set_memlimit() in test_support. Create _parse_memlimit() and also adds tests on it. * Remove 'ns' parameter from runtest.py.
* gh-109162: libregrtest: fix _decode_worker_job() (#109202)Victor Stinner2023-09-093-5/+21
| | | | | Decode also HuntRefleak() object inside the RunTests object. Add an unit test on huntrleaks with multiprocessing (-R -jN).
* Improve the sieve() recipe in the itertools docs (gh-109199)Raymond Hettinger2023-09-091-4/+7
| | | Lazier sieve
* Fix an ironic typo in a code comment. (gh-109186)Raymond Hettinger2023-09-091-1/+1
|
* gh-109162: Refactor libregrtest.RunTests (#109177)Victor Stinner2023-09-095-60/+88
| | | | | | | | | | | | * Rename dash_R() runtest_refleak(). The function now gets huntrleaks and quiet arguments, instead of 'ns' argument. * Add attributes to Regrtest and RunTests: * verbose * quiet * huntrleaks * test_dir * Add HuntRefleak class.
* gh-109050: Remove remaining tests for legacy Unicode C API (GH-109068)Serhiy Storchaka2023-09-096-197/+1
|
* gh-109118: Fix runtime crash when NameError happens in PEP 695 function ↵Jelle Zijlstra2023-09-097-106/+189
| | | | (#109123)
* gh-109162: Refactor libregrtest.runtest (#109172)Victor Stinner2023-09-095-104/+134
| | | | | | | | | | | | | | | | | | | | | | * Rename runtest() to run_single_test(). * Pass runtests to run_single_test(). * Add type annotation to Regrtest attributes. Add missing attributes to Namespace. * Add attributes to Regrtest and RunTests: * fail_fast * ignore_tests * match_tests * output_on_failure * pgo * pgo_extended * timeout * Get pgo from 'runtests', rather than from 'ns'. * Remove WorkerJob.match_tests. * setup_support() now gets pgo_extended from runtests. * save_env(): change parameter order, pass test_name first. * Add setup_test_dir() function. * Pass runtests to setup_tests().
* gh-109052: Use the base opcode when comparing code objects (gh-109107)Tian Gao2023-09-093-6/+24
|
* gh-109162: Refactor libregrtest WorkerJob (#109171)Victor Stinner2023-09-095-41/+48
| | | | | | | | | | | | | | | * Rename --worker-args command line option to --worker-json. * Rename _parse_worker_args() to _parse_worker_json(). * WorkerJob: * Add runtests attribute * Remove test_name and rerun attribute * Rename run_test_in_subprocess() to create_worker_process(). * Rename run_tests_worker() to worker_process(). * create_worker_process() uses json.dump(): write directly JSON to stdout. * Convert MultiprocessResult to a frozen dataclass. * Rename RunTests.match_tests to RunTests.match_tests_dict.
* gh-109162: Refactor Regrtest.action_run_tests() (#109170)Victor Stinner2023-09-091-49/+49
| | | | | | | Refator Regrtest class: * Rename finalize() finalize_tests(). * Pass tracer to run_test() and finalize_tests(). Remove Regrtest.tracer. * run_test() does less things: move code to its caller.
* gh-108996: Skip broken test_msvcrt for now (#109169)Victor Stinner2023-09-081-0/+2
|
* gh-109162: Regrtest copies 'ns' attributes (#109168)Victor Stinner2023-09-083-48/+73
| | | | | | | | | | * Regrtest.__init__() now copies 'ns' namespace attributes to Regrtest attributes. Regrtest match_tests and ignore_tests attributes have type FilterTuple (tuple), instead of a list. * Add RunTests.copy(). Regrtest._rerun_failed_tests() now uses RunTests.copy(). * Replace Regrtest.all_tests (list) with Regrtest.first_runtests (RunTests). * Make random_seed maximum 10x larger (9 digits, instead of 8).
* gh-109162: Refactor Regrtest.main() (#109163)Victor Stinner2023-09-084-62/+64
| | | | | | | | | | | | | * main() now calls _parse_args() and pass 'ns' to Regrtest constructor. Remove kwargs argument from Regrtest.main(). * _parse_args() checks ns.huntrleaks. * set_temp_dir() is now responsible to call expanduser(). * Regrtest.main() sets self.tests earlier. * Add TestTuple and TestList types. * Rename MatchTests to FilterTuple and rename MatchTestsDict to FilterTestDict. * TestResult.get_rerun_match_tests() return type is now FilterTuple: return a tuple instead of a list. RunTests.tests type becomes TestTuple.
* gh-108996: add tests for msvcrt (#109004)AN Long2023-09-082-0/+112
| | | | Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu> Co-authored-by: Steve Dower <steve.dower@microsoft.com>
* gh-109054: configure checks if libatomic is needed (#109101)Victor Stinner2023-09-083-2/+151
| | | | | | | | | | | | | | | | Fix building the _testcapi extension on Linux AArch64 which requires linking to libatomic when <cpython/pyatomic.h> is used: the _Py_atomic_or_uint64() function requires libatomic __atomic_fetch_or_8() on this platform. The configure script now checks if linking to libatomic is needed and generates a new LIBATOMIC variable used to build the _testcapi extension. Building the _testcapi extension now uses the LIBATOMIC variable in its LDFLAGS, since Modules/_testcapi/pyatomic.c uses <cpython/pyatomic.h>. Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
* gh-108455: peg_generator: enable mypy's `--warn-unreachable` setting and ↵Alex Waygood2023-09-083-9/+13
| | | | `redundant-expr` error code (#109160)
* gh-91960: FreeBSD Cirrus CI runs configure separately (#109127)Victor Stinner2023-09-081-2/+5
| | | Run configure and make in separated steps to have more readable logs.
* gh-109114: Relax the check for invalid lambdas inside f-strings to avoid ↵Pablo Galindo Salgado2023-09-084-1125/+1073
| | | | false positives (#109121)
* Check the result of PySet_Contains() for error in Python/symtable.c (GH-109146)Serhiy Storchaka2023-09-081-15/+57
|
* GH-108614: Unbreak emscripten build (GH-109132)Mark Shannon2023-09-085-10/+11
|