Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TST: Remove files after tests ran #1286

Merged
merged 1 commit into from
Aug 27, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 4 additions & 8 deletions tests/bench.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import os
from pathlib import Path

import PyPDF2
Expand Down Expand Up @@ -50,7 +49,7 @@ def test_page_operations(benchmark):
benchmark(page_ops, "libreoffice-writer-password.pdf", "openpassword")


def merge():
def merge(tmp_path):
pdf_path = RESOURCE_ROOT / "crazyones.pdf"
outline = RESOURCE_ROOT / "pdflatex-outline.pdf"
pdf_forms = RESOURCE_ROOT / "pdflatex-forms.pdf"
Expand Down Expand Up @@ -83,12 +82,12 @@ def merge():
merger.set_page_layout("/SinglePage")
merger.set_page_mode("/UseThumbs")

tmp_path = "dont_commit_merged.pdf"
merger.write(tmp_path)
write_path = tmp_path / "dont_commit_merged.pdf"
merger.write(write_path)
merger.close()

# Check if outline is correct
reader = PyPDF2.PdfReader(tmp_path)
reader = PyPDF2.PdfReader(write_path)
assert [
el.title for el in reader._get_outline() if isinstance(el, Destination)
] == [
Expand All @@ -105,9 +104,6 @@ def merge():
"True",
]

# Clean up
os.remove(tmp_path)


