Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-29 03:07:44 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-29 03:07:44 +0300
commite56fd471503e00167ca96e7792f75a0d1f3b7891 (patch)
tree87b8b69ea03c78beb5be85c5080c73f601ecc718
parent8831c2df7fa3f1bb567e284e4b8c0a4f441e74b3 (diff)
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--Gemfile3
-rw-r--r--Gemfile.lock4
-rwxr-xr-xbin/mail_room2
-rw-r--r--changelogs/unreleased/201771.yml5
-rw-r--r--config/routes.rb5
-rw-r--r--lib/gitlab/sidekiq_logging/structured_logger.rb6
-rw-r--r--spec/features/groups/navbar_spec.rb15
-rw-r--r--spec/javascripts/vue_shared/components/content_viewer/content_viewer_spec.js86
-rw-r--r--spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb19
-rwxr-xr-x[-rw-r--r--]vendor/gitignore/C++.gitignore0
-rwxr-xr-x[-rw-r--r--]vendor/gitignore/Java.gitignore0
11 files changed, 94 insertions, 51 deletions
diff --git a/Gemfile b/Gemfile
index 6737bc3012b..40aca12aea8 100644
--- a/Gemfile
+++ b/Gemfile
@@ -419,7 +419,8 @@ end
gem 'octokit', '~> 4.15'
-gem 'mail_room', '~> 0.10.0'
+# https://gitlab.com/gitlab-org/gitlab/issues/207207
+gem 'gitlab-mail_room', '~> 0.0.2', require: 'mail_room'
gem 'email_reply_trimmer', '~> 0.1'
gem 'html2text'
diff --git a/Gemfile.lock b/Gemfile.lock
index f4a0ae4ebef..38de70b41ef 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -388,6 +388,7 @@ GEM
opentracing (~> 0.4)
redis (> 3.0.0, < 5.0.0)
gitlab-license (1.0.0)
+ gitlab-mail_room (0.0.2)
gitlab-markup (1.7.0)
gitlab-net-dns (0.9.1)
gitlab-puma (4.3.1.gitlab.2)
@@ -616,7 +617,6 @@ GEM
lumberjack (1.0.13)
mail (2.7.1)
mini_mime (>= 0.1.1)
- mail_room (0.10.0)
marcel (0.3.3)
mimemagic (~> 0.3.2)
marginalia (1.8.0)
@@ -1235,6 +1235,7 @@ DEPENDENCIES
gitlab-chronic (~> 0.10.5)
gitlab-labkit (= 0.10.0)
gitlab-license (~> 1.0)
+ gitlab-mail_room (~> 0.0.2)
gitlab-markup (~> 1.7.0)
gitlab-net-dns (~> 0.9.1)
gitlab-puma (~> 4.3.1.gitlab.2)
@@ -1284,7 +1285,6 @@ DEPENDENCIES
loofah (~> 2.2)
lru_redux
mail (= 2.7.1)
- mail_room (~> 0.10.0)
marginalia (~> 1.8.0)
memory_profiler (~> 0.9)
method_source (~> 0.8)
diff --git a/bin/mail_room b/bin/mail_room
index 74a84f5b2b4..2539e3d388e 100755
--- a/bin/mail_room
+++ b/bin/mail_room
@@ -19,7 +19,7 @@ get_mail_room_pid()
start()
{
- bin/daemon_with_pidfile $mail_room_pidfile bundle exec mail_room -q -c $mail_room_config >> $mail_room_logfile 2>&1
+ bin/daemon_with_pidfile $mail_room_pidfile bundle exec mail_room --log-exit-as json -q -c $mail_room_config >> $mail_room_logfile 2>&1
}
stop()
diff --git a/changelogs/unreleased/201771.yml b/changelogs/unreleased/201771.yml
new file mode 100644
index 00000000000..8677b3d853c
--- /dev/null
+++ b/changelogs/unreleased/201771.yml
@@ -0,0 +1,5 @@
+---
+title: Replace content_viewer_spec setTimeouts with semantic actions / events
+merge_request:
+author: Oregand
+type: other
diff --git a/config/routes.rb b/config/routes.rb
index 16b15e5300a..cf39ca3384d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -121,10 +121,7 @@ Rails.application.routes.draw do
draw :country
draw :country_state
draw :subscription
-
- constraints(-> (*) { Gitlab::Analytics.any_features_enabled? }) do
- draw :analytics
- end
+ draw :analytics
end
if ENV['GITLAB_CHAOS_SECRET'] || Rails.env.development? || Rails.env.test?
diff --git a/lib/gitlab/sidekiq_logging/structured_logger.rb b/lib/gitlab/sidekiq_logging/structured_logger.rb
index b45014d283f..72820d0a25e 100644
--- a/lib/gitlab/sidekiq_logging/structured_logger.rb
+++ b/lib/gitlab/sidekiq_logging/structured_logger.rb
@@ -85,7 +85,11 @@ module Gitlab
job['pid'] = ::Process.pid
job.delete('args') unless ENV['SIDEKIQ_LOG_ARGUMENTS']
- job['args'] = Gitlab::Utils::LogLimitedArray.log_limited_array(job['args']) if job['args']
+
+ if job['args']
+ job['args'].map!(&:to_s)
+ job['args'] = Gitlab::Utils::LogLimitedArray.log_limited_array(job['args'])
+ end
job
end
diff --git a/spec/features/groups/navbar_spec.rb b/spec/features/groups/navbar_spec.rb
index 8c16dcec42f..4d45bcf639d 100644
--- a/spec/features/groups/navbar_spec.rb
+++ b/spec/features/groups/navbar_spec.rb
@@ -73,5 +73,20 @@ describe 'Group navbar' do
it_behaves_like 'verified navigation bar'
end
+
+ context 'when value stream analytics is available' do
+ before do
+ stub_licensed_features(cycle_analytics_for_groups: true)
+
+ analytics_nav_item[:nav_sub_items] << _('Value Stream Analytics')
+
+ group.add_maintainer(user)
+ sign_in(user)
+
+ visit group_path(group)
+ end
+
+ it_behaves_like 'verified navigation bar'
+ end
end
end
diff --git a/spec/javascripts/vue_shared/components/content_viewer/content_viewer_spec.js b/spec/javascripts/vue_shared/components/content_viewer/content_viewer_spec.js
index e2a1ed931f1..fbe9337ecf4 100644
--- a/spec/javascripts/vue_shared/components/content_viewer/content_viewer_spec.js
+++ b/spec/javascripts/vue_shared/components/content_viewer/content_viewer_spec.js
@@ -1,6 +1,7 @@
import Vue from 'vue';
import MockAdapter from 'axios-mock-adapter';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
+import waitForPromises from 'spec/helpers/wait_for_promises';
import { GREEN_BOX_IMAGE_URL } from 'spec/test_constants';
import axios from '~/lib/utils/axios_utils';
import contentViewer from '~/vue_shared/components/content_viewer/content_viewer.vue';
@@ -22,7 +23,7 @@ describe('ContentViewer', () => {
it('markdown preview renders + loads rendered markdown from server', done => {
mock = new MockAdapter(axios);
- mock.onPost(`${gon.relative_url_root}/testproject/preview_markdown`).reply(200, {
+ mock.onPost(`${gon.relative_url_root}/testproject/preview_markdown`).replyOnce(200, {
body: '<b>testing</b>',
});
@@ -33,13 +34,12 @@ describe('ContentViewer', () => {
type: 'markdown',
});
- const previewContainer = vm.$el.querySelector('.md-previewer');
-
- setTimeout(() => {
- expect(previewContainer.textContent).toContain('testing');
-
- done();
- });
+ waitForPromises()
+ .then(() => {
+ expect(vm.$el.querySelector('.md-previewer').textContent).toContain('testing');
+ })
+ .then(done)
+ .catch(done.fail);
});
it('renders image preview', done => {
@@ -49,11 +49,12 @@ describe('ContentViewer', () => {
type: 'image',
});
- setTimeout(() => {
- expect(vm.$el.querySelector('img').getAttribute('src')).toBe(GREEN_BOX_IMAGE_URL);
-
- done();
- });
+ vm.$nextTick()
+ .then(() => {
+ expect(vm.$el.querySelector('img').getAttribute('src')).toBe(GREEN_BOX_IMAGE_URL);
+ })
+ .then(done)
+ .catch(done.fail);
});
it('renders fallback download control', done => {
@@ -62,18 +63,19 @@ describe('ContentViewer', () => {
fileSize: 1024,
});
- setTimeout(() => {
- expect(
- vm.$el
- .querySelector('.file-info')
- .textContent.trim()
- .replace(/\s+/, ' '),
- ).toEqual('test.abc (1.00 KiB)');
-
- expect(vm.$el.querySelector('.btn.btn-default').textContent.trim()).toEqual('Download');
-
- done();
- });
+ vm.$nextTick()
+ .then(() => {
+ expect(
+ vm.$el
+ .querySelector('.file-info')
+ .textContent.trim()
+ .replace(/\s+/, ' '),
+ ).toEqual('test.abc (1.00 KiB)');
+
+ expect(vm.$el.querySelector('.btn.btn-default').textContent.trim()).toEqual('Download');
+ })
+ .then(done)
+ .catch(done.fail);
});
it('renders fallback download control for file with a data URL path properly', done => {
@@ -82,13 +84,14 @@ describe('ContentViewer', () => {
filePath: 'somepath/test.abc',
});
- setTimeout(() => {
- expect(vm.$el.querySelector('.file-info').textContent.trim()).toEqual('test.abc');
- expect(vm.$el.querySelector('.btn.btn-default')).toHaveAttr('download', 'test.abc');
- expect(vm.$el.querySelector('.btn.btn-default').textContent.trim()).toEqual('Download');
-
- done();
- });
+ vm.$nextTick()
+ .then(() => {
+ expect(vm.$el.querySelector('.file-info').textContent.trim()).toEqual('test.abc');
+ expect(vm.$el.querySelector('.btn.btn-default')).toHaveAttr('download', 'test.abc');
+ expect(vm.$el.querySelector('.btn.btn-default').textContent.trim()).toEqual('Download');
+ })
+ .then(done)
+ .catch(done.fail);
});
it('markdown preview receives the file path as a parameter', done => {
@@ -106,14 +109,15 @@ describe('ContentViewer', () => {
filePath: 'foo/test.md',
});
- setTimeout(() => {
- expect(axios.post).toHaveBeenCalledWith(
- `${gon.relative_url_root}/testproject/preview_markdown`,
- { path: 'foo/test.md', text: '* Test' },
- jasmine.any(Object),
- );
-
- done();
- });
+ vm.$nextTick()
+ .then(() => {
+ expect(axios.post).toHaveBeenCalledWith(
+ `${gon.relative_url_root}/testproject/preview_markdown`,
+ { path: 'foo/test.md', text: '* Test' },
+ jasmine.any(Object),
+ );
+ })
+ .then(done)
+ .catch(done.fail);
});
});
diff --git a/spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb b/spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb
index f294d7f7fcd..4b012f4f83d 100644
--- a/spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb
+++ b/spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb
@@ -30,6 +30,7 @@ describe Gitlab::SidekiqLogging::StructuredLogger do
let(:clock_thread_cputime_end) { 1.333333799 }
let(:start_payload) do
job.except('error_backtrace', 'error_class', 'error_message').merge(
+ 'args' => job['args'].map(&:to_s),
'message' => 'TestWorker JID-da883554ee4fe414012f5f42: start',
'job_status' => 'start',
'pid' => Process.pid,
@@ -99,13 +100,29 @@ describe Gitlab::SidekiqLogging::StructuredLogger do
end
end
+ context 'when the job args contain non-string objects' do
+ it 'converts them to strings' do
+ Timecop.freeze(timestamp) do
+ job['args'] = [2, true, 'foo', { "foo" => "bar" }]
+ expected_args = ['2', 'true', 'foo', '{"foo"=>"bar"}']
+
+ expect(logger).to receive(:info).with(start_payload.merge('args' => expected_args)).ordered
+ expect(logger).to receive(:info).with(end_payload.merge('args' => expected_args)).ordered
+ expect(subject).to receive(:log_job_start).and_call_original
+ expect(subject).to receive(:log_job_done).and_call_original
+
+ subject.call(job, 'test_queue') { }
+ end
+ end
+ end
+
context 'when the job args are bigger than the maximum allowed' do
it 'keeps args from the front until they exceed the limit' do
Timecop.freeze(timestamp) do
half_limit = Gitlab::Utils::LogLimitedArray::MAXIMUM_ARRAY_LENGTH / 2
job['args'] = [1, 2, 'a' * half_limit, 'b' * half_limit, 3]
- expected_args = job['args'].take(3) + ['...']
+ expected_args = job['args'].map(&:to_s).take(3) + ['...']
expect(logger).to receive(:info).with(start_payload.merge('args' => expected_args)).ordered
expect(logger).to receive(:info).with(end_payload.merge('args' => expected_args)).ordered
diff --git a/vendor/gitignore/C++.gitignore b/vendor/gitignore/C++.gitignore
index 259148fa18f..259148fa18f 100644..100755
--- a/vendor/gitignore/C++.gitignore
+++ b/vendor/gitignore/C++.gitignore
diff --git a/vendor/gitignore/Java.gitignore b/vendor/gitignore/Java.gitignore
index a1c2a238a96..a1c2a238a96 100644..100755
--- a/vendor/gitignore/Java.gitignore
+++ b/vendor/gitignore/Java.gitignore