From cfd87127d1816e16bb48e083d70c21e59289f166 Mon Sep 17 00:00:00 2001 From: Stefan <96178532+stefan6419846@users.noreply.github.com> Date: Sat, 6 Jan 2024 21:03:48 +0100 Subject: [PATCH] TST: Correctly close temporary files (#2396) Improvement for #2379 to use a common method and appropriately close the temporary files. Fixes #2394 --- tests/test_writer.py | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/tests/test_writer.py b/tests/test_writer.py index cf796b85b..4aca59010 100644 --- a/tests/test_writer.py +++ b/tests/test_writer.py @@ -44,6 +44,14 @@ GHOSTSCRIPT_BINARY = shutil.which("gs") +def _get_write_target(convert) -> Any: + target = convert + if callable(convert): + with NamedTemporaryFile(suffix=".pdf", delete=False) as temporary: + target = temporary.name + return target + + def test_writer_exception_non_binary(tmp_path, caplog): src = RESOURCE_ROOT / "pdflatex-outline.pdf" @@ -223,14 +231,8 @@ def writer_operate(writer: PdfWriter) -> None: ], ) def test_writer_operations_by_traditional_usage(convert, needs_cleanup): - if callable(convert): - with NamedTemporaryFile(suffix=".pdf", delete=False) as fo: - write_data_here = convert(fo.name) - else: - write_data_here = convert - + write_data_here = _get_write_target(convert) writer = PdfWriter() - writer_operate(writer) # finally, write "output" to pypdf-output.pdf @@ -254,11 +256,7 @@ def test_writer_operations_by_traditional_usage(convert, needs_cleanup): ], ) def test_writer_operations_by_semi_traditional_usage(convert, needs_cleanup): - if callable(convert): - with NamedTemporaryFile(suffix=".pdf", delete=False) as fo: - write_data_here = convert(fo.name) - else: - write_data_here = convert + write_data_here = _get_write_target(convert) with PdfWriter() as writer: writer_operate(writer) @@ -283,12 +281,10 @@ def test_writer_operations_by_semi_traditional_usage(convert, needs_cleanup): (BytesIO(), False), ], ) -def test_writer_operations_by_semi_new_traditional_usage(convert, needs_cleanup): - if callable(convert): - with NamedTemporaryFile(suffix=".pdf", delete=False) as fo: - write_data_here = convert(fo.name) - else: - write_data_here = convert +def test_writer_operations_by_semi_new_traditional_usage( + convert, needs_cleanup +): + write_data_here = _get_write_target(convert) with PdfWriter() as writer: writer_operate(writer) @@ -309,11 +305,7 @@ def test_writer_operations_by_semi_new_traditional_usage(convert, needs_cleanup) ], ) def test_writer_operation_by_new_usage(convert, needs_cleanup): - if callable(convert): - with NamedTemporaryFile(suffix=".pdf", delete=False) as fo: - write_data_here = convert(fo.name) - else: - write_data_here = convert + write_data_here = _get_write_target(convert) # This includes write "output" to pypdf-output.pdf with PdfWriter(write_data_here) as writer: