diff --git a/sphinx/ext/extlinks.py b/sphinx/ext/extlinks.py index c03cb78ba63..3ee0735d4f1 100644 --- a/sphinx/ext/extlinks.py +++ b/sphinx/ext/extlinks.py @@ -72,7 +72,11 @@ def check_uri(self, refnode: nodes.reference) -> None: uri_pattern = re.compile(re.escape(base_uri).replace('%s', '(?P.+)')) match = uri_pattern.match(uri) - if match and match.groupdict().get('value'): + if ( + match and + match.groupdict().get('value') and + '/' not in match.groupdict()['value'] + ): # build a replacement suggestion msg = __('hardcoded link %r could be replaced by an extlink ' '(try using %r instead)') diff --git a/tests/roots/test-ext-extlinks-hardcoded-urls-multiple-replacements/index.rst b/tests/roots/test-ext-extlinks-hardcoded-urls-multiple-replacements/index.rst index c8b008ea2b6..162b3611aa4 100644 --- a/tests/roots/test-ext-extlinks-hardcoded-urls-multiple-replacements/index.rst +++ b/tests/roots/test-ext-extlinks-hardcoded-urls-multiple-replacements/index.rst @@ -17,6 +17,8 @@ https://github.com/octocat `replaceable link`_ +`non replaceable link `_ + .. hyperlinks .. _replaceable link: https://github.com/octocat diff --git a/tests/test_ext_extlinks.py b/tests/test_ext_extlinks.py index 0e257364e0f..7634db688cb 100644 --- a/tests/test_ext_extlinks.py +++ b/tests/test_ext_extlinks.py @@ -28,6 +28,7 @@ def test_all_replacements_suggested_if_multiple_replacements_possible(app, warni app.build() warning_output = warning.getvalue() # there should be six warnings for replaceable URLs, three pairs per link + assert warning_output.count("WARNING: hardcoded link") == 6 message = ( "index.rst:%d: WARNING: hardcoded link 'https://github.com/octocat' " "could be replaced by an extlink (try using '%s' instead)"