diff --git a/app/presenters/commit_presenter.rb b/app/presenters/commit_presenter.rb index 2f50590190111394a6b513ce0cf8ac2c7e998ed1..2879326ff8aa3eac842d1b8cff3f5a9221984233 100644 --- a/app/presenters/commit_presenter.rb +++ b/app/presenters/commit_presenter.rb @@ -26,7 +26,7 @@ def any_pipelines? end def tags_for_display - commit.referenced_by&.map { |tag| tag.delete_prefix(Gitlab::Git::TAG_REF_PREFIX) } + commit.referenced_by&.map { |tag_name| Gitlab::Git.ref_name(tag_name) } end def signature_html diff --git a/spec/controllers/projects/commits_controller_spec.rb b/spec/controllers/projects/commits_controller_spec.rb index 55ad92c517cc46042417d6858de786e57d89196e..e05df1f1c63c4ed404fdf85c5e3fb12b2ba6eb4c 100644 --- a/spec/controllers/projects/commits_controller_spec.rb +++ b/spec/controllers/projects/commits_controller_spec.rb @@ -3,8 +3,9 @@ require 'spec_helper' RSpec.describe Projects::CommitsController, feature_category: :source_code_management do - let(:project) { create(:project, :repository) } - let(:user) { create(:user) } + let_it_be(:project) { create(:project, :repository) } + let_it_be(:repository) { project.repository } + let_it_be(:user) { create(:user) } before do project.add_maintainer(user) @@ -105,7 +106,22 @@ expect_next_instance_of(CommitCollection) do |collection| expect(collection).to receive(:load_tags) end + get :show, params: { namespace_id: project.namespace, project_id: project, id: 'master/README.md' } + + expect(response).to have_gitlab_http_status(:ok) + end + + context 'when tag has a non-ASCII encoding' do + before do + repository.add_tag(user, 'tést', 'master') + end + + it 'does not raise an exception' do + get :show, params: { namespace_id: project.namespace, project_id: project, id: 'master' } + + expect(response).to have_gitlab_http_status(:ok) + end end context 'when the show_tags_on_commits_view flag is disabled' do