Skip to content

Commit 8699aaa

Browse files
authored
Merge pull request #54 from ngoldbaum/fix-32bit
attempt to fix 32 bit architectures
2 parents 7e6a844 + feed205 commit 8699aaa

File tree

1 file changed

+39
-38
lines changed

1 file changed

+39
-38
lines changed

src/pytest_run_parallel/plugin.py

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -65,52 +65,53 @@ def pytest_configure(config):
6565

6666

6767
def wrap_function_parallel(fn, n_workers, n_iterations):
68-
barrier = threading.Barrier(n_workers)
69-
original_switch = sys.getswitchinterval()
70-
sys.setswitchinterval(0.000001)
71-
7268
@functools.wraps(fn)
7369
def inner(*args, **kwargs):
7470
errors = []
7571
skip = None
7672
failed = None
77-
78-
def closure(*args, **kwargs):
79-
for _ in range(n_iterations):
80-
barrier.wait()
81-
try:
82-
fn(*args, **kwargs)
83-
except Warning:
84-
pass
85-
except Exception as e:
86-
errors.append(e)
87-
except _pytest.outcomes.Skipped as s:
88-
nonlocal skip
89-
skip = s.msg
90-
except _pytest.outcomes.Failed as f:
91-
nonlocal failed
92-
failed = f
93-
94-
workers = []
95-
for _ in range(0, n_workers):
96-
worker_kwargs = kwargs
97-
workers.append(
98-
threading.Thread(target=closure, args=args, kwargs=worker_kwargs)
99-
)
100-
101-
num_completed = 0
73+
barrier = threading.Barrier(n_workers)
74+
original_switch = sys.getswitchinterval()
10275
try:
103-
for worker in workers:
104-
worker.start()
105-
num_completed += 1
106-
finally:
107-
if num_completed < len(workers):
108-
barrier.abort()
76+
sys.setswitchinterval(0.000001)
77+
78+
def closure(*args, **kwargs):
79+
for _ in range(n_iterations):
80+
barrier.wait()
81+
try:
82+
fn(*args, **kwargs)
83+
except Warning:
84+
pass
85+
except Exception as e:
86+
errors.append(e)
87+
except _pytest.outcomes.Skipped as s:
88+
nonlocal skip
89+
skip = s.msg
90+
except _pytest.outcomes.Failed as f:
91+
nonlocal failed
92+
failed = f
93+
94+
workers = []
95+
for _ in range(0, n_workers):
96+
worker_kwargs = kwargs
97+
workers.append(
98+
threading.Thread(target=closure, args=args, kwargs=worker_kwargs)
99+
)
100+
101+
num_completed = 0
102+
try:
103+
for worker in workers:
104+
worker.start()
105+
num_completed += 1
106+
finally:
107+
if num_completed < len(workers):
108+
barrier.abort()
109109

110-
for worker in workers:
111-
worker.join()
110+
for worker in workers:
111+
worker.join()
112112

113-
sys.setswitchinterval(original_switch)
113+
finally:
114+
sys.setswitchinterval(original_switch)
114115

115116
if skip is not None:
116117
pytest.skip(skip)

0 commit comments

Comments
 (0)