aboutsummaryrefslogtreecommitdiff
path: root/tests/conftest.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/conftest.py')
-rw-r--r--tests/conftest.py21
1 files changed, 13 insertions, 8 deletions
diff --git a/tests/conftest.py b/tests/conftest.py
index 732c8d2..add3b3f 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -60,26 +60,31 @@ def dbengine(app_settings, ini_file):
def data_manager(app_settings):
return DataManager(Path(app_settings["fietsboek.data_dir"]))
+
+def clean_directory_content(path: Path):
+ if path.is_dir():
+ shutil.rmtree(path)
+ path.mkdir()
+
+
@pytest.fixture(autouse=True)
def _cleanup_data(app_settings):
yield
engine = models.get_engine(app_settings)
- db_meta = inspect(engine)
+ # Load all table names beforehand, as has_table() would cause lock conflicts
+ tables = inspect(engine).get_table_names()
with engine.begin() as connection:
for table in reversed(Base.metadata.sorted_tables):
# The unit tests don't always set up the tables, so be gentle when
# tearing them down
- if db_meta.has_table(table.name):
+ if table.name in tables:
connection.execute(table.delete())
# The unit tests also often don't have a data directory, so be gentle here as well
if "fietsboek.data_dir" in app_settings:
data_dir = Path(app_settings["fietsboek.data_dir"])
- if (data_dir / "tracks").is_dir():
- shutil.rmtree(data_dir / "tracks")
- (data_dir / "tracks").mkdir()
- if (data_dir / "users").is_dir():
- shutil.rmtree(data_dir / "users")
- (data_dir / "users").mkdir()
+ clean_directory_content(data_dir / "tracks")
+ clean_directory_content(data_dir / "users")
+ clean_directory_content(data_dir / "journeys")
@pytest.fixture(scope='module')
def app(app_settings, dbengine, tmp_path_factory):