|
|
@@ -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")
|