mirror of
https://github.com/mkdocs/mkdocs.git
synced 2026-03-27 09:58:31 +07:00
Nested index is not homepage (#1921)
A user could place a nested (in the file structure) index page on the root level of the nav. That file should not return `True` for `page.is_homepage`. Fixes #1919.
This commit is contained in:
@@ -56,6 +56,7 @@ your global navigation uses more than one level, things will likely be broken.
|
||||
|
||||
### Other Changes and Additions to Version 1.1
|
||||
|
||||
* Bugfix: Ensure nested index pages do not get identified as the homepage (#1919).
|
||||
* Bugfix: Properly identify deployment version (#1879).
|
||||
* Bugfix: Properly build `ValidationError` message for `custom_dir` (#1849).
|
||||
* Bugfix: Exclude Markdown files and READMEs from theme (#1766).
|
||||
|
||||
@@ -93,7 +93,7 @@ class Page(object):
|
||||
|
||||
@property
|
||||
def is_homepage(self):
|
||||
return self.is_top_level and self.is_index
|
||||
return self.is_top_level and self.is_index and self.file.url == '.'
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
|
||||
@@ -70,6 +70,54 @@ class PageTests(unittest.TestCase):
|
||||
self.assertEqual(pg.title, 'Foo')
|
||||
self.assertEqual(pg.toc, [])
|
||||
|
||||
def test_nested_index_page_no_parent(self):
|
||||
cfg = load_config(docs_dir=self.DOCS_DIR)
|
||||
fl = File('sub1/index.md', cfg['docs_dir'], cfg['site_dir'], cfg['use_directory_urls'])
|
||||
pg = Page('Foo', fl, cfg)
|
||||
pg.parent = None # non-homepage at nav root level; see #1919.
|
||||
self.assertEqual(pg.url, 'sub1/')
|
||||
self.assertEqual(pg.abs_url, None)
|
||||
self.assertEqual(pg.canonical_url, None)
|
||||
self.assertEqual(pg.edit_url, None)
|
||||
self.assertEqual(pg.file, fl)
|
||||
self.assertEqual(pg.content, None)
|
||||
self.assertFalse(pg.is_homepage)
|
||||
self.assertTrue(pg.is_index)
|
||||
self.assertTrue(pg.is_page)
|
||||
self.assertFalse(pg.is_section)
|
||||
self.assertTrue(pg.is_top_level)
|
||||
self.assertEqual(pg.markdown, None)
|
||||
self.assertEqual(pg.meta, {})
|
||||
self.assertEqual(pg.next_page, None)
|
||||
self.assertEqual(pg.parent, None)
|
||||
self.assertEqual(pg.previous_page, None)
|
||||
self.assertEqual(pg.title, 'Foo')
|
||||
self.assertEqual(pg.toc, [])
|
||||
|
||||
def test_nested_index_page_no_parent_no_directory_urls(self):
|
||||
cfg = load_config(docs_dir=self.DOCS_DIR, use_directory_urls=False)
|
||||
fl = File('sub1/index.md', cfg['docs_dir'], cfg['site_dir'], cfg['use_directory_urls'])
|
||||
pg = Page('Foo', fl, cfg)
|
||||
pg.parent = None # non-homepage at nav root level; see #1919.
|
||||
self.assertEqual(pg.url, 'sub1/index.html')
|
||||
self.assertEqual(pg.abs_url, None)
|
||||
self.assertEqual(pg.canonical_url, None)
|
||||
self.assertEqual(pg.edit_url, None)
|
||||
self.assertEqual(pg.file, fl)
|
||||
self.assertEqual(pg.content, None)
|
||||
self.assertFalse(pg.is_homepage)
|
||||
self.assertTrue(pg.is_index)
|
||||
self.assertTrue(pg.is_page)
|
||||
self.assertFalse(pg.is_section)
|
||||
self.assertTrue(pg.is_top_level)
|
||||
self.assertEqual(pg.markdown, None)
|
||||
self.assertEqual(pg.meta, {})
|
||||
self.assertEqual(pg.next_page, None)
|
||||
self.assertEqual(pg.parent, None)
|
||||
self.assertEqual(pg.previous_page, None)
|
||||
self.assertEqual(pg.title, 'Foo')
|
||||
self.assertEqual(pg.toc, [])
|
||||
|
||||
def test_nested_nonindex_page(self):
|
||||
cfg = load_config(docs_dir=self.DOCS_DIR)
|
||||
fl = File('sub1/non-index.md', cfg['docs_dir'], cfg['site_dir'], cfg['use_directory_urls'])
|
||||
|
||||
Reference in New Issue
Block a user