Skip to content

Commit 3c3d8ee

Browse files
authored
Upgrade Tests to use pinned Ubuntu, Postgres in CI and work with Pytest 9 (#1349)
- Pin ubuntu and postgres to latest stable version in CI test runners - Remove pytest marks from DB fixtures for pytest 9 compatibility
1 parent f285132 commit 3c3d8ee

4 files changed

Lines changed: 21 additions & 34 deletions

File tree

.github/workflows/run_evals.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ jobs:
8585

8686
services:
8787
postgres:
88-
image: ankane/pgvector
88+
image: pgvector/pgvector:pg18
8989
env:
9090
POSTGRES_PASSWORD: postgres
9191
POSTGRES_USER: postgres

.github/workflows/test.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
test:
3131
name: Run Tests
3232
runs-on: ubuntu-latest
33-
container: ubuntu:latest
33+
container: ubuntu:26.04
3434
strategy:
3535
fail-fast: false
3636
matrix:
@@ -41,7 +41,7 @@ jobs:
4141

4242
services:
4343
postgres:
44-
image: ankane/pgvector
44+
image: pgvector/pgvector:pg18
4545
env:
4646
POSTGRES_PASSWORD: postgres
4747
POSTGRES_USER: postgres
@@ -66,13 +66,13 @@ jobs:
6666
env:
6767
DEBIAN_FRONTEND: noninteractive
6868
run: |
69-
apt update && apt install -y git libegl1 sqlite3 libsqlite3-dev libsqlite3-0 ffmpeg libsm6 libxext6
69+
apt update && apt install -y git libegl1 libgl1 sqlite3 libsqlite3-dev libsqlite3-0 ffmpeg libsm6 libxext6
7070
7171
- name: ⬇️ Install Postgres
7272
env:
7373
DEBIAN_FRONTEND: noninteractive
7474
run : |
75-
apt install -y postgresql postgresql-client && apt install -y postgresql-server-dev-16
75+
apt install -y postgresql postgresql-client postgresql-server-dev-all
7676
7777
- name: ⬇️ Install Application
7878
env:

tests/conftest.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,13 @@ def search_config():
6464
)
6565

6666

67-
@pytest.mark.django_db
6867
@pytest.fixture
6968
def default_user():
7069
user = UserFactory()
7170
SubscriptionFactory(user=user)
7271
return user
7372

7473

75-
@pytest.mark.django_db
7674
@pytest.fixture
7775
def default_user2():
7876
if KhojUser.objects.filter(username="default").exists():
@@ -87,7 +85,6 @@ def default_user2():
8785
return user
8886

8987

90-
@pytest.mark.django_db
9188
@pytest.fixture
9289
def default_user3():
9390
"""
@@ -105,7 +102,6 @@ def default_user3():
105102
return user
106103

107104

108-
@pytest.mark.django_db
109105
@pytest.fixture
110106
def default_user4():
111107
"""
@@ -123,7 +119,6 @@ def default_user4():
123119
return user
124120

125121

126-
@pytest.mark.django_db
127122
@pytest.fixture
128123
def api_user(default_user):
129124
if KhojApiUser.objects.filter(user=default_user).exists():
@@ -136,7 +131,6 @@ def api_user(default_user):
136131
)
137132

138133

139-
@pytest.mark.django_db
140134
@pytest.fixture
141135
def api_user2(default_user2):
142136
if KhojApiUser.objects.filter(user=default_user2).exists():
@@ -149,7 +143,6 @@ def api_user2(default_user2):
149143
)
150144

151145

152-
@pytest.mark.django_db
153146
@pytest.fixture
154147
def api_user3(default_user3):
155148
if KhojApiUser.objects.filter(user=default_user3).exists():
@@ -162,7 +155,6 @@ def api_user3(default_user3):
162155
)
163156

164157

165-
@pytest.mark.django_db
166158
@pytest.fixture
167159
def api_user4(default_user4):
168160
if KhojApiUser.objects.filter(user=default_user4).exists():
@@ -175,14 +167,12 @@ def api_user4(default_user4):
175167
)
176168

177169

178-
@pytest.mark.django_db
179170
@pytest.fixture
180171
def default_openai_chat_model_option():
181172
chat_model = ChatModelFactory(name="gpt-4o-mini", model_type="openai")
182173
return chat_model
183174

184175

185-
@pytest.mark.django_db
186176
@pytest.fixture
187177
def openai_agent():
188178
chat_model = ChatModelFactory(name="gpt-4o-mini", model_type="openai")
@@ -193,7 +183,6 @@ def openai_agent():
193183
)
194184

195185

