2024-11-20 00:02:04 -08:00
|
|
|
import pytest
|
|
|
|
|
import sqlite3
|
2026-03-30 23:17:30 -07:00
|
|
|
import os
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _vec_debug():
|
|
|
|
|
db = sqlite3.connect(":memory:")
|
|
|
|
|
db.enable_load_extension(True)
|
|
|
|
|
db.load_extension("dist/vec0")
|
|
|
|
|
db.enable_load_extension(False)
|
|
|
|
|
return db.execute("SELECT vec_debug()").fetchone()[0]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _has_build_flag(flag):
|
|
|
|
|
return flag in _vec_debug().split("Build flags:")[-1]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def pytest_collection_modifyitems(config, items):
|
|
|
|
|
has_ivf = _has_build_flag("ivf")
|
|
|
|
|
if has_ivf:
|
|
|
|
|
return
|
|
|
|
|
skip_ivf = pytest.mark.skip(reason="IVF not enabled (compile with -DSQLITE_VEC_EXPERIMENTAL_IVF_ENABLE=1)")
|
|
|
|
|
ivf_prefixes = ("test-ivf",)
|
|
|
|
|
for item in items:
|
|
|
|
|
if any(item.fspath.basename.startswith(p) for p in ivf_prefixes):
|
|
|
|
|
item.add_marker(skip_ivf)
|
2024-11-20 00:02:04 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture()
|
|
|
|
|
def db():
|
|
|
|
|
db = sqlite3.connect(":memory:")
|
|
|
|
|
db.row_factory = sqlite3.Row
|
|
|
|
|
db.enable_load_extension(True)
|
|
|
|
|
db.load_extension("dist/vec0")
|
|
|
|
|
db.enable_load_extension(False)
|
|
|
|
|
return db
|