cpython/Lib/test/test_importlib
Victor Stinner 8f22504d74
[3.11] gh-109974: Fix threading lock_tests race conditions (#110057) (#110355)
[3.12] gh-109974: Fix threading lock_tests race conditions (#110057) (#110346)

* gh-109974: Fix threading lock_tests race conditions (#110057)

Fix race conditions in test_threading lock tests. Wait until a
condition is met rather than using time.sleep() with a hardcoded
number of seconds.

* Replace sleeping loops with support.sleeping_retry() which raises
  an exception on timeout.
* Add wait_threads_blocked(nthread) which computes a sleep depending
  on the number of threads. Remove _wait() function.
* test_set_and_clear(): use a way longer Event.wait() timeout.
* BarrierTests.test_repr(): wait until the 2 threads are waiting for
  the barrier. Use a way longer timeout for Barrier.wait() timeout.
* test_thread_leak() no longer needs to count
  len(threading.enumerate()): Bunch uses
  threading_helper.wait_threads_exit() internally which does it in
  wait_for_finished().
* Add BaseLockTests.wait_phase() which implements a timeout.
  test_reacquire() and test_recursion_count() use wait_phase().

(cherry picked from commit 4e356ad183)

* gh-109974: Fix more threading lock_tests race conditions (#110089)

* Add context manager on Bunch class.
* Bunch now catchs exceptions on executed functions and re-raise them
  at __exit__() as an ExceptionGroup.
* Rewrite BarrierProxy.test_default_timeout(). Use a single thread.
  Only check that barrier.wait() blocks for at least default timeout
  seconds.
* test_with(): inline _with() function.

(cherry picked from commit 743e3572ee)
(cherry picked from commit 1d032ea3d6)
2023-10-04 12:07:57 +00:00
..
builtin [3.11] GH-102700: allow built-in modules to be submodules (GH-103162) (GH-103322) 2023-04-06 16:06:02 -07:00
data bpo-44893: Implement EntryPoint as simple class with attributes. (GH-30150) 2021-12-16 15:49:42 -05:00
data01
data02
data03
extension [3.11] gh-103247: clear the module cache in a test in test_importlib/extensions/test_loader.py (GH-104226) (#104345) 2023-05-10 07:53:19 -07:00
frozen bpo-46425: fix direct invocation of test_importlib (GH-30682) 2022-01-22 18:05:05 +02:00
import_ gh-93461: Invalidate sys.path_importer_cache entries with relative paths (GH-93653) 2022-06-12 23:29:59 -07:00
namespace_pkgs
namespacedata01
partial
resources bpo-46125: Refactor tests to test traversable API directly. Includes changes from importlib_resources 5.4.0. (GH-30189) 2021-12-18 21:28:49 -05:00
source bpo-45046: Support context managers in unittest (GH-28045) 2022-05-08 08:12:19 -07:00
zipdata01
zipdata02
__init__.py
__main__.py
abc.py
fixtures.py [3.11] gh-98706: Sync with importlib_metadata 4.13.0. (GH-98875) 2022-11-05 06:55:04 -07:00
stubs.py
test_abc.py bpo-46425: fix direct invocation of test_importlib (GH-30682) 2022-01-22 18:05:05 +02:00
test_api.py gh-93461: Invalidate sys.path_importer_cache entries with relative paths (GH-93653) 2022-06-12 23:29:59 -07:00
test_compatibilty_files.py bpo-46425: Partially revert "bpo-46425: fix direct invocation of test_importlib (GH-30682)" (GH-30799) 2022-01-22 21:38:26 -05:00
test_contents.py bpo-46425: Partially revert "bpo-46425: fix direct invocation of test_importlib (GH-30682)" (GH-30799) 2022-01-22 21:38:26 -05:00
test_files.py bpo-46425: Partially revert "bpo-46425: fix direct invocation of test_importlib (GH-30682)" (GH-30799) 2022-01-22 21:38:26 -05:00
test_lazy.py bpo-46425: fix direct invocation of test_importlib (GH-30682) 2022-01-22 18:05:05 +02:00
test_locks.py [3.11] gh-109974: Fix threading lock_tests race conditions (#110057) (#110355) 2023-10-04 12:07:57 +00:00
test_main.py [3.11] gh-106300: Improve assertRaises(Exception) usages in tests (GH-106302). (GH-106545) 2023-07-08 08:22:33 +00:00
test_metadata_api.py [3.11] gh-98706: Sync with importlib_metadata 4.13.0. (GH-98875) 2022-11-05 06:55:04 -07:00
test_namespace_pkgs.py bpo-45046: Support context managers in unittest (GH-28045) 2022-05-08 08:12:19 -07:00
test_open.py bpo-46425: Partially revert "bpo-46425: fix direct invocation of test_importlib (GH-30682)" (GH-30799) 2022-01-22 21:38:26 -05:00
test_path.py bpo-46425: Partially revert "bpo-46425: fix direct invocation of test_importlib (GH-30682)" (GH-30799) 2022-01-22 21:38:26 -05:00
test_pkg_import.py
test_read.py bpo-46425: Partially revert "bpo-46425: fix direct invocation of test_importlib (GH-30682)" (GH-30799) 2022-01-22 21:38:26 -05:00
test_reader.py
test_resource.py bpo-46425: Partially revert "bpo-46425: fix direct invocation of test_importlib (GH-30682)" (GH-30799) 2022-01-22 21:38:26 -05:00
test_spec.py bpo-46425: fix direct invocation of test_importlib (GH-30682) 2022-01-22 18:05:05 +02:00
test_threaded_import.py [3.11] Fix test_importlib.test_side_effect_import() (GH-104840) (#104843) 2023-05-25 02:35:34 +02:00
test_util.py [3.11] Update the magic number in test_util.py (GH-95714) (#95716) 2022-08-05 15:43:10 +01:00
test_windows.py bpo-46616: Ensures test_importlib.test_windows cleans up registry keys after completion (GH-31086) 2022-02-02 19:54:27 +00:00
test_zip.py bpo-46425: Partially revert "bpo-46425: fix direct invocation of test_importlib (GH-30682)" (GH-30799) 2022-01-22 21:38:26 -05:00
threaded_import_hangers.py
update-zips.py gh-91298: Refine traversable (apply changes from importlib_resources 5.7.1) (#91623) 2022-04-17 11:10:36 -04:00
util.py gh-95971: Turn @writes_bytecode_files to skip when not running (GH-95972) 2022-10-15 08:22:38 -07:00