Skip to content

Commit b0d4cc2

Browse files
committed
t test pypy
1 parent 9187508 commit b0d4cc2

2 files changed

Lines changed: 50 additions & 35 deletions

File tree

.github/workflows/test.yml

Lines changed: 1 addition & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,10 @@ jobs:
1515

1616
strategy:
1717
matrix:
18-
os: [windows-latest]
19-
pyver: ['3.13', '3.12', '3.11', '3.10', '3.9', '3.8']
20-
arch: [x64]
2118
include:
22-
- os: windows-latest
23-
pyver: '3.13'
24-
arch: x86
2519
- os: ubuntu-latest
2620
pyver: '3.13'
2721
arch: x64
28-
- os: macos-latest
29-
pyver: '3.13'
30-
arch: arm64
31-
32-
# other implementations
33-
- os: ubuntu-latest
34-
pyver: '3.13t'
35-
arch: x64
3622
- os: ubuntu-latest
3723
pyver: 'pypy-3.11'
3824
arch: x64
@@ -53,25 +39,5 @@ jobs:
5339
sudo apt update
5440
sudo apt install -y libxml2-dev libxslt1-dev
5541
56-
- name: Install package
57-
if: matrix.pyver != '3.13t'
58-
run: pip install .[adhoc_ssl]
59-
60-
# A dependency of cryptography does not support free-threaded
61-
- name: Install package (free-threaded)
62-
if: matrix.pyver == '3.13t'
63-
run: pip install .
64-
6542
- name: Run tests
66-
run: python -m unittest
67-
68-
- name: Ensure all dependency can be installed
69-
if: matrix.pyver != '3.8'
70-
run: pip install --group dev
71-
72-
- name: Ensure all dependency can be installed (py38)
73-
if: matrix.pyver == '3.8'
74-
run: |
75-
pip install dependency-groups
76-
dependency-groups dev -o requirements.txt
77-
pip install -r requirements.txt
43+
run: python -m unittest -v -k test_pypy

tests/test_pypy.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import unittest
2+
3+
class Lock:
4+
def __init__(self, key):
5+
self.key = key
6+
7+
def __enter__(self):
8+
self.acquire()
9+
return self
10+
11+
def __exit__(self, exc_type, exc_value, traceback):
12+
self.release()
13+
14+
def acquire(self):
15+
print(f'acquire lock {self.key!r}')
16+
17+
def release(self):
18+
print(f'release lock {self.key!r}')
19+
20+
class DataBase(list):
21+
def __init__(self, name, *args):
22+
super().__init__(*args)
23+
self.name = name
24+
25+
def search(db, query, limit=-1):
26+
results = search_db(db, query)
27+
if limit >= 0:
28+
i = 0
29+
for item in results:
30+
i += 1
31+
if i > limit:
32+
break
33+
yield item
34+
return
35+
yield from results
36+
37+
def search_db(db, query):
38+
lock = Lock(db.name)
39+
with lock:
40+
for item in db:
41+
# do something to filter item
42+
43+
yield item
44+
45+
class TestSearch(unittest.TestCase):
46+
def test_search(self):
47+
db1 = DataBase('db1', ['item1', 'item2'])
48+
list(search(db1, 'query1', 1))
49+
list(search(db1, 'query2'))

0 commit comments

Comments
 (0)