def test_merge(benchmark):
"""
Expand Down
54 changes: 0 additions & 54 deletions tests/test_basic_features.py

This file was deleted.

16 changes: 11 additions & 5 deletions tests/test_generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -579,17 +579,23 @@ def test_name_object_read_from_stream_unicode_error(): # L588
page.extract_text()


def test_bool_repr():
def test_bool_repr(tmp_path):
url = "https://corpora.tika.apache.org/base/docs/govdocs1/932/932449.pdf"
name = "tika-932449.pdf"

reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
with open("tmp-fields-report.txt", "w") as fp:
write_path = tmp_path / "tmp-fields-report.txt"
with open(write_path, "w") as fp:
fields = reader.get_fields(fileobj=fp)
assert fields

# cleanup
os.remove("tmp-fields-report.txt")
assert list(fields.keys()) == ["USGPOSignature"]
with open(write_path) as fp:
data = fp.read()
assert data.startswith(
"Field Name: USGPOSignature\nField Type: Signature\nField Flags: 1\n"
"Value: {'/Type': '/Sig', '/Filter': '/Adobe.PPKLite', "
"'/SubFilter':"
)


@patch("PyPDF2._reader.logger_warning")
Expand Down
75 changes: 54 additions & 21 deletions tests/test_workflows.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,49 @@
sys.path.append(str(PROJECT_ROOT))


def test_basic_features(tmp_path):
pdf_path = RESOURCE_ROOT / "crazyones.pdf"
reader = PdfReader(pdf_path)
writer = PdfWriter()

assert len(reader.pages) == 1

# add page 1 from input1 to output document, unchanged
writer.add_page(reader.pages[0])

# add page 2 from input1, but rotated clockwise 90 degrees
writer.add_page(reader.pages[0].rotate(90))

# add page 3 from input1, but first add a watermark from another PDF:
page3 = reader.pages[0]
watermark_pdf = pdf_path
watermark = PdfReader(watermark_pdf)
page3.merge_page(watermark.pages[0])
writer.add_page(page3)

# add page 4 from input1, but crop it to half size:
page4 = reader.pages[0]
page4.mediabox.upper_right = (
page4.mediabox.right / 2,
page4.mediabox.top / 2,
)
writer.add_page(page4)

# add some Javascript to launch the print window on opening this PDF.
# the password dialog may prevent the print dialog from being shown,
# comment the the encription lines, if that's the case, to try this out
writer.add_js("this.print({bUI:true,bSilent:false,bShrinkToFit:true});")

# encrypt your new PDF and add a password
password = "secret"
writer.encrypt(password)

# finally, write "output" to PyPDF2-output.pdf
write_path = tmp_path / "PyPDF2-output.pdf"
with open(write_path, "wb") as output_stream:
writer.write(output_stream)


def test_dropdown_items():
inputfile = RESOURCE_ROOT / "libreoffice-form.pdf"
reader = PdfReader(inputfile)
Expand Down Expand Up @@ -321,7 +364,7 @@ def test_overlay(base_path, overlay_path):
writer.write(fp)

# Cleanup
os.remove("dont_commit_overlay.pdf")
os.remove("dont_commit_overlay.pdf") # remove for manual inspection


@pytest.mark.parametrize(
Expand All @@ -333,16 +376,13 @@ def test_overlay(base_path, overlay_path):
)
],
)
def test_merge_with_warning(url, name):
def test_merge_with_warning(tmp_path, url, name):
data = BytesIO(get_pdf_from_url(url, name=name))
reader = PdfReader(data)
merger = PdfMerger()
merger.append(reader)
# This could actually be a performance bottleneck:
merger.write("tmp.merged.pdf")

# Cleanup
os.remove("tmp.merged.pdf")
merger.write(tmp_path / "tmp.merged.pdf")


@pytest.mark.parametrize(
Expand All @@ -354,15 +394,12 @@ def test_merge_with_warning(url, name):
)
],
)
def test_merge(url, name):
def test_merge(tmp_path, url, name):
data = BytesIO(get_pdf_from_url(url, name=name))
reader = PdfReader(data)
merger = PdfMerger()
merger.append(reader)
merger.write("tmp.merged.pdf")

# Cleanup
os.remove("tmp.merged.pdf")
merger.write(tmp_path / "tmp.merged.pdf")


@pytest.mark.parametrize(
Expand Down Expand Up @@ -474,18 +511,16 @@ def test_compress(url, name):
),
],
)
def test_get_fields_warns(caplog, url, name):
def test_get_fields_warns(tmp_path, caplog, url, name):
data = BytesIO(get_pdf_from_url(url, name=name))
reader = PdfReader(data)
with open("tmp.txt", "w") as fp:
write_path = tmp_path / "tmp.txt"
with open(write_path, "w") as fp:
retrieved_fields = reader.get_fields(fileobj=fp)

assert retrieved_fields == {}
assert normalize_warnings(caplog.text) == ["Object 2 0 not defined."]

# Cleanup
os.remove("tmp.txt")


@pytest.mark.parametrize(
("url", "name"),
Expand All @@ -496,17 +531,15 @@ def test_get_fields_warns(caplog, url, name):
),
],
)
def test_get_fields_no_warning(url, name):
def test_get_fields_no_warning(tmp_path, url, name):
data = BytesIO(get_pdf_from_url(url, name=name))
reader = PdfReader(data)
with open("tmp.txt", "w") as fp:
write_path = tmp_path / "tmp.txt"
with open(write_path, "w") as fp:
retrieved_fields = reader.get_fields(fileobj=fp)

assert len(retrieved_fields) == 10

# Cleanup
os.remove("tmp.txt")


def test_scale_rectangle_indirect_object():
url = "https://corpora.tika.apache.org/base/docs/govdocs1/999/999944.pdf"
Expand Down
8 changes: 7 additions & 1 deletion tests/test_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,8 @@ def test_fill_form():
with open(tmp_filename, "wb") as output_stream:
writer.write(output_stream)

os.remove(tmp_filename) # cleanup


@pytest.mark.parametrize(
("use_128bit", "user_pwd", "owner_pwd"),
Expand Down Expand Up @@ -595,14 +597,18 @@ def test_io_streams():


def test_regression_issue670():
tmp_file = "dont_commit_issue670.pdf"
filepath = RESOURCE_ROOT / "crazyones.pdf"
reader = PdfReader(filepath, strict=False)
for _ in range(2):
writer = PdfWriter()
writer.add_page(reader.pages[0])
with open("dont_commit_issue670.pdf", "wb") as f_pdf:
with open(tmp_file, "wb") as f_pdf:
writer.write(f_pdf)

# cleanup
os.remove(tmp_file)


def test_issue301():
"""
Expand Down