diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2018-06-21 09:26:26 +0000 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2018-06-21 09:26:26 +0000 |
commit | 94da20fde1a08c8c35c1de350b31f30185a9007b (patch) | |
tree | 92d0a2753ae5be2ccb2abdd44762e28826d71303 | |
parent | 069c95e13ff626b5975f50846e4496ac7ff5463c (diff) | |
parent | 1753efbc143d18fe0c29e33319b8779c1d03f7c6 (diff) | |
download | gitlab-ce-94da20fde1a08c8c35c1de350b31f30185a9007b.tar.gz |
Merge branch 'dm-label-reference-period' into 'master'
Properly detect label reference if followed by period or question mark
See merge request gitlab-org/gitlab-ce!19965
-rw-r--r-- | app/models/label.rb | 15 | ||||
-rw-r--r-- | changelogs/unreleased/dm-label-reference-period.yml | 5 | ||||
-rw-r--r-- | spec/lib/banzai/filter/label_reference_filter_spec.rb | 8 |
3 files changed, 20 insertions, 8 deletions
diff --git a/app/models/label.rb b/app/models/label.rb index 1cf04976602..7bbcaa121ca 100644 --- a/app/models/label.rb +++ b/app/models/label.rb @@ -85,11 +85,16 @@ class Label < ActiveRecord::Base (#{Project.reference_pattern})? #{Regexp.escape(reference_prefix)} (?: - (?<label_id>\d+(?!\S\w)\b) | # Integer-based label ID, or - (?<label_name> - [A-Za-z0-9_\-\?\.&]+ | # String-based single-word label title, or - ".+?" # String-based multi-word label surrounded in quotes - ) + (?<label_id>\d+(?!\S\w)\b) + | # Integer-based label ID, or + (?<label_name> + # String-based single-word label title, or + [A-Za-z0-9_\-\?\.&]+ + (?<!\.|\?) + | + # String-based multi-word label surrounded in quotes + ".+?" + ) ) }x end diff --git a/changelogs/unreleased/dm-label-reference-period.yml b/changelogs/unreleased/dm-label-reference-period.yml new file mode 100644 index 00000000000..9fdd590641d --- /dev/null +++ b/changelogs/unreleased/dm-label-reference-period.yml @@ -0,0 +1,5 @@ +--- +title: Properly detect label reference if followed by period or question mark +merge_request: +author: +type: fixed diff --git a/spec/lib/banzai/filter/label_reference_filter_spec.rb b/spec/lib/banzai/filter/label_reference_filter_spec.rb index b30f3661e70..00257ed7904 100644 --- a/spec/lib/banzai/filter/label_reference_filter_spec.rb +++ b/spec/lib/banzai/filter/label_reference_filter_spec.rb @@ -148,9 +148,11 @@ describe Banzai::Filter::LabelReferenceFilter do expect(doc.text).to eq 'See ?g.fm&' end - it 'links with adjacent text' do - doc = reference_filter("Label (#{reference}).") - expect(doc.to_html).to match(%r(\(<a.+><span.+>\?g\.fm&</span></a>\)\.)) + it 'does not include trailing punctuation', :aggregate_failures do + ['.', ', ok?', '...', '?', '!', ': is that ok?'].each do |trailing_punctuation| + doc = filter("Label #{reference}#{trailing_punctuation}") + expect(doc.to_html).to match(%r(<a.+><span.+>\?g\.fm&</span></a>#{Regexp.escape(trailing_punctuation)})) + end end it 'ignores invalid label names' do |