diff options
author | Alex Hanselka <alex@gitlab.com> | 2019-01-16 23:12:29 +0000 |
---|---|---|
committer | Alex Hanselka <alex@gitlab.com> | 2019-01-16 23:12:29 +0000 |
commit | a080d5ffdcd0c9ef8d457d97429c19d67ee95a9f (patch) | |
tree | 1d225743d582473ae9c54d041e15b20cd7d1416c | |
parent | 300fef12295e24e33b7d180679d0f7c4333d91b7 (diff) | |
parent | e93cca010ab322c717e1df4967a7294c1c503fd5 (diff) | |
download | gitlab-ce-a080d5ffdcd0c9ef8d457d97429c19d67ee95a9f.tar.gz |
Merge branch '11-6-stable-patch-5' into '11-6-stable'
Prepare 11.6.5 release
See merge request gitlab-org/gitlab-ce!24439
20 files changed, 130 insertions, 25 deletions
diff --git a/app/assets/javascripts/vue_shared/components/markdown/field.vue b/app/assets/javascripts/vue_shared/components/markdown/field.vue index 2f7ed4a982c..937a2847a58 100644 --- a/app/assets/javascripts/vue_shared/components/markdown/field.vue +++ b/app/assets/javascripts/vue_shared/components/markdown/field.vue @@ -89,7 +89,6 @@ export default { return this.referencedUsers.length >= referencedUsersThreshold; }, lineContent() { - const FIRST_CHAR_REGEX = /^(\+|-)/; const [firstSuggestion] = this.suggestions; if (firstSuggestion) { return firstSuggestion.from_content; @@ -99,7 +98,7 @@ export default { const { rich_text: richText, text } = this.line; if (text) { - return text.replace(FIRST_CHAR_REGEX, ''); + return text; } return _.unescape(stripHtml(richText).replace(/\n/g, '')); diff --git a/app/assets/javascripts/vue_shared/components/markdown/suggestion_diff.vue b/app/assets/javascripts/vue_shared/components/markdown/suggestion_diff.vue index f98560f7336..b9f884074d0 100644 --- a/app/assets/javascripts/vue_shared/components/markdown/suggestion_diff.vue +++ b/app/assets/javascripts/vue_shared/components/markdown/suggestion_diff.vue @@ -50,7 +50,7 @@ export default { :help-page-path="helpPagePath" @apply="applySuggestion" /> - <table class="mb-3 md-suggestion-diff"> + <table class="mb-3 md-suggestion-diff js-syntax-highlight code"> <tbody> <!-- Old Line --> <tr class="line_holder old"> diff --git a/app/assets/javascripts/vue_shared/components/markdown/suggestions.vue b/app/assets/javascripts/vue_shared/components/markdown/suggestions.vue index 7c6dbee3e19..721f0276ac8 100644 --- a/app/assets/javascripts/vue_shared/components/markdown/suggestions.vue +++ b/app/assets/javascripts/vue_shared/components/markdown/suggestions.vue @@ -82,13 +82,12 @@ export default { // extracts the suggested lines from the markdown // calculates a line number for each line - const FIRST_CHAR_REGEX = /^(\+|-)/; const newLines = suggestionEl.querySelectorAll('.line'); const fromLine = this.suggestions.length ? this.suggestions[0].from_line : this.fromLine; const lines = []; newLines.forEach((line, i) => { - const content = `${line.innerText.replace(FIRST_CHAR_REGEX, '')}\n`; + const content = `${line.innerText}\n`; const lineNumber = fromLine + i; lines.push({ content, lineNumber }); }); diff --git a/app/controllers/admin/requests_profiles_controller.rb b/app/controllers/admin/requests_profiles_controller.rb index 57f7d3e3951..89d4c4f18d9 100644 --- a/app/controllers/admin/requests_profiles_controller.rb +++ b/app/controllers/admin/requests_profiles_controller.rb @@ -11,7 +11,7 @@ class Admin::RequestsProfilesController < Admin::ApplicationController profile = Gitlab::RequestProfiler::Profile.find(clean_name) if profile - render html: profile.content + render html: profile.content.html_safe else redirect_to admin_requests_profiles_path, alert: 'Profile not found' end diff --git a/app/helpers/sorting_helper.rb b/app/helpers/sorting_helper.rb index 67c808b167a..ebc711d4436 100644 --- a/app/helpers/sorting_helper.rb +++ b/app/helpers/sorting_helper.rb @@ -159,6 +159,15 @@ module SortingHelper sort_options_hash[sort_value] end + def issuable_sort_icon_suffix(sort_value) + case sort_value + when sort_value_milestone, sort_value_due_date, /_asc\z/ + 'lowest' + else + 'highest' + end + end + def issuable_sort_direction_button(sort_value) link_class = 'btn btn-default has-tooltip reverse-sort-btn qa-reverse-sort' reverse_sort = issuable_reverse_sort_order_hash[sort_value] @@ -171,15 +180,7 @@ module SortingHelper end link_to(reverse_url, type: 'button', class: link_class, title: 'Sort direction') do - icon_suffix = - case sort_value - when sort_value_milestone, sort_value_due_date, /_asc\z/ - 'lowest' - else - 'highest' - end - - sprite_icon("sort-#{icon_suffix}", size: 16) + sprite_icon("sort-#{issuable_sort_icon_suffix(sort_value)}", size: 16) end end diff --git a/app/views/projects/diffs/_warning.html.haml b/app/views/projects/diffs/_warning.html.haml index 2eef599cf84..2cc3d921abc 100644 --- a/app/views/projects/diffs/_warning.html.haml +++ b/app/views/projects/diffs/_warning.html.haml @@ -9,4 +9,4 @@ = link_to _("Plain diff"), merge_request_path(@merge_request, format: :diff), class: "btn btn-sm" = link_to _("Email patch"), merge_request_path(@merge_request, format: :patch), class: "btn btn-sm" %p - = _("To preserve performance only <strong>%{display_size} of ${real_size}</strong> files are displayed.").html_safe % { display_size: diff_files.size, real_size: diff_files.real_size } + = _("To preserve performance only <strong>%{display_size} of %{real_size}</strong> files are displayed.").html_safe % { display_size: diff_files.size, real_size: diff_files.real_size } diff --git a/app/views/shared/issuable/_sort_dropdown.html.haml b/app/views/shared/issuable/_sort_dropdown.html.haml index c211b9fcaa2..ec8684718e5 100644 --- a/app/views/shared/issuable/_sort_dropdown.html.haml +++ b/app/views/shared/issuable/_sort_dropdown.html.haml @@ -17,4 +17,5 @@ = sortable_item(sort_title_due_date, page_filter_path(sort: sort_value_due_date, label: true), sort_title) if viewing_issues = sortable_item(sort_title_popularity, page_filter_path(sort: sort_value_popularity, label: true), sort_title) = sortable_item(sort_title_label_priority, page_filter_path(sort: sort_value_label_priority, label: true), sort_title) + = render_if_exists('shared/ee/issuable/sort_dropdown', viewing_issues: viewing_issues, sort_title: sort_title) = issuable_sort_direction_button(sort_value) diff --git a/changelogs/unreleased/55945-suggested-change-highlight.yml b/changelogs/unreleased/55945-suggested-change-highlight.yml new file mode 100644 index 00000000000..611854d36ab --- /dev/null +++ b/changelogs/unreleased/55945-suggested-change-highlight.yml @@ -0,0 +1,5 @@ +--- +title: Add syntax highlighting to suggestion diff +merge_request: 24156 +author: +type: fixed diff --git a/changelogs/unreleased/sh-fix-gon-helper-avatar.yml b/changelogs/unreleased/sh-fix-gon-helper-avatar.yml new file mode 100644 index 00000000000..c83273608ad --- /dev/null +++ b/changelogs/unreleased/sh-fix-gon-helper-avatar.yml @@ -0,0 +1,5 @@ +--- +title: Fix no avatar not showing in user selection box +merge_request: 24346 +author: +type: fixed diff --git a/changelogs/unreleased/sh-fix-real-size-warnings.yml b/changelogs/unreleased/sh-fix-real-size-warnings.yml new file mode 100644 index 00000000000..5062ffd677c --- /dev/null +++ b/changelogs/unreleased/sh-fix-real-size-warnings.yml @@ -0,0 +1,5 @@ +--- +title: Fix broken templated "Too many changes to show" text +merge_request: 24282 +author: +type: fixed diff --git a/changelogs/unreleased/sh-fix-request-profiles-html.yml b/changelogs/unreleased/sh-fix-request-profiles-html.yml new file mode 100644 index 00000000000..74e4115db8e --- /dev/null +++ b/changelogs/unreleased/sh-fix-request-profiles-html.yml @@ -0,0 +1,5 @@ +--- +title: Fix requests profiler in admin page not rendering HTML properly +merge_request: 24291 +author: +type: fixed diff --git a/changelogs/unreleased/suggestion-dashes.yml b/changelogs/unreleased/suggestion-dashes.yml new file mode 100644 index 00000000000..e99ab30b263 --- /dev/null +++ b/changelogs/unreleased/suggestion-dashes.yml @@ -0,0 +1,5 @@ +--- +title: Fixed diff suggestions removing dashes +merge_request: +author: +type: fixed diff --git a/lib/gitlab/gon_helper.rb b/lib/gitlab/gon_helper.rb index 15137140639..9b1794eec91 100644 --- a/lib/gitlab/gon_helper.rb +++ b/lib/gitlab/gon_helper.rb @@ -8,10 +8,7 @@ module Gitlab def add_gon_variables gon.api_version = 'v4' - gon.default_avatar_url = - Gitlab::Utils.append_path( - Gitlab.config.gitlab.url, - ActionController::Base.helpers.image_path('no_avatar.png')) + gon.default_avatar_url = default_avatar_url gon.max_file_size = Gitlab::CurrentSettings.max_attachment_size gon.asset_host = ActionController::Base.asset_host gon.webpack_public_path = webpack_public_path @@ -50,5 +47,15 @@ module Gitlab # use this method to push multiple feature flags. gon.push({ features: { var_name => enabled } }, true) end + + def default_avatar_url + # We can't use ActionController::Base.helpers.image_url because it + # doesn't return an actual URL because request is nil for some reason. + # + # We also can't use Gitlab::Utils.append_path because the image path + # may be an absolute URL. + URI.join(Gitlab.config.gitlab.url, + ActionController::Base.helpers.image_path('no_avatar.png')).to_s + end end end diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 54e916e8df6..53fdbf77da0 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -7002,7 +7002,7 @@ msgstr "" msgid "To move or copy an entire GitLab project from another GitLab installation to this one, navigate to the original project's settings page, generate an export file, and upload it here." msgstr "" -msgid "To preserve performance only <strong>%{display_size} of ${real_size}</strong> files are displayed." +msgid "To preserve performance only <strong>%{display_size} of %{real_size}</strong> files are displayed." msgstr "" msgid "To start serving your jobs you can add Runners to your group" diff --git a/spec/controllers/admin/requests_profiles_controller_spec.rb b/spec/controllers/admin/requests_profiles_controller_spec.rb new file mode 100644 index 00000000000..f3799a23f8c --- /dev/null +++ b/spec/controllers/admin/requests_profiles_controller_spec.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Admin::RequestsProfilesController do + set(:admin) { create(:admin) } + + before do + sign_in(admin) + end + + describe '#show' do + let(:basename) { "profile_#{Time.now.to_i}.html" } + let(:tmpdir) { Dir.mktmpdir('profiler-test') } + let(:test_file) { File.join(tmpdir, basename) } + let(:profile) { Gitlab::RequestProfiler::Profile.new(basename) } + let(:sample_data) do + <<~HTML + <!DOCTYPE html> + <html> + <body> + <h1>My First Heading</h1> + <p>My first paragraph.</p> + </body> + </html> + HTML + end + + before do + stub_const('Gitlab::RequestProfiler::PROFILES_DIR', tmpdir) + output = File.open(test_file, 'w') + output.write(sample_data) + output.close + end + + after do + File.unlink(test_file) + end + + it 'loads an HTML profile' do + get :show, name: basename + + expect(response).to have_gitlab_http_status(200) + expect(response.body).to eq(sample_data) + end + end +end diff --git a/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb b/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb index 53ed5d78598..29b3d2b629b 100644 --- a/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb +++ b/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb @@ -88,6 +88,8 @@ describe 'Merge request > User merges when pipeline succeeds', :js do describe 'enabling Merge when pipeline succeeds via dropdown' do it 'activates the Merge when pipeline succeeds feature' do + wait_for_requests + find('.js-merge-moment').click click_link 'Merge when pipeline succeeds' diff --git a/spec/features/projects/compare_spec.rb b/spec/features/projects/compare_spec.rb index 69600884909..5f7cf68987e 100644 --- a/spec/features/projects/compare_spec.rb +++ b/spec/features/projects/compare_spec.rb @@ -87,6 +87,21 @@ describe "Compare", :js do expect(find(".js-compare-from-dropdown .dropdown-content")).to have_selector("li", count: 3) end + + context 'when commit has overflow', :js do + it 'displays warning' do + visit project_compare_index_path(project, from: "feature", to: "master") + + allow(Commit).to receive(:max_diff_options).and_return(max_files: 3) + allow_any_instance_of(DiffHelper).to receive(:render_overflow_warning?).and_return(true) + + click_button('Compare') + + page.within('.alert') do + expect(page).to have_text("Too many changes to show. To preserve performance only 3 of 3+ files are displayed.") + end + end + end end describe "tags" do diff --git a/spec/javascripts/vue_shared/components/markdown/suggestion_diff_spec.js b/spec/javascripts/vue_shared/components/markdown/suggestion_diff_spec.js index d4ed8f2f7a4..f87c2a92f47 100644 --- a/spec/javascripts/vue_shared/components/markdown/suggestion_diff_spec.js +++ b/spec/javascripts/vue_shared/components/markdown/suggestion_diff_spec.js @@ -34,8 +34,8 @@ describe('Suggestion Diff component', () => { expect(vm.$el.querySelector('.qa-suggestion-diff-header')).not.toBeNull(); }); - it('renders a diff table', () => { - expect(vm.$el.querySelector('table.md-suggestion-diff')).not.toBeNull(); + it('renders a diff table with syntax highlighting', () => { + expect(vm.$el.querySelector('.md-suggestion-diff.js-syntax-highlight.code')).not.toBeNull(); }); it('renders the oldLineNumber', () => { diff --git a/spec/javascripts/vue_shared/components/markdown/suggestions_spec.js b/spec/javascripts/vue_shared/components/markdown/suggestions_spec.js index ab1b747c360..423cd6dee0f 100644 --- a/spec/javascripts/vue_shared/components/markdown/suggestions_spec.js +++ b/spec/javascripts/vue_shared/components/markdown/suggestions_spec.js @@ -29,7 +29,7 @@ const generateLine = content => { const generateMockLines = () => { const line1 = generateLine('Line 1'); const line2 = generateLine('Line 2'); - const line3 = generateLine('Line 3'); + const line3 = generateLine('- Line 3'); const container = document.createElement('div'); container.appendChild(line1); @@ -80,7 +80,7 @@ describe('Suggestion component', () => { const expectedReturn = [ { content: 'Line 1\n', lineNumber: 1 }, { content: 'Line 2\n', lineNumber: 2 }, - { content: 'Line 3\n', lineNumber: 3 }, + { content: '- Line 3\n', lineNumber: 3 }, ]; expect(vm.extractNewLines(generateMockLines())).toEqual(expectedReturn); diff --git a/spec/lib/gitlab/gon_helper_spec.rb b/spec/lib/gitlab/gon_helper_spec.rb index c6f09ca2112..1ff2334bacf 100644 --- a/spec/lib/gitlab/gon_helper_spec.rb +++ b/spec/lib/gitlab/gon_helper_spec.rb @@ -29,4 +29,13 @@ describe Gitlab::GonHelper do helper.push_frontend_feature_flag(:my_feature_flag, 10) end end + + describe '#default_avatar_url' do + it 'returns an absolute URL' do + url = helper.default_avatar_url + + expect(url).to match(/^http/) + expect(url).to match(/no_avatar.*png$/) + end + end end |