shinka-backup / ccevolve /baselines /shinkaevolve /tests /test_database_no_api_keys.py
JustinTX's picture
Add files using upload-large-folder tool
d7b3a74 verified
import asyncio
import tempfile
from pathlib import Path
from shinka.database import DatabaseConfig, Program, ProgramDatabase
from shinka.database.async_dbase import AsyncProgramDatabase
def _program(program_id: str) -> Program:
return Program(
id=program_id,
code="def f():\n return 1\n",
correct=True,
combined_score=1.0,
generation=0,
island_idx=0,
)
def test_program_database_init_without_openai_key(monkeypatch):
"""DB construction should not require API credentials."""
monkeypatch.delenv("OPENAI_API_KEY", raising=False)
with tempfile.TemporaryDirectory() as tmpdir:
db_path = Path(tmpdir) / "no_key_init.db"
db = ProgramDatabase(config=DatabaseConfig(db_path=str(db_path), num_islands=1))
try:
db.add(_program("p0"))
assert db.get("p0") is not None
finally:
db.close()
def test_async_db_add_without_openai_key_when_embeddings_disabled(monkeypatch):
"""Async wrapper should preserve disabled embedding mode in worker DBs."""
monkeypatch.delenv("OPENAI_API_KEY", raising=False)
async def _run():
with tempfile.TemporaryDirectory() as tmpdir:
db_path = Path(tmpdir) / "no_key_async.db"
sync_db = ProgramDatabase(
config=DatabaseConfig(db_path=str(db_path), num_islands=1),
embedding_model="",
)
async_db = AsyncProgramDatabase(sync_db=sync_db)
try:
await async_db.add_program_async(_program("async-p0"))
assert sync_db.get("async-p0") is not None
finally:
await async_db.close_async()
sync_db.close()
asyncio.run(_run())