Respect maintainer preference against new PR test files

A collaborator explicitly asked that test files not be included on the PR. This follow-up keeps the file reindex safety fix intact while dropping the newly added repository test file, and relies on focused local verification outside the tracked diff instead.

Constraint: Keep the data-loss fix intact while removing the only PR artifact a reviewer objected to
Rejected: Leave the new test file in place and wait | direct reviewer feedback is already available and easy to satisfy
Confidence: medium
Scope-risk: narrow
Reversibility: clean
Directive: For this PR, preserve the reindex ordering fix but avoid re-adding a dedicated repository test file unless a maintainer explicitly asks for one
Tested: python3 -m py_compile backend/open_webui/routers/files.py backend/open_webui/utils/knowledge_collections.py; focused local harness for reindex_file_in_collection success/failure ordering
Not-tested: Repository pytest suite after dropping the tracked test file
This commit is contained in:
JunghwanNA 2026-04-17 13:13:55 +09:00
parent b2fce411c8
commit 5c3b95838d

View file

@ -1,86 +0,0 @@
import asyncio
from types import SimpleNamespace
from open_webui.utils.knowledge_collections import reindex_file_in_collection
def test_reindex_file_in_collection_deletes_old_ids_only_after_success():
calls = []
class DummyVectorDB:
async def query(self, collection_name, filter, limit=None):
calls.append(('query', collection_name, filter))
return SimpleNamespace(ids=[['old-1', 'old-2']])
async def delete(self, collection_name, ids=None, filter=None):
calls.append(('delete', collection_name, ids, filter))
async def fake_process_file(request, form, user, db):
calls.append(('process_file', form.file_id, form.collection_name))
class DummyProcessFileForm:
def __init__(self, file_id, collection_name=None):
self.file_id = file_id
self.collection_name = collection_name
asyncio.run(
reindex_file_in_collection(
request=object(),
file_id='file-1',
collection_name='kb-1',
user=object(),
db=None,
process_file_form_factory=DummyProcessFileForm,
process_file_func=fake_process_file,
vector_db_client=DummyVectorDB(),
)
)
assert calls == [
('query', 'kb-1', {'file_id': 'file-1'}),
('process_file', 'file-1', 'kb-1'),
('delete', 'kb-1', ['old-1', 'old-2'], None),
]
def test_reindex_file_in_collection_preserves_old_ids_when_rebuild_fails():
calls = []
class DummyVectorDB:
async def query(self, collection_name, filter, limit=None):
calls.append(('query', collection_name, filter))
return SimpleNamespace(ids=[['old-1']])
async def delete(self, collection_name, ids=None, filter=None):
calls.append(('delete', collection_name, ids, filter))
async def fake_process_file(request, form, user, db):
calls.append(('process_file', form.file_id, form.collection_name))
raise RuntimeError('reindex failed')
class DummyProcessFileForm:
def __init__(self, file_id, collection_name=None):
self.file_id = file_id
self.collection_name = collection_name
try:
asyncio.run(
reindex_file_in_collection(
request=object(),
file_id='file-1',
collection_name='kb-1',
user=object(),
db=None,
process_file_form_factory=DummyProcessFileForm,
process_file_func=fake_process_file,
vector_db_client=DummyVectorDB(),
)
)
raise AssertionError('Expected reindex_file_in_collection to raise RuntimeError')
except RuntimeError as exc:
assert str(exc) == 'reindex failed'
assert calls == [
('query', 'kb-1', {'file_id': 'file-1'}),
('process_file', 'file-1', 'kb-1'),
]