Defect #28322 ยป 0001-Don-t-match-commit-references-across-new-lines.patch
| app/models/changeset.rb | ||
|---|---|---|
| 125 | 125 | |
| 126 | 126 |
referenced_issues = [] |
| 127 | 127 | |
| 128 |
comments.scan(/([\s\(\[,-]|^)((#{kw_regexp})[\s:]+)?(#\d+(\s+@#{TIMELOG_RE})?([\s,;&]+#\d+(\s+@#{TIMELOG_RE})?)*)(?=[[:punct:]]|\s|<|$)/i) do |match|
|
|
| 128 |
comments.scan(/([[[:blank:]]\(\[,-]|^)((#{kw_regexp})[[[:blank:]]:]+)?(#\d+([[:blank:]]+@#{TIMELOG_RE})?([[[:blank:]],;&]+#\d+([[:blank:]]+@#{TIMELOG_RE})?)*)(?=[[:punct:]]|[[:blank:]]|<|$)/i) do |match|
|
|
| 129 | 129 |
action, refs = match[2].to_s.downcase, match[3] |
| 130 | 130 |
next unless action.present? || ref_keywords_any |
| 131 | 131 | |
| 132 |
refs.scan(/#(\d+)(\s+@#{TIMELOG_RE})?/).each do |m|
|
|
| 132 |
refs.scan(/#(\d+)([[:blank:]]+@#{TIMELOG_RE})?/).each do |m|
|
|
| 133 | 133 |
issue, hours = find_referenced_issue_by_id(m[0].to_i), m[2] |
| 134 | 134 |
if issue && !issue_linked_to_same_commit?(issue) |
| 135 | 135 |
referenced_issues << issue |
| test/unit/changeset_test.rb | ||
|---|---|---|
| 60 | 60 |
assert_equal [1], c.issue_ids.sort |
| 61 | 61 |
end |
| 62 | 62 | |
| 63 |
def test_ref_keywords_stop_at_newlines |
|
| 64 |
ActionMailer::Base.deliveries.clear |
|
| 65 |
Setting.commit_ref_keywords = '*' |
|
| 66 |
Setting.commit_update_keywords = [{'keywords' => 'fixes', 'status_id' => '5'}]
|
|
| 67 | ||
| 68 |
c = Changeset.new(:repository => Project.find(1).repository, |
|
| 69 |
:committed_on => Time.now, |
|
| 70 |
:comments => "#1 some UI fixes\n#2 still work in progess", |
|
| 71 |
:revision => '12345') |
|
| 72 |
assert c.save |
|
| 73 |
assert_equal [1, 2], c.issue_ids.sort |
|
| 74 |
wip = Issue.find(2) |
|
| 75 |
assert !wip.closed? |
|
| 76 |
assert_empty ActionMailer::Base.deliveries |
|
| 77 |
end |
|
| 78 | ||
| 63 | 79 |
def test_ref_keywords_any_only |
| 64 | 80 |
Setting.commit_ref_keywords = '*' |
| 65 | 81 |
Setting.commit_update_keywords = '' |