diff --git a/e2e/e2e_namespace_folder.py b/e2e/e2e_namespace_folder.py index 840282d..0391c8e 100644 --- a/e2e/e2e_namespace_folder.py +++ b/e2e/e2e_namespace_folder.py @@ -82,3 +82,16 @@ def test_folder_invalid_namespace(page: Page): expect( page.locator('text=Page name "Folder/Page2/Main Page" is in namespace "Page2" that does not exist.') ).to_be_visible() + + +def test_folder_category_no_crash(page: Page): + """Check that accessing Folder/Category doesn't cause an IndexError crash.""" + page.goto("http://localhost:8080/Folder/Category") + + # Before the fix, this would crash with an IndexError when page_get_language + # tried to access page.split("/")[2] on ["Folder", "Category"]. + # After the fix, it should show an appropriate error message. + # Since Category is a namespace, it should show the namespace error message. + expect( + page.locator('text=Page name "Folder/Category/Main Page" is in namespace "Category" that does not exist.') + ).to_be_visible() diff --git a/truewiki/namespaces/folder/namespace.py b/truewiki/namespaces/folder/namespace.py index 9d3abf9..dd3f07d 100644 --- a/truewiki/namespaces/folder/namespace.py +++ b/truewiki/namespaces/folder/namespace.py @@ -90,7 +90,10 @@ def page_get_language(cls, page: str) -> Optional[str]: if cls._is_namespace_root(page): return None - return page.split("/")[2] + spage = page.split("/") + if len(spage) < 3: + return None + return spage[2] @staticmethod def get_used_on_pages(page: str) -> list: