From 7f526efeed7b807a3b56f465637bee5dc8a27e3d Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Thu, 18 Apr 2024 22:28:55 +0200 Subject: have data_dir as a placeholder in testing.ini --- testing.ini | 8 +++++--- tests/bootstrap/test_new_instance.py | 15 +++++++++++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/testing.ini b/testing.ini index 4cb95ba..82fddfd 100644 --- a/testing.ini +++ b/testing.ini @@ -13,9 +13,11 @@ pyramid.debug_routematch = false pyramid.default_locale_name = en sqlalchemy.url = sqlite:///%(here)s/testing.sqlite -# In the pytest tests, this is overwritten with a temporary directory, but we -# should still set a value for the bootstrapping test. -fietsboek.data_dir = %(here)s/data +# The pytest tests usually overwrite this with a temporary directory. Since +# this is cleaned on test teardown, we don't want to accidentally delete data +# that should not be deleted. Therefore, we specifically do not set a directory +# here, and leave a placeholder to be replaced properly by the tests. +# %% fietsboek.data_dir %% redis.url = redis://localhost fietsboek.default_tile_layers = diff --git a/tests/bootstrap/test_new_instance.py b/tests/bootstrap/test_new_instance.py index e136579..dc3076e 100644 --- a/tests/bootstrap/test_new_instance.py +++ b/tests/bootstrap/test_new_instance.py @@ -39,6 +39,18 @@ def install_fietsboek(venv_path: Path) -> Path: return venv_path / "bin" +def create_config(config_name: Path): + """Copies the testing.ini config and fills in the placeholders. + + :param config_name: Path to the resulting config. + """ + shutil.copy(REPO_BASE / "testing.ini", config_name) + config = config_name.read_text() + config = config.replace("# %% fietsboek.data_dir %%", "fietsboek.data_dir = %(here)s/data") + config_name.write_text(config) + Path("data").mkdir() + + def test_setup_via_fietsupdate(tmpdir): with chdir(tmpdir): # We create a new temporary virtual environment with a fresh install, just @@ -47,8 +59,7 @@ def test_setup_via_fietsupdate(tmpdir): binaries_path = install_fietsboek(tmpdir / "venv") LOGGER.info("Creating a test configuration") - shutil.copy(REPO_BASE / "testing.ini", "testing.ini") - Path("data").mkdir() + create_config(Path("testing.ini")) # Try to run the migrations subprocess.check_call( -- cgit v1.2.3