from .utils import login
+fresh_db = None
+
@pytest.fixture
def app():
+ global fresh_db
# Use temporary data directory
with tempfile.TemporaryDirectory() as data_dir:
lsp.datadir.set_data_dir(data_dir)
# Initialize Database
with lsp.app.app_context():
- db = sqlite3.connect(lsp.datadir.get_db_path())
- with lsp.app.open_resource('sql/schema.sql', mode='r') as f:
- db.cursor().executescript(f.read())
- db.commit()
- db.close()
+ if fresh_db:
+ # Already cached a fresh database file, just reuse it
+ with open(lsp.datadir.get_db_path(), "wb") as dbfile:
+ dbfile.write(fresh_db)
+ else:
+ # No fresh db cached, create a new one (first test)
+ db = sqlite3.connect(lsp.datadir.get_db_path())
+ with lsp.app.open_resource('sql/schema.sql', mode='r') as f:
+ db.cursor().executescript(f.read())
+ db.commit()
+ db.close()
+
+ # Cache database file
+ with open(lsp.datadir.get_db_path(), "rb") as dbfile:
+ fresh_db = dbfile.read()
yield lsp.app