From bcdc483a13ec61f83aac4230ce262bd42e6b8fff Mon Sep 17 00:00:00 2001 From: Corentin Flr <10946971+cogk@users.noreply.github.com> Date: Thu, 15 Jun 2023 18:36:30 +0200 Subject: [PATCH 1/5] fix(test): Fix test_never_render to get path as string, exclude PYC files from static downloads This test code never actually tested the behaviour for two reasons: - first, the page had an error which meant that a 500 Error page was returned (because `path` is not a string) - second, every page contains the string "400" because it's contained in some of the icons.svg icons! I also found a minor related bug in static_page.py, allowing people to download PYC files (pycache) --- frappe/tests/test_website.py | 5 +++-- frappe/website/page_renderers/static_page.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/frappe/tests/test_website.py b/frappe/tests/test_website.py index 6c319fff0a..1031a46c80 100644 --- a/frappe/tests/test_website.py +++ b/frappe/tests/test_website.py @@ -340,8 +340,9 @@ class TestWebsite(FrappeTestCase): FILES_TO_SKIP = choices(list(WWW.glob("**/*.py*")), k=10) for suffix in FILES_TO_SKIP: - content = get_response_content(suffix.relative_to(WWW)) - self.assertIn("404", content) + path: str = suffix.relative_to(WWW).as_posix() + content = get_response_content(path) + self.assertIn("Not Found", content) def test_metatags(self): content = get_response_content("/_test/_test_metatags") diff --git a/frappe/website/page_renderers/static_page.py b/frappe/website/page_renderers/static_page.py index 04e58ff217..d6de2f2991 100644 --- a/frappe/website/page_renderers/static_page.py +++ b/frappe/website/page_renderers/static_page.py @@ -8,7 +8,7 @@ import frappe from frappe.website.page_renderers.base_renderer import BaseRenderer from frappe.website.utils import is_binary_file -UNSUPPORTED_STATIC_PAGE_TYPES = ("html", "md", "js", "xml", "css", "txt", "py", "json") +UNSUPPORTED_STATIC_PAGE_TYPES = ("html", "md", "js", "xml", "css", "txt", "py", "pyc", "json") class StaticPage(BaseRenderer): From 9afedfae253896be463d52efe35eac035ac5f313 Mon Sep 17 00:00:00 2001 From: Corentin Flr <10946971+cogk@users.noreply.github.com> Date: Fri, 16 Jun 2023 13:27:49 +0200 Subject: [PATCH 2/5] fix(test): Remove frappe.local.request between requests `frappe.local.request` was not cleared between tests, which would not be a problem if all tests did set it to another Request object. But, some tests directly fetch the response content using get_response_content without first setting the frappe.local.request object (using set_request). --- frappe/tests/test_website.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/frappe/tests/test_website.py b/frappe/tests/test_website.py index 1031a46c80..16e82850de 100644 --- a/frappe/tests/test_website.py +++ b/frappe/tests/test_website.py @@ -11,10 +11,16 @@ from frappe.website.utils import build_response, clear_website_cache, get_home_p class TestWebsite(FrappeTestCase): def setUp(self): frappe.set_user("Guest") + self._clearRequest() def tearDown(self): frappe.db.delete("Access Log") frappe.set_user("Administrator") + self._clearRequest() + + def _clearRequest(self): + if hasattr(frappe.local, "request"): + delattr(frappe.local, "request") def test_home_page(self): frappe.set_user("Administrator") From 23846434ee03223f2460fa95b55974c06c51ab8a Mon Sep 17 00:00:00 2001 From: Corentin Flr <10946971+cogk@users.noreply.github.com> Date: Fri, 16 Jun 2023 14:39:03 +0200 Subject: [PATCH 3/5] fix(path_resolver): Avoid 200 OK for NotFoundPage renderer --- frappe/website/path_resolver.py | 1 - 1 file changed, 1 deletion(-) diff --git a/frappe/website/path_resolver.py b/frappe/website/path_resolver.py index 37bfb3ee56..50ef2afcb4 100644 --- a/frappe/website/path_resolver.py +++ b/frappe/website/path_resolver.py @@ -51,7 +51,6 @@ class PathResolver: TemplatePage, ListPage, PrintPage, - NotFoundPage, ] for renderer in renderers: From f3c876e43e0c8182220e6d5a0e6365efcfa4fd97 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Wed, 28 Jun 2023 11:43:23 +0530 Subject: [PATCH 4/5] chore: ignore pyo files too --- frappe/website/page_renderers/static_page.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/website/page_renderers/static_page.py b/frappe/website/page_renderers/static_page.py index d6de2f2991..f992743c6a 100644 --- a/frappe/website/page_renderers/static_page.py +++ b/frappe/website/page_renderers/static_page.py @@ -8,7 +8,7 @@ import frappe from frappe.website.page_renderers.base_renderer import BaseRenderer from frappe.website.utils import is_binary_file -UNSUPPORTED_STATIC_PAGE_TYPES = ("html", "md", "js", "xml", "css", "txt", "py", "pyc", "json") +UNSUPPORTED_STATIC_PAGE_TYPES = ("html", "md", "js", "xml", "css", "txt", "py", "pyc", "json", "pyo") class StaticPage(BaseRenderer): From 69d0060bdf631ed9888eed17eeb372636f566f4f Mon Sep 17 00:00:00 2001 From: Corentin Flr <10946971+cogk@users.noreply.github.com> Date: Fri, 30 Jun 2023 11:52:29 +0200 Subject: [PATCH 5/5] chore: format code --- frappe/website/page_renderers/static_page.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/frappe/website/page_renderers/static_page.py b/frappe/website/page_renderers/static_page.py index f992743c6a..00162c0772 100644 --- a/frappe/website/page_renderers/static_page.py +++ b/frappe/website/page_renderers/static_page.py @@ -8,7 +8,18 @@ import frappe from frappe.website.page_renderers.base_renderer import BaseRenderer from frappe.website.utils import is_binary_file -UNSUPPORTED_STATIC_PAGE_TYPES = ("html", "md", "js", "xml", "css", "txt", "py", "pyc", "json", "pyo") +UNSUPPORTED_STATIC_PAGE_TYPES = ( + "css", + "html", + "js", + "json", + "md", + "py", + "pyc", + "pyo", + "txt", + "xml", +) class StaticPage(BaseRenderer):