196-
@pytest.mark.django_db
197186
@pytest.fixture
198187
def default_process_lock():
199188
return ProcessLockFactory()

tests/test_grep_files.py

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,19 @@
1010

1111

1212
@pytest.fixture
13-
@pytest.mark.django_db
14-
@pytest.mark.asyncio
15-
async def default_user():
16-
user, _ = await KhojUser.objects.aget_or_create(
13+
def default_user():
14+
user, _ = KhojUser.objects.get_or_create(
1715
username="test_user",
1816
password="test_password",
1917
email="test@example.com",
2018
)
2119
return user
2220

2321

24-
@pytest.mark.django_db
22+
@pytest.mark.django_db(transaction=True)
2523
@pytest.mark.asyncio
2624
async def test_grep_files_simple_match(default_user: KhojUser):
27-
user = await default_user
25+
user = default_user
2826
await FileObjectAdapters.adelete_all_file_objects(user=user)
2927
# Arrange
3028
await FileObjectAdapters.acreate_file_object(
@@ -50,10 +48,10 @@ async def test_grep_files_simple_match(default_user: KhojUser):
5048
assert "test.txt:3: hello again" in result["compiled"]
5149

5250

53-
@pytest.mark.django_db
51+
@pytest.mark.django_db(transaction=True)
5452
@pytest.mark.asyncio
5553
async def test_grep_files_no_match(default_user: KhojUser):
56-
user = await default_user
54+
user = default_user
5755
await FileObjectAdapters.adelete_all_file_objects(user=user)
5856
# Arrange
5957
await FileObjectAdapters.acreate_file_object(
@@ -78,10 +76,10 @@ async def test_grep_files_no_match(default_user: KhojUser):
7876
assert "No matches found." in result["compiled"]
7977

8078

81-
@pytest.mark.django_db
79+
@pytest.mark.django_db(transaction=True)
8280
@pytest.mark.asyncio
8381
async def test_grep_files_with_path_prefix(default_user: KhojUser):
84-
user = await default_user
82+
user = default_user
8583
await FileObjectAdapters.adelete_all_file_objects(user=user)
8684
# Arrange
8785
await FileObjectAdapters.acreate_file_object(
@@ -114,10 +112,10 @@ async def test_grep_files_with_path_prefix(default_user: KhojUser):
114112
assert "dir2/test2.txt" not in result["compiled"]
115113

116114

117-
@pytest.mark.django_db
115+
@pytest.mark.django_db(transaction=True)
118116
@pytest.mark.asyncio
119117
async def test_grep_files_with_context(default_user: KhojUser):
120-
user = await default_user
118+
user = default_user
121119
await FileObjectAdapters.adelete_all_file_objects(user=user)
122120
# Arrange
123121
await FileObjectAdapters.acreate_file_object(
@@ -149,10 +147,10 @@ async def test_grep_files_with_context(default_user: KhojUser):
149147
assert "line 5" not in result["compiled"]
150148

151149

152-
@pytest.mark.django_db
150+
@pytest.mark.django_db(transaction=True)
153151
@pytest.mark.asyncio
154152
async def test_grep_files_invalid_regex(default_user: KhojUser):
155-
user = await default_user
153+
user = default_user
156154
await FileObjectAdapters.adelete_all_file_objects(user=user)
157155
# Act
158156
results = [
@@ -169,10 +167,10 @@ async def test_grep_files_invalid_regex(default_user: KhojUser):
169167
assert "Invalid regex pattern" in result["compiled"]
170168

171169

172-
@pytest.mark.django_db
170+
@pytest.mark.django_db(transaction=True)
173171
@pytest.mark.asyncio
174172
async def test_grep_files_multiple_files(default_user: KhojUser):
175-
user = await default_user
173+
user = default_user
176174
await FileObjectAdapters.adelete_all_file_objects(user=user)
177175
# Arrange
178176
await FileObjectAdapters.acreate_file_object(
@@ -222,12 +220,12 @@ async def test_grep_files_multiple_files(default_user: KhojUser):
222220
(r"\d{4}-\d{2}-\d{2}.*(sailing|sail|center for boats|captain sailor)", 1, "no flags or anchors"),
223221
],
224222
)
225-
@pytest.mark.django_db
223+
@pytest.mark.django_db(transaction=True)
226224
@pytest.mark.asyncio
227225
async def test_grep_files_financial_entries_regex_patterns(
228226
default_user: KhojUser, regex_pattern: str, expected_matches: int, test_description: str
229227
):
230-
user = await default_user
228+
user = default_user
231229
await FileObjectAdapters.adelete_all_file_objects(user=user)
232230

233231
# Arrange - Create file with financial ledger content that has prefix text

0 commit comments

Comments
 (0)