Do not make the ingest folder
A folder that Bindery made hid a missing volume mount. The books went to a folder inside the container, and CWA never saw them. A missing folder is now an error in the log at the start, and each upload fails with a message that names the mount.
This commit is contained in:
@@ -21,6 +21,7 @@ from bindery.store import Store
|
||||
@pytest.fixture(autouse=True)
|
||||
def isolated(client, jobs, monkeypatch, tmp_path):
|
||||
monkeypatch.setattr(config, "INGEST_DIR", tmp_path / "ingest")
|
||||
config.INGEST_DIR.mkdir()
|
||||
monkeypatch.setattr(config, "TMP_DIR", tmp_path / "tmp")
|
||||
config.TMP_DIR.mkdir()
|
||||
monkeypatch.setattr(config, "CWA_URL", "")
|
||||
@@ -151,7 +152,7 @@ def test_build_without_ingest_succeeds_and_keeps_the_book_local(monkeypatch, tmp
|
||||
assert story["status"] == "ok"
|
||||
assert story["ingested_at"] == ("2026-01-01" if existing else None)
|
||||
assert list(config.TMP_DIR.glob(f"story-{story_id}-*.epub"))
|
||||
assert not (tmp_path / "ingest").exists()
|
||||
assert not list((tmp_path / "ingest").iterdir())
|
||||
details = orchestrator.story_details(story_id)
|
||||
assert details["uploads_paused"] is True
|
||||
assert details["story"]["upload_held"] is True
|
||||
@@ -184,7 +185,7 @@ def test_linking_off_exports_books_and_respects_pause(monkeypatch, tmp_path, con
|
||||
assert orchestrator.store.get_setting(story_id, "upload_held") is None
|
||||
else:
|
||||
assert message.startswith("Not sent.")
|
||||
assert not config.INGEST_DIR.exists()
|
||||
assert not list(config.INGEST_DIR.iterdir())
|
||||
assert orchestrator.store.get_setting(story_id, "upload_held") is True
|
||||
|
||||
|
||||
@@ -221,7 +222,7 @@ def test_enabling_linking_restores_the_saved_approval_preference(library):
|
||||
assert orchestrator.get_settings()["hold_new_links"] is True
|
||||
assert orchestrator.story_details(story_id)["story"]["needs_approval"] is True
|
||||
assert "Approve link" in rebuild(story_id)
|
||||
assert not config.INGEST_DIR.exists()
|
||||
assert not list(config.INGEST_DIR.iterdir())
|
||||
|
||||
|
||||
def test_linking_off_exports_every_rebuild_without_an_id_or_approval():
|
||||
@@ -294,7 +295,7 @@ def test_paused_unlinked_update_does_not_raise_not_found(monkeypatch):
|
||||
story_id = add_story(ingested_at="2026-01-01")
|
||||
assert rebuild(story_id) == "Not sent. Turn off pause to send."
|
||||
assert orchestrator.store.get_story(story_id)["status"] == "ok"
|
||||
assert not config.INGEST_DIR.exists()
|
||||
assert not list(config.INGEST_DIR.iterdir())
|
||||
|
||||
|
||||
def test_enabling_linking_rebuilds_held_books_and_matches_again(monkeypatch, jobs, tmp_path):
|
||||
@@ -335,7 +336,7 @@ def test_upload_settings_matrix(client, link_books, hold_new_links, paused, save
|
||||
assert listed["upload_held"] is pending
|
||||
assert listed["approval_held"] is (link_books and hold_new_links and not paused)
|
||||
assert bool(orchestrator.store.get_setting(story_id, "upload_held")) is pending
|
||||
assert config.INGEST_DIR.exists() is (not pending)
|
||||
assert bool(list(config.INGEST_DIR.iterdir())) is (not pending)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("missing_ingest", [False, True])
|
||||
@@ -376,7 +377,7 @@ def test_resuming_uploads_does_not_bypass_approval(client, jobs, library):
|
||||
assert client.get("/api/stories").json[0]["approval_held"] is True
|
||||
assert "Approve link" in orchestrator._run_rebuild(jobs.get_next())
|
||||
assert orchestrator.store.get_setting(story_id, "upload_held") is True
|
||||
assert not config.INGEST_DIR.exists()
|
||||
assert not list(config.INGEST_DIR.iterdir())
|
||||
|
||||
|
||||
def test_missing_library_connection_is_not_an_approval_hold(client, monkeypatch):
|
||||
|
||||
Reference in New Issue
Block a user