Skip to content

Commit 43f1d9a

Browse files
committed
Test Python thread safety with pytest-run-parallel
Signed-off-by: Christian Clauss <cclauss@me.com>
1 parent 22c923b commit 43f1d9a

File tree

4 files changed

+18
-1
lines changed

4 files changed

+18
-1
lines changed

.github/workflows/integration.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
pip install -U pip setuptools wheel
4646
pip install -r dev_requirements.txt
4747
python setup.py build_ext --inplace
48-
python -m pytest
48+
python -m pytest --iterations=8 --parallel-threads=auto
4949
- name: build and install the wheel
5050
run: |
5151
python setup.py bdist_wheel

dev_requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ black==24.3.0
22
flake8==4.0.1
33
isort==5.10.1
44
pytest>=7.0.0
5+
pytest-run-parallel>=0.7.1
56
setuptools
67
vulture>=2.3.0
78
wheel>=0.30.0

tests/test_gc.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import gc
22

3+
import pytest
4+
35
import libvalkey
46

57

8+
@pytest.mark.iterations(1)
9+
@pytest.mark.thread_unsafe
610
def test_reader_gc():
711
class A:
812
def __init__(self):

tests/test_reader.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,8 @@ def test_dict(reader):
174174
assert {b"radius": 4.5, b"diameter": 9} == reader.gets()
175175

176176

177+
@pytest.mark.iterations(1)
178+
@pytest.mark.thread_unsafe
177179
def test_set_with_nested_dict(reader):
178180
reader.feed(b"~2\r\n+tangerine\r\n%1\r\n+a\r\n:1\r\n")
179181
if reader.convertSetsToLists:
@@ -196,6 +198,8 @@ def test_map_inside_list(reader):
196198
assert [{b"a": 1}] == reader.gets()
197199

198200

201+
@pytest.mark.iterations(1)
202+
@pytest.mark.thread_unsafe
199203
def test_map_inside_set(reader):
200204
reader.feed(b"~1\r\n%1\r\n+a\r\n:1\r\n")
201205
if reader.convertSetsToLists:
@@ -206,6 +210,8 @@ def test_map_inside_set(reader):
206210
reader.gets()
207211

208212

213+
@pytest.mark.iterations(1)
214+
@pytest.mark.thread_unsafe
209215
def test_set_as_map_key(reader):
210216
reader.feed(b"%1\r\n~1\r\n:1\r\n:2\r\n")
211217
with pytest.raises(TypeError):
@@ -388,6 +394,8 @@ def test_feed_bytearray(reader):
388394
assert b"ok" == reader.gets()
389395

390396

397+
@pytest.mark.iterations(1)
398+
@pytest.mark.thread_unsafe
391399
def test_maxbuf(reader):
392400
defaultmaxbuf = reader.getmaxbuf()
393401
reader.setmaxbuf(0)
@@ -400,6 +408,8 @@ def test_maxbuf(reader):
400408
reader.setmaxbuf(-4)
401409

402410

411+
@pytest.mark.iterations(1)
412+
@pytest.mark.thread_unsafe
403413
def test_len(reader):
404414
assert reader.len() == 0
405415
data = b"+ok\r\n"
@@ -416,6 +426,8 @@ def test_len(reader):
416426
assert reader.len() == 5
417427

418428

429+
@pytest.mark.iterations(1)
430+
@pytest.mark.thread_unsafe
419431
def test_reader_has_data(reader):
420432
assert reader.has_data() is False
421433
data = b"+ok\r\n"

0 commit comments

Comments
 (0)