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 = ''  |