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):