* [Buildroot] [PATCH 1/1] package/python-whitenoise: new package
@ 2025-02-06 16:18 Marcus Hoffmann via buildroot
0 siblings, 0 replies; only message in thread
From: Marcus Hoffmann via buildroot @ 2025-02-06 16:18 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Thomas Petazzoni
The test is using the django integration of whitenoise as it's the most
common setup and allows to model the test case after the django one as
well.
The setup we need to do is a bit more complicated though and follows
the whitenoise getting started documentation [1].
We then request a .css file from the django admin app that is enabled
by default in template project. Due to running django's development
server with --nostatic we ensure that static file handling is taken over
by whitenoise.
[1] https://whitenoise.readthedocs.io/en/stable/django.html
Signed-off-by: Marcus Hoffmann <buildroot@bubu1.eu>
---
Changes v1 -> v2:
- update to latest version
- drop change to unrelated test
- fix lint errors in test
package/Config.in | 1 +
package/python-whitenoise/Config.in | 7 ++++
.../python-whitenoise/python-whitenoise.hash | 5 +++
.../python-whitenoise/python-whitenoise.mk | 14 +++++++
.../tests/package/test_python_whitenoise.py | 41 +++++++++++++++++++
5 files changed, 68 insertions(+)
create mode 100644 package/python-whitenoise/Config.in
create mode 100644 package/python-whitenoise/python-whitenoise.hash
create mode 100644 package/python-whitenoise/python-whitenoise.mk
create mode 100644 support/testing/tests/package/test_python_whitenoise.py
diff --git a/package/Config.in b/package/Config.in
index 3153fd6afa..10365b6b16 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1476,6 +1476,7 @@ menu "External python modules"
source "package/python-websocket-client/Config.in"
source "package/python-websockets/Config.in"
source "package/python-werkzeug/Config.in"
+ source "package/python-whitenoise/Config.in"
source "package/python-whoosh/Config.in"
source "package/python-wrapt/Config.in"
source "package/python-ws4py/Config.in"
diff --git a/package/python-whitenoise/Config.in b/package/python-whitenoise/Config.in
new file mode 100644
index 0000000000..47df3ad5bf
--- /dev/null
+++ b/package/python-whitenoise/Config.in
@@ -0,0 +1,7 @@
+config BR2_PACKAGE_PYTHON_WHITENOISE
+ bool "python-whitenoise"
+ help
+ Radically simplified static file serving for WSGI
+ applications.
+
+ https://github.com/evansd/whitenoise
diff --git a/package/python-whitenoise/python-whitenoise.hash b/package/python-whitenoise/python-whitenoise.hash
new file mode 100644
index 0000000000..4c37a65cc8
--- /dev/null
+++ b/package/python-whitenoise/python-whitenoise.hash
@@ -0,0 +1,5 @@
+# md5, sha256 from https://pypi.org/pypi/whitenoise/json
+md5 3dafb52a896b1826bbe23ebc18a83819 whitenoise-6.8.2.tar.gz
+sha256 486bd7267a375fa9650b136daaec156ac572971acc8bf99add90817a530dd1d4 whitenoise-6.8.2.tar.gz
+# Locally computed sha256 checksums
+sha256 ebfd469b4fb6b5adada547747e1e8da725ecf20595d54aced043275d4f4a3600 LICENSE
diff --git a/package/python-whitenoise/python-whitenoise.mk b/package/python-whitenoise/python-whitenoise.mk
new file mode 100644
index 0000000000..2d198e2921
--- /dev/null
+++ b/package/python-whitenoise/python-whitenoise.mk
@@ -0,0 +1,14 @@
+################################################################################
+#
+# python-whitenoise
+#
+################################################################################
+
+PYTHON_WHITENOISE_VERSION = 6.8.2
+PYTHON_WHITENOISE_SOURCE = whitenoise-$(PYTHON_WHITENOISE_VERSION).tar.gz
+PYTHON_WHITENOISE_SITE = https://files.pythonhosted.org/packages/68/49/c21ebb5b911888c349a849ec7d1ead2dffbbcc4e2be0f6af2a7dbac03393
+PYTHON_WHITENOISE_SETUP_TYPE = setuptools
+PYTHON_WHITENOISE_LICENSE = MIT
+PYTHON_WHITENOISE_LICENSE_FILES = LICENSE
+
+$(eval $(python-package))
diff --git a/support/testing/tests/package/test_python_whitenoise.py b/support/testing/tests/package/test_python_whitenoise.py
new file mode 100644
index 0000000000..5a76b6d5be
--- /dev/null
+++ b/support/testing/tests/package/test_python_whitenoise.py
@@ -0,0 +1,41 @@
+import time
+
+from tests.package.test_python import TestPythonPackageBase
+
+
+class TestPythonPy3Whitenoise(TestPythonPackageBase):
+ __test__ = True
+ config = TestPythonPackageBase.config + \
+ """
+ BR2_PACKAGE_PYTHON3=y
+ BR2_PACKAGE_PYTHON_DJANGO=y
+ BR2_PACKAGE_PYTHON_WHITENOISE=y
+ BR2_PACKAGE_PYTHON3_SQLITE=y
+ """
+
+ def test_run(self):
+ self.login()
+ timeout = 35
+
+ cmd = "cd /opt && /usr/bin/django-admin startproject testsite"
+ self.assertRunOk(cmd, timeout=timeout)
+ # STATIC_ROOT needs to be set for 'collectstatic' to work.
+ self.emulator.run("echo 'STATIC_ROOT = BASE_DIR / \"staticfiles\"' >> /opt/testsite/testsite/settings.py")
+ cmd = "cd /opt/testsite && " + self.interpreter + " ./manage.py collectstatic"
+ self.assertRunOk(cmd, timeout=timeout)
+ # whitenoise docs say it needs to be added directly after SecurityMiddleware, so we do this here with sed.
+ cmd = """sed -i -e /django.middleware.security.SecurityMiddleware/a\\ \\"whitenoise.middleware.WhiteNoiseMiddleware\\",\
+ /opt/testsite/testsite/settings.py"""
+ self.assertRunOk(cmd, timeout=timeout)
+ # --nostatic ensures the builtin django server doesn't serve the static files,
+ # so we can test that whitenoise serves them
+ cmd = "cd /opt/testsite && " + self.interpreter + " ./manage.py runserver --nostatic 0.0.0.0:1234 > /dev/null 2>&1 & "
+ self.assertRunOk(cmd, timeout=timeout)
+ # give some time to setup the server
+ for attempt in range(30 * self.emulator.timeout_multiplier):
+ time.sleep(1)
+ cmd = "wget http://127.0.0.1:1234/static/admin/css/base.css"
+ _, exit_code = self.emulator.run(cmd)
+ if exit_code == 0:
+ break
+ self.assertEqual(exit_code, 0, "Timeout while waiting for django server")
--
2.43.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2025-02-06 16:18 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-06 16:18 [Buildroot] [PATCH 1/1] package/python-whitenoise: new package Marcus Hoffmann via buildroot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.