diff mbox series

[v2,2/5] support/testing: add new test for python-pymupdf

Message ID 20240607163208.1445715-2-raphael.melotte@mind.be
State Accepted
Headers show
Series [v2,1/5] package: python-pymupdf: add missing python-zlib dependency | expand

Commit Message

Raphaël Mélotte June 7, 2024, 4:32 p.m. UTC
To give us a chance to catch runtime issues (such as missing
dependencies) more easily, add a test that writes a sample PDF file,
read it back and verify the text that was read.

Like similar packages that lead to a big
rootfs (e.g. python-botocore), this test requires a separate ext2
rootfs to avoid filling the default amount of RAM available
entirely (which would cause missing files from the root filesystem and
in turn, test failures).

Signed-off-by: Raphaël Mélotte <raphael.melotte@mind.be>
---
 DEVELOPERS                                    |  2 ++
 .../tests/package/sample_python_pymupdf.py    | 17 ++++++++++++
 .../tests/package/test_python_pymupdf.py      | 26 +++++++++++++++++++
 3 files changed, 45 insertions(+)
 create mode 100644 support/testing/tests/package/sample_python_pymupdf.py
 create mode 100644 support/testing/tests/package/test_python_pymupdf.py

Comments

Thomas Petazzoni July 13, 2024, 8:35 p.m. UTC | #1
Hello,

On Fri,  7 Jun 2024 18:32:03 +0200
Raphaël Mélotte via buildroot <buildroot@buildroot.org> wrote:

> To give us a chance to catch runtime issues (such as missing
> dependencies) more easily, add a test that writes a sample PDF file,
> read it back and verify the text that was read.
> 
> Like similar packages that lead to a big
> rootfs (e.g. python-botocore), this test requires a separate ext2
> rootfs to avoid filling the default amount of RAM available
> entirely (which would cause missing files from the root filesystem and
> in turn, test failures).
> 
> Signed-off-by: Raphaël Mélotte <raphael.melotte@mind.be>

Very good idea to have a test!


> +class TestPythonPy3PyMuPDF(TestPythonPackageBase):
> +    __test__ = True
> +    config = TestPythonPackageBase.config + \
> +        """
> +        BR2_PACKAGE_PYTHON3=y
> +        BR2_PACKAGE_PYTHON_PYMUPDF=y
> +        BR2_PACKAGE_XORG7=y

In fact was not needed.

> +        BR2_USE_WCHAR=y
> +        BR2_INSTALL_LIBSTDCPP=y

These two options were not relevant, our TestPythonPackageBase.config
use an external toolchain by default.

> +        BR2_TARGET_ROOTFS_EXT2=y
> +        BR2_TARGET_ROOTFS_EXT2_SIZE="250M"

Reduced to 120M, which was enough now that we no longer have X.org.

Applied with those changes!

Thomas
Peter Korsgaard Aug. 12, 2024, 9:51 a.m. UTC | #2
>>>>> "Thomas" == Thomas Petazzoni via buildroot <buildroot@buildroot.org> writes:

 > Hello,
 > On Fri,  7 Jun 2024 18:32:03 +0200
 > Raphaël Mélotte via buildroot <buildroot@buildroot.org> wrote:

 >> To give us a chance to catch runtime issues (such as missing
 >> dependencies) more easily, add a test that writes a sample PDF file,
 >> read it back and verify the text that was read.
 >> 
 >> Like similar packages that lead to a big
 >> rootfs (e.g. python-botocore), this test requires a separate ext2
 >> rootfs to avoid filling the default amount of RAM available
 >> entirely (which would cause missing files from the root filesystem and
 >> in turn, test failures).
 >> 
 >> Signed-off-by: Raphaël Mélotte <raphael.melotte@mind.be>

 > Very good idea to have a test!


 >> +class TestPythonPy3PyMuPDF(TestPythonPackageBase):
 >> +    __test__ = True
 >> +    config = TestPythonPackageBase.config + \
 >> +        """
 >> +        BR2_PACKAGE_PYTHON3=y
 >> +        BR2_PACKAGE_PYTHON_PYMUPDF=y
 >> +        BR2_PACKAGE_XORG7=y

 > In fact was not needed.

 >> +        BR2_USE_WCHAR=y
 >> +        BR2_INSTALL_LIBSTDCPP=y

 > These two options were not relevant, our TestPythonPackageBase.config
 > use an external toolchain by default.

 >> +        BR2_TARGET_ROOTFS_EXT2=y
 >> +        BR2_TARGET_ROOTFS_EXT2_SIZE="250M"

 > Reduced to 120M, which was enough now that we no longer have X.org.

 > Applied with those changes!

