Skip to content

Commit 18519a0

Browse files
committed
TST: Use buffer instead of opening file many times
See py-pdf#2520, basically this was the last failing (only on windows) test because if the pdfreaders are implicitly opening file streams that don't get closed until they get garbage collected the .unlinks() create file lock errors.
1 parent 0057334 commit 18519a0

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed

tests/test_writer.py

+22-22
Original file line numberDiff line numberDiff line change
@@ -1118,7 +1118,7 @@ def test_append_multiple():
11181118

11191119

11201120
@pytest.mark.samples()
1121-
def test_set_page_label(pdf_file_path):
1121+
def test_set_page_label():
11221122
src = RESOURCE_ROOT / "GeoBase_NHNC1_Data_Model_UML_EN.pdf" # File without labels
11231123
reader = PdfReader(src)
11241124

@@ -1154,8 +1154,9 @@ def test_set_page_label(pdf_file_path):
11541154
writer.set_page_label(11, 11, "/r")
11551155
writer.set_page_label(12, 13, "/R")
11561156
writer.set_page_label(17, 18, "/R")
1157-
writer.write(pdf_file_path)
1158-
assert PdfReader(pdf_file_path).page_labels == expected
1157+
_, buf = writer.write(BytesIO())
1158+
buf.seek(0)
1159+
assert PdfReader(buf).page_labels == expected
11591160

11601161
writer = PdfWriter() # Same labels, different set order
11611162
writer.clone_document_from_reader(reader)
@@ -1165,8 +1166,9 @@ def test_set_page_label(pdf_file_path):
11651166
writer.set_page_label(0, 1, "/r")
11661167
writer.set_page_label(12, 13, "/R")
11671168
writer.set_page_label(11, 11, "/r")
1168-
writer.write(pdf_file_path)
1169-
assert PdfReader(pdf_file_path).page_labels == expected
1169+
_, buf = writer.write(BytesIO())
1170+
buf.seek(0)
1171+
assert PdfReader(buf).page_labels == expected
11701172

11711173
# Tests labels assigned only in the middle
11721174
# Tests label assigned to a range already containing labled ranges
@@ -1176,8 +1178,9 @@ def test_set_page_label(pdf_file_path):
11761178
writer.set_page_label(3, 4, "/a")
11771179
writer.set_page_label(5, 5, "/A")
11781180
writer.set_page_label(2, 6, "/r")
1179-
writer.write(pdf_file_path)
1180-
assert PdfReader(pdf_file_path).page_labels[: len(expected)] == expected
1181+
_, buf = writer.write(BytesIO())
1182+
buf.seek(0)
1183+
assert PdfReader(buf).page_labels[: len(expected)] == expected
11811184

11821185
# Tests labels assigned inside a previously existing range
11831186
expected = ["1", "2", "i", "a", "b", "A", "1", "1", "2"]
@@ -1187,8 +1190,9 @@ def test_set_page_label(pdf_file_path):
11871190
writer.set_page_label(2, 6, "/r")
11881191
writer.set_page_label(3, 4, "/a")
11891192
writer.set_page_label(5, 5, "/A")
1190-
writer.write(pdf_file_path)
1191-
assert PdfReader(pdf_file_path).page_labels[: len(expected)] == expected
1193+
_, buf = writer.write(BytesIO())
1194+
buf.seek(0)
1195+
assert PdfReader(buf).page_labels[: len(expected)] == expected
11921196

11931197
# Tests invalid user input
11941198
writer = PdfWriter()
@@ -1212,7 +1216,6 @@ def test_set_page_label(pdf_file_path):
12121216
):
12131217
writer.set_page_label(0, 5, "/r", start=-1)
12141218

1215-
pdf_file_path.unlink()
12161219

12171220
src = (
12181221
SAMPLE_ROOT / "009-pdflatex-geotopo/GeoTopo.pdf"
@@ -1224,18 +1227,18 @@ def test_set_page_label(pdf_file_path):
12241227
writer = PdfWriter()
12251228
writer.clone_document_from_reader(reader)
12261229
writer.set_page_label(2, 3, "/A")
1227-
writer.write(pdf_file_path)
1228-
assert PdfReader(pdf_file_path).page_labels[: len(expected)] == expected
1230+
_, buf = writer.write(BytesIO())
1231+
buf.seek(0)
1232+
assert PdfReader(buf).page_labels[: len(expected)] == expected
12291233

12301234
# Tests replacing existing lables
12311235
expected = ["A", "B", "1", "1", "2"]
12321236
writer = PdfWriter()
12331237
writer.clone_document_from_reader(reader)
12341238
writer.set_page_label(0, 1, "/A")
1235-
writer.write(pdf_file_path)
1236-
assert PdfReader(pdf_file_path).page_labels[: len(expected)] == expected
1237-
1238-
pdf_file_path.unlink()
1239+
_, buf = writer.write(BytesIO())
1240+
buf.seek(0)
1241+
assert PdfReader(buf).page_labels[: len(expected)] == expected
12391242

12401243
# Tests prefix and start.
12411244
src = RESOURCE_ROOT / "issue-604.pdf" # File without page labels
@@ -1250,7 +1253,7 @@ def test_set_page_label(pdf_file_path):
12501253
writer.set_page_label(11, 21, "/D", prefix="PAP-")
12511254
writer.set_page_label(22, 30, "/D", prefix="FOLL-")
12521255
writer.set_page_label(31, 39, "/D", prefix="HURT-")
1253-
writer.write(pdf_file_path)
1256+
writer.write(BytesIO())
12541257

12551258

12561259
@pytest.mark.enable_socket()
@@ -1452,7 +1455,6 @@ def test_named_dest_page_number():
14521455

14531456

14541457
def test_update_form_fields(tmp_path):
1455-
write_data_here = tmp_path / "out.pdf"
14561458
writer = PdfWriter(clone_from=RESOURCE_ROOT / "FormTestFromOo.pdf")
14571459
writer.update_page_form_field_values(
14581460
writer.pages[0],
@@ -1476,8 +1478,8 @@ def test_update_form_fields(tmp_path):
14761478
auto_regenerate=False,
14771479
)
14781480

1479-
writer.write(write_data_here)
1480-
reader = PdfReader(write_data_here)
1481+
_, buf = writer.write(BytesIO())
1482+
reader = PdfReader(buf)
14811483
flds = reader.get_fields()
14821484
assert flds["CheckBox1"]["/V"] == "/Yes"
14831485
assert flds["CheckBox1"].indirect_reference.get_object()["/AS"] == "/Yes"
@@ -1499,8 +1501,6 @@ def test_update_form_fields(tmp_path):
14991501
assert all(x in flds["RadioGroup1"]["/_States_"] for x in ["/1", "/2", "/3"])
15001502
assert all(x in flds["Liste1"]["/_States_"] for x in ["Liste1", "Liste2", "Liste3"])
15011503

1502-
Path(write_data_here).unlink()
1503-
15041504

15051505
@pytest.mark.enable_socket()
15061506
def test_iss1862():

0 commit comments

Comments
 (0)