From 896b14a19f66f6c53747600a6af156a2767afa0c Mon Sep 17 00:00:00 2001 From: Jan Provaznik Date: Thu, 7 Dec 2017 08:07:51 +0100 Subject: Change order of banzai filters TableOfContents filter is moved later in the pipeline because it generates anchor links which are then considered as issue references by IssueReference filter. Closes #38473 --- changelogs/unreleased/anchor-issue-references.yml | 6 ++++++ lib/banzai/pipeline/gfm_pipeline.rb | 3 ++- spec/lib/gitlab/reference_extractor_spec.rb | 9 +++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 changelogs/unreleased/anchor-issue-references.yml diff --git a/changelogs/unreleased/anchor-issue-references.yml b/changelogs/unreleased/anchor-issue-references.yml new file mode 100644 index 00000000000..2e60c3a0781 --- /dev/null +++ b/changelogs/unreleased/anchor-issue-references.yml @@ -0,0 +1,6 @@ +--- +title: Fix false positive issue references in merge requests caused by header anchor + links. +merge_request: +author: jprovaznik +type: fixed diff --git a/lib/banzai/pipeline/gfm_pipeline.rb b/lib/banzai/pipeline/gfm_pipeline.rb index 55874ad50a3..875a5eec460 100644 --- a/lib/banzai/pipeline/gfm_pipeline.rb +++ b/lib/banzai/pipeline/gfm_pipeline.rb @@ -20,7 +20,6 @@ module Banzai Filter::ImageLazyLoadFilter, Filter::ImageLinkFilter, Filter::EmojiFilter, - Filter::TableOfContentsFilter, Filter::AutolinkFilter, Filter::ExternalLinkFilter, @@ -34,6 +33,8 @@ module Banzai Filter::LabelReferenceFilter, Filter::MilestoneReferenceFilter, + Filter::TableOfContentsFilter, + Filter::TaskListFilter, Filter::InlineDiffFilter, diff --git a/spec/lib/gitlab/reference_extractor_spec.rb b/spec/lib/gitlab/reference_extractor_spec.rb index 476a3f1998d..bce0fa2ea8f 100644 --- a/spec/lib/gitlab/reference_extractor_spec.rb +++ b/spec/lib/gitlab/reference_extractor_spec.rb @@ -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

#{issue1.iid}

, 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) -- cgit v1.2.3