fix: classify unsent upload connections and omit raw photo filenames [skip ci]
This commit is contained in:
@@ -165,6 +165,23 @@ def test_transport_failure_records_safe_category_without_replay(exception, categ
|
||||
assert s.request.call_count == (3 if category == "connect_timeout" else 1)
|
||||
|
||||
|
||||
def test_connection_establishment_failure_is_unsent_and_bounded(transport_clock):
|
||||
from urllib3.exceptions import MaxRetryError, NewConnectionError
|
||||
|
||||
s = session()
|
||||
s.request.side_effect = requests.ConnectionError(
|
||||
MaxRetryError(None, "/private", NewConnectionError(None, "private"))
|
||||
)
|
||||
c = KokonnaClient("secret", True, s)
|
||||
with pytest.raises(FlowError) as error:
|
||||
c.display(1)
|
||||
assert error.value.code == "CLOUD_UNAVAILABLE"
|
||||
assert error.value.details["write_outcome"] == "not_sent"
|
||||
assert error.value.details["transport_error"] == "connect_error"
|
||||
assert s.request.call_count == 3
|
||||
assert "private" not in str(error.value.details)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("write", [False, True])
|
||||
def test_connect_timeout_retries_then_succeeds(write, transport_clock):
|
||||
s = session({"success": True})
|
||||
|
||||
@@ -7,7 +7,9 @@ from pigway_frame_flow.renderers.photo_caption import render_captioned_photo
|
||||
from pigway_frame_flow.renderers.photo_layout import PhotoLayout, WatermarkLayout
|
||||
|
||||
|
||||
def test_watermark_includes_filename_and_recognized_people(service, monkeypatch):
|
||||
def test_watermark_omits_raw_filename_and_includes_recognized_people(
|
||||
service, monkeypatch
|
||||
):
|
||||
drawn = []
|
||||
original = ImageDraw.ImageDraw.text
|
||||
|
||||
@@ -29,7 +31,7 @@ def test_watermark_includes_filename_and_recognized_people(service, monkeypatch)
|
||||
service.renderer.font,
|
||||
size=(1600, 1200),
|
||||
)
|
||||
assert drawn == ["2026-10-17 · Alice & Bob · Family · one.jpg"]
|
||||
assert drawn == ["2026-10-17 · Alice & Bob · Family"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("size", [(1600, 1200), (1200, 1600)])
|
||||
|
||||
@@ -106,7 +106,7 @@ def test_caption_people_use_actual_membership_and_cache(settings, monkeypatch):
|
||||
|
||||
|
||||
@pytest.mark.parametrize("labels_available", [True, False])
|
||||
def test_api_caption_keeps_filename_and_folder_with_optional_people(
|
||||
def test_api_caption_keeps_folder_and_optional_people_without_filename(
|
||||
service, settings, monkeypatch, labels_available
|
||||
):
|
||||
session(settings)
|
||||
@@ -133,7 +133,7 @@ def test_api_caption_keeps_filename_and_folder_with_optional_people(
|
||||
_, _, caption = provider.read("captions", "1")
|
||||
assert caption["date"] == "2026-10-17"
|
||||
assert caption["title"] == "Family"
|
||||
assert caption["filename"] == "one.jpg"
|
||||
assert "filename" not in caption
|
||||
assert caption.get("people", "") == ("Alice & Bob" if labels_available else "")
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user