From 3c339434990cd1c7670aab7f4a1e3c09f93948f8 Mon Sep 17 00:00:00 2001 From: geopanther Date: Mon, 18 May 2026 18:20:48 +0200 Subject: [PATCH 1/2] test: add relative links functional test fixtures --- test_package/functional/relative_links/guide.md | 11 +++++++++++ test_package/functional/relative_links/index.md | 16 ++++++++++++++++ .../functional/relative_links/sub/deep.md | 11 +++++++++++ 3 files changed, 38 insertions(+) create mode 100644 test_package/functional/relative_links/guide.md create mode 100644 test_package/functional/relative_links/index.md create mode 100644 test_package/functional/relative_links/sub/deep.md diff --git a/test_package/functional/relative_links/guide.md b/test_package/functional/relative_links/guide.md new file mode 100644 index 0000000..b19f950 --- /dev/null +++ b/test_package/functional/relative_links/guide.md @@ -0,0 +1,11 @@ +# Guide + +## Authentication + +Tokens are required for all calls. + +## See Also + +- [Back to index](./index.md) +- [Deep page](./sub/deep.md) +- [External](https://example.com/docs) diff --git a/test_package/functional/relative_links/index.md b/test_package/functional/relative_links/index.md new file mode 100644 index 0000000..a357759 --- /dev/null +++ b/test_package/functional/relative_links/index.md @@ -0,0 +1,16 @@ +# Index Page + +## Sibling links + +- [See the guide](./guide.md) +- [Guide auth section](./guide.md#authentication) + +## Subdirectory links + +- [Deep page](./sub/deep.md) +- [Deep page section](./sub/deep.md#details) + +## Mixed + +- [External link](https://example.com) +- [Header in this page](#sibling-links) diff --git a/test_package/functional/relative_links/sub/deep.md b/test_package/functional/relative_links/sub/deep.md new file mode 100644 index 0000000..8da2011 --- /dev/null +++ b/test_package/functional/relative_links/sub/deep.md @@ -0,0 +1,11 @@ +# Deep Page + +## Details + +More detailed information here. + +## Parent traversal links + +- [Back to index](../index.md) +- [Guide auth](../guide.md#authentication) +- [Local header](#details) From a3236711e82a30b1432997f83d3819fcb5375973 Mon Sep 17 00:00:00 2001 From: geopanther Date: Tue, 19 May 2026 12:51:50 +0200 Subject: [PATCH 2/2] test: add unit tests for relative link variants Cover missing relative link patterns in renderer unit tests: - dot-slash sibling links (./file.md) - sibling links with fragment (./file.md#anchor) - subdirectory links (./sub/file.md) - subdirectory links with fragment (./sub/file.md#anchor) - parent traversal (../file.md) - parent traversal with fragment (../file.md#anchor) --- test_package/unit/test_renderer.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test_package/unit/test_renderer.py b/test_package/unit/test_renderer.py index fc95539..623915f 100644 --- a/test_package/unit/test_renderer.py +++ b/test_package/unit/test_renderer.py @@ -336,6 +336,33 @@ def test_renderer_relative_link_with_fragment_enabled(): assert relative_link.escaped_original == "document/../path/page.md#header-name" +@pytest.mark.parametrize( + "url, expected_path, expected_fragment", + [ + ("./guide.md", "./guide.md", ""), + ("./guide.md#authentication", "./guide.md", "authentication"), + ("./sub/deep.md", "./sub/deep.md", ""), + ("./sub/deep.md#details", "./sub/deep.md", "details"), + ("../index.md", "../index.md", ""), + ("../guide.md#authentication", "../guide.md", "authentication"), + ], +) +def test_renderer_relative_link_variants(url, expected_path, expected_fragment): + renderer = ConfluenceRenderer(enable_relative_links=True) + + relative_link_regex = re.compile( + r"link text" + ) + temporary_link = renderer.link(text="link text", url=url, title=None) + assert relative_link_regex.match(temporary_link) + assert len(renderer.relative_links) == 1 + relative_link = renderer.relative_links[0] + + assert relative_link.path == expected_path + assert relative_link.fragment == expected_fragment + assert relative_link.original == url + + def test_renderer_relative_link_disabled(): renderer = ConfluenceRenderer(enable_relative_links=False)