Merge branch 'jprovazn-ignore-anchors' into 'master'
Use prefix for TableOfContents filter hrefs Closes #38473 See merge request gitlab-org/gitlab-ce!15806
This commit is contained in:
commit
1fb49ccd7b
4 changed files with 23 additions and 0 deletions
6
changelogs/unreleased/anchor-issue-references.yml
Normal file
6
changelogs/unreleased/anchor-issue-references.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
title: Fix false positive issue references in merge requests caused by header anchor
|
||||
links.
|
||||
merge_request:
|
||||
author:
|
||||
type: fixed
|
|
@ -32,6 +32,7 @@ module Banzai
|
|||
.gsub(PUNCTUATION_REGEXP, '') # remove punctuation
|
||||
.tr(' ', '-') # replace spaces with dash
|
||||
.squeeze('-') # replace multiple dashes with one
|
||||
.gsub(/\A(\d+)\z/, 'anchor-\1') # digits-only hrefs conflict with issue refs
|
||||
|
||||
uniq = headers[id] > 0 ? "-#{headers[id]}" : ''
|
||||
headers[id] += 1
|
||||
|
|
|
@ -65,6 +65,13 @@ describe Banzai::Filter::TableOfContentsFilter do
|
|||
expect(doc.css('h2 a').first.attr('href')).to eq '#one-1'
|
||||
end
|
||||
|
||||
it 'prepends a prefix to digits-only ids' do
|
||||
doc = filter(header(1, "123") + header(2, "1.0"))
|
||||
|
||||
expect(doc.css('h1 a').first.attr('href')).to eq '#anchor-123'
|
||||
expect(doc.css('h2 a').first.attr('href')).to eq '#anchor-10'
|
||||
end
|
||||
|
||||
it 'supports Unicode' do
|
||||
doc = filter(header(1, '한글'))
|
||||
expect(doc.css('h1 a').first.attr('id')).to eq 'user-content-한글'
|
||||
|
|
|
@ -115,6 +115,15 @@ describe Gitlab::ReferenceExtractor do
|
|||
end
|
||||
end
|
||||
|
||||
it 'does not include anchors from table of contents in issue references' do
|
||||
issue1 = create(:issue, project: project)
|
||||
issue2 = create(:issue, project: project)
|
||||
|
||||
subject.analyze("not real issue <h4>#{issue1.iid}</h4>, real issue #{issue2.to_reference}")
|
||||
|
||||
expect(subject.issues).to match_array([issue2])
|
||||
end
|
||||
|
||||
it 'accesses valid issue objects' do
|
||||
@i0 = create(:issue, project: project)
|
||||
@i1 = create(:issue, project: project)
|
||||
|
|
Loading…
Reference in a new issue