conftest.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import os
  2. import pytest
  3. from sqlalchemy import MetaData, create_engine
  4. from sqlalchemy.orm import sessionmaker
  5. @pytest.fixture(autouse=True)
  6. def clean_db():
  7. db_path = os.path.expanduser("~/.embedchain/embedchain.db")
  8. db_url = f"sqlite:///{db_path}"
  9. engine = create_engine(db_url)
  10. metadata = MetaData()
  11. metadata.reflect(bind=engine) # Reflect schema from the engine
  12. Session = sessionmaker(bind=engine)
  13. session = Session()
  14. try:
  15. # Iterate over all tables in reversed order to respect foreign keys
  16. for table in reversed(metadata.sorted_tables):
  17. if table.name != "alembic_version": # Skip the Alembic version table
  18. session.execute(table.delete())
  19. session.commit()
  20. except Exception as e:
  21. session.rollback()
  22. print(f"Error cleaning database: {e}")
  23. finally:
  24. session.close()
  25. @pytest.fixture(autouse=True)
  26. def disable_telemetry():
  27. os.environ["EC_TELEMETRY"] = "false"
  28. yield
  29. del os.environ["EC_TELEMETRY"]