From ff13fbefe0ec09feef2c3e6fa82d37e494773fc7 Mon Sep 17 00:00:00 2001 From: cubernetes <71025646+cubernetes@users.noreply.github.com> Date: Fri, 19 Sep 2025 16:48:33 +0200 Subject: [PATCH] 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 ``` 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. --- mike/mkdocs_plugin.py | 2 +- test/unit/test_mkdocs_plugin.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mike/mkdocs_plugin.py b/mike/mkdocs_plugin.py index 2b80482..2030ad4 100644 --- a/mike/mkdocs_plugin.py +++ b/mike/mkdocs_plugin.py @@ -46,7 +46,7 @@ def on_config(self, config): if version and config.get('site_url'): if self.config['canonical_version'] is not None: version = self.config['canonical_version'] - config['site_url'] = urljoin(config['site_url'], version) + config['site_url'] = urljoin(config['site_url'], version) + '/' def on_files(self, files, config): if not self.config['version_selector']: diff --git a/test/unit/test_mkdocs_plugin.py b/test/unit/test_mkdocs_plugin.py index 9528ca4..559331f 100644 --- a/test/unit/test_mkdocs_plugin.py +++ b/test/unit/test_mkdocs_plugin.py @@ -34,7 +34,7 @@ def test_site_url(self): with mock.patch('os.environ', {docs_version_var: '1.0'}): config = {'site_url': 'https://example.com/'} self.make_plugin().on_config(config) - self.assertEqual(config['site_url'], 'https://example.com/1.0') + self.assertEqual(config['site_url'], 'https://example.com/1.0/') def test_no_site_url(self): with mock.patch('os.environ', {docs_version_var: '1.0'}): @@ -46,7 +46,7 @@ def test_explicit_canonical(self): with mock.patch('os.environ', {docs_version_var: '1.0'}): config = {'site_url': 'https://example.com/'} self.make_plugin(canonical_version='latest').on_config(config) - self.assertEqual(config['site_url'], 'https://example.com/latest') + self.assertEqual(config['site_url'], 'https://example.com/latest/') with mock.patch('os.environ', {docs_version_var: '1.0'}): config = {'site_url': 'https://example.com/'}