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