from threading import Thread
from unittest import TestCase
-from test.support import is_wasi
+from test.support import threading_helper
class C:
self.v = v
-@unittest.skipIf(is_wasi, "WASI has no threads.")
+@threading_helper.requires_working_threading()
class TestList(TestCase):
def test_racing_iter_append(self):
import weakref
from sys import monitoring
-from test.support import is_wasi
+from test.support import threading_helper
from threading import Thread, _PyRLock
from unittest import TestCase
monitoring.free_tool_id(self.tool_id)
-@unittest.skipIf(is_wasi, "WASI has no threads.")
+@threading_helper.requires_working_threading()
class SetPreTraceMultiThreaded(InstrumentationMultiThreadedMixin, TestCase):
"""Sets tracing one time after the threads have started"""
sys.settrace(self.trace_func)
-@unittest.skipIf(is_wasi, "WASI has no threads.")
+@threading_helper.requires_working_threading()
class MonitoringMultiThreaded(
MonitoringTestMixin, InstrumentationMultiThreadedMixin, TestCase
):
self.set = not self.set
-@unittest.skipIf(is_wasi, "WASI has no threads.")
+@threading_helper.requires_working_threading()
class SetTraceMultiThreaded(InstrumentationMultiThreadedMixin, TestCase):
"""Uses sys.settrace and repeatedly toggles instrumentation on and off"""
self.set = not self.set
-@unittest.skipIf(is_wasi, "WASI has no threads.")
+@threading_helper.requires_working_threading()
class SetProfileMultiThreaded(InstrumentationMultiThreadedMixin, TestCase):
"""Uses sys.setprofile and repeatedly toggles instrumentation on and off"""
self.set = not self.set
-@unittest.skipIf(is_wasi, "WASI has no threads.")
+@threading_helper.requires_working_threading()
class MonitoringMisc(MonitoringTestMixin, TestCase):
def register_callback(self):
def callback(*args):
import unittest
+from concurrent.futures import ThreadPoolExecutor
from threading import Thread
-from multiprocessing.dummy import Pool
from unittest import TestCase
-from test.support import is_wasi
+from test.support import threading_helper, import_helper
+
NTHREADS = 6
class A:
attr = 1
-@unittest.skipIf(is_wasi, "WASI has no threads.")
+@threading_helper.requires_working_threading()
class TestType(TestCase):
def test_attr_cache(self):
def read(id0):
A.attr = x
- with Pool(NTHREADS) as pool:
- pool.apply_async(read, (1,))
- pool.apply_async(write, (1,))
- pool.close()
- pool.join()
+ with ThreadPoolExecutor(NTHREADS) as pool:
+ pool.submit(read, (1,))
+ pool.submit(write, (1,))
+ pool.shutdown(wait=True)
def test_attr_cache_consistency(self):
class C: