Skip to content

Commit cfd8712

Browse files
TST: Correctly close temporary files (#2396)
Improvement for #2379 to use a common method and appropriately close the temporary files. Fixes #2394
1 parent e411b76 commit cfd8712

File tree

1 file changed

+15
-23
lines changed

1 file changed

+15
-23
lines changed

tests/test_writer.py

+15-23
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,14 @@
4444
GHOSTSCRIPT_BINARY = shutil.which("gs")
4545

4646

47+
def _get_write_target(convert) -> Any:
48+
target = convert
49+
if callable(convert):
50+
with NamedTemporaryFile(suffix=".pdf", delete=False) as temporary:
51+
target = temporary.name
52+
return target
53+
54+
4755
def test_writer_exception_non_binary(tmp_path, caplog):
4856
src = RESOURCE_ROOT / "pdflatex-outline.pdf"
4957

@@ -223,14 +231,8 @@ def writer_operate(writer: PdfWriter) -> None:
223231
],
224232
)
225233
def test_writer_operations_by_traditional_usage(convert, needs_cleanup):
226-
if callable(convert):
227-
with NamedTemporaryFile(suffix=".pdf", delete=False) as fo:
228-
write_data_here = convert(fo.name)
229-
else:
230-
write_data_here = convert
231-
234+
write_data_here = _get_write_target(convert)
232235
writer = PdfWriter()
233-
234236
writer_operate(writer)
235237

236238
# finally, write "output" to pypdf-output.pdf
@@ -254,11 +256,7 @@ def test_writer_operations_by_traditional_usage(convert, needs_cleanup):
254256
],
255257
)
256258
def test_writer_operations_by_semi_traditional_usage(convert, needs_cleanup):
257-
if callable(convert):
258-
with NamedTemporaryFile(suffix=".pdf", delete=False) as fo:
259-
write_data_here = convert(fo.name)
260-
else:
261-
write_data_here = convert
259+
write_data_here = _get_write_target(convert)
262260

263261
with PdfWriter() as writer:
264262
writer_operate(writer)
@@ -283,12 +281,10 @@ def test_writer_operations_by_semi_traditional_usage(convert, needs_cleanup):
283281
(BytesIO(), False),
284282
],
285283
)
286-
def test_writer_operations_by_semi_new_traditional_usage(convert, needs_cleanup):
287-
if callable(convert):
288-
with NamedTemporaryFile(suffix=".pdf", delete=False) as fo:
289-
write_data_here = convert(fo.name)
290-
else:
291-
write_data_here = convert
284+
def test_writer_operations_by_semi_new_traditional_usage(
285+
convert, needs_cleanup
286+
):
287+
write_data_here = _get_write_target(convert)
292288

293289
with PdfWriter() as writer:
294290
writer_operate(writer)
@@ -309,11 +305,7 @@ def test_writer_operations_by_semi_new_traditional_usage(convert, needs_cleanup)
309305
],
310306
)
311307
def test_writer_operation_by_new_usage(convert, needs_cleanup):
312-
if callable(convert):
313-
with NamedTemporaryFile(suffix=".pdf", delete=False) as fo:
314-
write_data_here = convert(fo.name)
315-
else:
316-
write_data_here = convert
308+
write_data_here = _get_write_target(convert)
317309

318310
# This includes write "output" to pypdf-output.pdf
319311
with PdfWriter(write_data_here) as writer:

0 commit comments

Comments
 (0)