diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 2daaaf42da62ac3fdaf8278788c06e5ca045552a..b3af3ff7c1788f235e2097137d74997d5dc65596 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -527,7 +527,11 @@ class MergeRequest < ActiveRecord::Base # Return the set of issues that will be closed if this merge request is accepted. def closes_issues(current_user = self.author) if target_branch == project.default_branch - messages = commits.map(&:safe_message) << description + messages = if merge_request_diff + commits.map(&:safe_message) << description + else + [description] + end Gitlab::ClosingIssueExtractor.new(project, current_user). closed_by_message(messages.join("\n")) diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb index 0b989b98b6128328b3446cf92934ad596f1a9646..70051e4516df3474bc25096cee982e64871ae502 100644 --- a/spec/models/ci/pipeline_spec.rb +++ b/spec/models/ci/pipeline_spec.rb @@ -197,7 +197,7 @@ describe Ci::Pipeline, models: true do time = Time.now Timecop.freeze(time) { build.run } - expect(merge_request.metrics.latest_build_started_at).to eq(time) + expect(merge_request.metrics.latest_build_started_at).to be_within(1.second).of(time) end it 'clears the build end time' do @@ -213,7 +213,7 @@ describe Ci::Pipeline, models: true do time = Time.now Timecop.freeze(time) { build.success } - expect(merge_request.metrics.latest_build_finished_at).to eq(time) + expect(merge_request.metrics.latest_build_finished_at).to be_within(1.second).of(time) end end end diff --git a/spec/models/issue/metrics_spec.rb b/spec/models/issue/metrics_spec.rb index df97748694346d74b288fc41c6873d8441bca90b..e170b087ebcba10a6f51c24718ba229a78ffee37 100644 --- a/spec/models/issue/metrics_spec.rb +++ b/spec/models/issue/metrics_spec.rb @@ -13,7 +13,7 @@ describe Issue::Metrics, models: true do metrics = subject.metrics expect(metrics).to be_present - expect(metrics.first_associated_with_milestone_at).to eq(time) + expect(metrics.first_associated_with_milestone_at).to be_within(1.second).of(time) end it "does not record the second time an issue is associated with a milestone" do @@ -24,7 +24,7 @@ describe Issue::Metrics, models: true do metrics = subject.metrics expect(metrics).to be_present - expect(metrics.first_associated_with_milestone_at).to eq(time) + expect(metrics.first_associated_with_milestone_at).to be_within(1.second).of(time) end end @@ -36,7 +36,7 @@ describe Issue::Metrics, models: true do metrics = subject.metrics expect(metrics).to be_present - expect(metrics.first_added_to_board_at).to eq(time) + expect(metrics.first_added_to_board_at).to be_within(1.second).of(time) end it "does not record the second time an issue is associated with a list label" do @@ -48,7 +48,7 @@ describe Issue::Metrics, models: true do metrics = subject.metrics expect(metrics).to be_present - expect(metrics.first_added_to_board_at).to eq(time) + expect(metrics.first_added_to_board_at).to be_within(1.second).of(time) end end end diff --git a/spec/models/merge_request/metrics_spec.rb b/spec/models/merge_request/metrics_spec.rb index 718b50642ad82685e3a7014c6d017c996ba485f1..a79dd215d419a318d3a43398d3bc195b589606e8 100644 --- a/spec/models/merge_request/metrics_spec.rb +++ b/spec/models/merge_request/metrics_spec.rb @@ -12,7 +12,7 @@ describe MergeRequest::Metrics, models: true do metrics = subject.metrics expect(metrics).to be_present - expect(metrics.merged_at).to eq(time) + expect(metrics.merged_at).to be_within(1.second).of(time) end end end diff --git a/spec/services/create_deployment_service_spec.rb b/spec/services/create_deployment_service_spec.rb index f80f89534868ea8c49b9ba18345fe6b2df55ff23..3a565fa44b51ba0c2da8d2ca7accb1b0bd6436d9 100644 --- a/spec/services/create_deployment_service_spec.rb +++ b/spec/services/create_deployment_service_spec.rb @@ -190,7 +190,7 @@ describe CreateDeploymentService, services: true do time = Time.now Timecop.freeze(time) { service.execute } - expect(merge_request.metrics.first_deployed_to_production_at).to eq(time) + expect(merge_request.metrics.first_deployed_to_production_at).to be_within(1.second).of(time) end it "doesn't set the time if the deploy's environment is not 'production'" do @@ -216,13 +216,13 @@ describe CreateDeploymentService, services: true do time = Time.now Timecop.freeze(time) { service.execute } - expect(merge_request.reload.metrics.first_deployed_to_production_at).to eq(time) + expect(merge_request.reload.metrics.first_deployed_to_production_at).to be_within(1.second).of(time) # Current deploy service = described_class.new(project, user, params) Timecop.freeze(time + 12.hours) { service.execute } - expect(merge_request.reload.metrics.first_deployed_to_production_at).to eq(time) + expect(merge_request.reload.metrics.first_deployed_to_production_at).to be_within(1.second).of(time) end end diff --git a/spec/services/git_push_service_spec.rb b/spec/services/git_push_service_spec.rb index f2ef9f3dd81e131f4c049e3a7e663c3a70914d40..cdf0d44a32b1a26f30eff06c6ed9210b90135ec0 100644 --- a/spec/services/git_push_service_spec.rb +++ b/spec/services/git_push_service_spec.rb @@ -364,7 +364,7 @@ describe GitPushService, services: true do it 'sets the metric for referenced issues' do execute_service(project, user, @oldrev, @newrev, @ref) - expect(issue.metrics.first_mentioned_in_commit_at).to eq(commit_time) + expect(issue.metrics.first_mentioned_in_commit_at).to be_within(1.second).of(commit_time) end it 'does not set the metric for non-referenced issues' do