Fix display of push events for removed refs
This changes the style of push events that remove tags or branches so they don't display the commit details. This prevents displaying commit details such as: 000000 . --broken encoding Instead we now simply display the header such as: Administrator deleted branch example-branch This is displayed in the same style as events for newly created branches/tags. This commit also ensures that if no commit message is present we simply don't display anything, instead of "--broken encoding". Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/36685 Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/36722
This commit is contained in:
parent
e6f20e52f6
commit
b4aaced71a
7 changed files with 62 additions and 11 deletions
|
@ -181,6 +181,7 @@ module EventsHelper
|
|||
end
|
||||
|
||||
def event_commit_title(message)
|
||||
message ||= ''
|
||||
(message.split("\n").first || "").truncate(70)
|
||||
rescue
|
||||
"--broken encoding"
|
||||
|
|
|
@ -406,7 +406,7 @@ class Event < ActiveRecord::Base
|
|||
|
||||
def body?
|
||||
if push?
|
||||
push_with_commits? || rm_ref?
|
||||
push_with_commits?
|
||||
elsif note?
|
||||
true
|
||||
else
|
||||
|
|
|
@ -5,9 +5,10 @@
|
|||
%i
|
||||
at
|
||||
= event.created_at.to_s(:short)
|
||||
%blockquote= markdown(escape_once(event.commit_title), pipeline: :atom, project: event.project, author: event.author)
|
||||
- if event.commits_count > 1
|
||||
%p
|
||||
%i
|
||||
\... and
|
||||
= pluralize(event.commits_count - 1, "more commit")
|
||||
- unless event.rm_ref?
|
||||
%blockquote= markdown(escape_once(event.commit_title), pipeline: :atom, project: event.project, author: event.author)
|
||||
- if event.commits_count > 1
|
||||
%p
|
||||
%i
|
||||
\... and
|
||||
= pluralize(event.commits_count - 1, "more commit")
|
||||
|
|
|
@ -41,7 +41,3 @@
|
|||
%li.commits-stat
|
||||
= link_to create_mr_path(project.default_branch, event.ref_name, project) do
|
||||
Create Merge Request
|
||||
- elsif event.rm_ref?
|
||||
.event-body
|
||||
%ul.well-list.event_commits
|
||||
= render "events/commit", project: project, event: event
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix display of push events for removed refs
|
||||
merge_request:
|
||||
author:
|
||||
type: fixed
|
|
@ -106,5 +106,9 @@ describe EventsHelper do
|
|||
it "handles empty strings" do
|
||||
expect(helper.event_commit_title("")).to eq("")
|
||||
end
|
||||
|
||||
it 'handles nil values' do
|
||||
expect(helper.event_commit_title(nil)).to eq('')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -304,6 +304,50 @@ describe Event do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#body?' do
|
||||
let(:push_event) do
|
||||
event = build(:push_event)
|
||||
|
||||
allow(event).to receive(:push?).and_return(true)
|
||||
|
||||
event
|
||||
end
|
||||
|
||||
it 'returns true for a push event with commits' do
|
||||
allow(push_event).to receive(:push_with_commits?).and_return(true)
|
||||
|
||||
expect(push_event).to be_body
|
||||
end
|
||||
|
||||
it 'returns false for a push event without a valid commit range' do
|
||||
allow(push_event).to receive(:push_with_commits?).and_return(false)
|
||||
|
||||
expect(push_event).not_to be_body
|
||||
end
|
||||
|
||||
it 'returns true for a Note event' do
|
||||
event = build(:event)
|
||||
|
||||
allow(event).to receive(:note?).and_return(true)
|
||||
|
||||
expect(event).to be_body
|
||||
end
|
||||
|
||||
it 'returns true if the target responds to #title' do
|
||||
event = build(:event)
|
||||
|
||||
allow(event).to receive(:target).and_return(double(:target, title: 'foo'))
|
||||
|
||||
expect(event).to be_body
|
||||
end
|
||||
|
||||
it 'returns false for a regular event without a target' do
|
||||
event = build(:event)
|
||||
|
||||
expect(event).not_to be_body
|
||||
end
|
||||
end
|
||||
|
||||
def create_push_event(project, user)
|
||||
event = create(:push_event, project: project, author: user)
|
||||
|
||||
|
|
Loading…
Reference in a new issue