Committed to 2024.02.x and 2024.05.x, thanks.
diff mbox series

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index 03aa7bfa74..e4c3920ce2 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2667,9 +2667,11 @@  F:	package/python-pymupdf/
 F:	package/python-rsa/
 F:	package/python-s3transfer/
 F:	support/testing/tests/package/sample_python_jmespath.py
+F:	support/testing/tests/package/sample_python_pymupdf.py
 F:	support/testing/tests/package/sample_python_rsa.py
 F:	support/testing/tests/package/sample_python_s3transfer.py
 F:	support/testing/tests/package/test_python_jmespath.py
+F:	support/testing/tests/package/test_python_pymupdf.py
 F:	support/testing/tests/package/test_python_rsa.py
 F:	support/testing/tests/package/test_python_s3transfer.py
 
diff --git a/support/testing/tests/package/sample_python_pymupdf.py b/support/testing/tests/package/sample_python_pymupdf.py
new file mode 100644
index 0000000000..574bd27965
--- /dev/null
+++ b/support/testing/tests/package/sample_python_pymupdf.py
@@ -0,0 +1,17 @@ 
+import fitz
+
+# Write a test PDF file
+outfile = "python-pymupdf.pdf"
+sample_text = "This is a test page for python-pymupdf."
+doc = fitz.open()
+page = doc.new_page()
+p = fitz.Point(50, 72)
+page.insert_text(p, sample_text)
+doc.save(outfile)
+
+# Read back the file
+with fitz.open(outfile) as d:  # open document
+    read_text = chr(12).join([page.get_text() for page in d])
+
+print(read_text)
+assert(read_text == sample_text + "\n")
diff --git a/support/testing/tests/package/test_python_pymupdf.py b/support/testing/tests/package/test_python_pymupdf.py
new file mode 100644
index 0000000000..5e9d5a6912
--- /dev/null
+++ b/support/testing/tests/package/test_python_pymupdf.py
@@ -0,0 +1,26 @@ 
+import os
+from tests.package.test_python import TestPythonPackageBase
+
+
+class TestPythonPy3PyMuPDF(TestPythonPackageBase):
+    __test__ = True
+    config = TestPythonPackageBase.config + \
+        """
+        BR2_PACKAGE_PYTHON3=y
+        BR2_PACKAGE_PYTHON_PYMUPDF=y
+        BR2_PACKAGE_XORG7=y
+        BR2_USE_WCHAR=y
+        BR2_INSTALL_LIBSTDCPP=y
+        BR2_TARGET_ROOTFS_EXT2=y
+        BR2_TARGET_ROOTFS_EXT2_SIZE="250M"
+        """
+    sample_scripts = ["tests/package/sample_python_pymupdf.py"]
+    timeout = 30
+
+    def login(self):
+        ext2_file = os.path.join(self.builddir, "images", "rootfs.ext2")
+        self.emulator.boot(arch="armv5",
+                           kernel="builtin",
+                           options=["-drive", "file=%s,if=scsi,format=raw" % ext2_file],
+                           kernel_cmdline=["rootwait", "root=/dev/sda"])
+        self.emulator.login()