Skip to content

Commit ff13fbe

Browse files
committed
Add trailing slash to site_url
`site_url` has to end with a trailing slash, because when MkDocs processes the Jinja2 templates, it will embed a script tag into the final html: ```js <script id="__config" type="application/json">{"base": "/some/path/4.1.1", ...}</script> ``` The JS-relevant part of mike then handles this as follows `fetch(ABS_BASE_URL + "../versions.json")` or, if you look at the actual js-bundle: `new URL("../versions.json", t.base)` And if `t.base` doesn't end with a trailing slash, the last component is completely ignored, which is obviously not what we want.
1 parent 97deaed commit ff13fbe

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

mike/mkdocs_plugin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def on_config(self, config):
4646
if version and config.get('site_url'):
4747
if self.config['canonical_version'] is not None:
4848
version = self.config['canonical_version']
49-
config['site_url'] = urljoin(config['site_url'], version)
49+
config['site_url'] = urljoin(config['site_url'], version) + '/'
5050

5151
def on_files(self, files, config):
5252
if not self.config['version_selector']:

test/unit/test_mkdocs_plugin.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def test_site_url(self):
3434
with mock.patch('os.environ', {docs_version_var: '1.0'}):
3535
config = {'site_url': 'https://example.com/'}
3636
self.make_plugin().on_config(config)
37-
self.assertEqual(config['site_url'], 'https://example.com/1.0')
37+
self.assertEqual(config['site_url'], 'https://example.com/1.0/')
3838

3939
def test_no_site_url(self):
4040
with mock.patch('os.environ', {docs_version_var: '1.0'}):
@@ -46,7 +46,7 @@ def test_explicit_canonical(self):
4646
with mock.patch('os.environ', {docs_version_var: '1.0'}):
4747
config = {'site_url': 'https://example.com/'}
4848
self.make_plugin(canonical_version='latest').on_config(config)
49-
self.assertEqual(config['site_url'], 'https://example.com/latest')
49+
self.assertEqual(config['site_url'], 'https://example.com/latest/')
5050

5151
with mock.patch('os.environ', {docs_version_var: '1.0'}):
5252
config = {'site_url': 'https://example.com/'}

0 commit comments

Comments
 (0)