From 05436172db724cb7863571d01b86bee6ad03ada0 Mon Sep 17 00:00:00 2001
From: Sean Griffin <sean@seantheprogrammer.com>
Date: Wed, 23 Sep 2015 09:33:43 -0600
Subject: Don't rely on subsecond precision being applied in tests

When I originally reviewed the #20317, I believe these changes were
present, but it appears that it was later updated so that they were
removed. Since Travis hadn't re-run the build, this slipped through.
---
 .../cases/associations/belongs_to_associations_test.rb |  4 +++-
 .../cases/associations/has_many_associations_test.rb   |  4 +++-
 activerecord/test/cases/dirty_test.rb                  | 18 ++++++++++++++++--
 activerecord/test/cases/integration_test.rb            |  1 +
 activerecord/test/cases/touch_later_test.rb            |  2 +-
 5 files changed, 24 insertions(+), 5 deletions(-)

(limited to 'activerecord/test')

diff --git a/activerecord/test/cases/associations/belongs_to_associations_test.rb b/activerecord/test/cases/associations/belongs_to_associations_test.rb
index 02b67f901f..938350627f 100644
--- a/activerecord/test/cases/associations/belongs_to_associations_test.rb
+++ b/activerecord/test/cases/associations/belongs_to_associations_test.rb
@@ -500,7 +500,9 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
     line_item = LineItem.create!
     invoice = Invoice.create!(line_items: [line_item])
     initial = invoice.updated_at
-    line_item.touch
+    travel(1.second) do
+      line_item.touch
+    end
 
     assert_not_equal initial, invoice.reload.updated_at
   end
diff --git a/activerecord/test/cases/associations/has_many_associations_test.rb b/activerecord/test/cases/associations/has_many_associations_test.rb
index 0beaf0056a..cd19a7a5bc 100644
--- a/activerecord/test/cases/associations/has_many_associations_test.rb
+++ b/activerecord/test/cases/associations/has_many_associations_test.rb
@@ -170,7 +170,9 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
     part = ShipPart.create(name: 'cockpit')
     updated_at = part.updated_at
 
-    ship.parts << part
+    travel(1.second) do
+      ship.parts << part
+    end
 
     assert_equal part.ship, ship
     assert_not_equal part.updated_at, updated_at
diff --git a/activerecord/test/cases/dirty_test.rb b/activerecord/test/cases/dirty_test.rb
index f5aaf22e13..e9a80842d0 100644
--- a/activerecord/test/cases/dirty_test.rb
+++ b/activerecord/test/cases/dirty_test.rb
@@ -467,8 +467,10 @@ class DirtyTest < ActiveRecord::TestCase
       topic.save!
 
       updated_at = topic.updated_at
-      topic.content[:hello] = 'world'
-      topic.save!
+      travel(1.second) do
+        topic.content[:hello] = 'world'
+        topic.save!
+      end
 
       assert_not_equal updated_at, topic.updated_at
       assert_equal 'world', topic.content[:hello]
@@ -521,6 +523,9 @@ class DirtyTest < ActiveRecord::TestCase
     assert_equal Hash.new, pirate.previous_changes
 
     pirate = Pirate.find_by_catchphrase("arrr")
+
+    travel(1.second)
+
     pirate.catchphrase = "Me Maties!"
     pirate.save!
 
@@ -532,6 +537,9 @@ class DirtyTest < ActiveRecord::TestCase
     assert !pirate.previous_changes.key?('created_on')
 
     pirate = Pirate.find_by_catchphrase("Me Maties!")
+
+    travel(1.second)
+
     pirate.catchphrase = "Thar She Blows!"
     pirate.save
 
@@ -542,6 +550,8 @@ class DirtyTest < ActiveRecord::TestCase
     assert !pirate.previous_changes.key?('parrot_id')
     assert !pirate.previous_changes.key?('created_on')
 
+    travel(1.second)
+
     pirate = Pirate.find_by_catchphrase("Thar She Blows!")
     pirate.update(catchphrase: "Ahoy!")
 
@@ -552,6 +562,8 @@ class DirtyTest < ActiveRecord::TestCase
     assert !pirate.previous_changes.key?('parrot_id')
     assert !pirate.previous_changes.key?('created_on')
 
+    travel(1.second)
+
     pirate = Pirate.find_by_catchphrase("Ahoy!")
     pirate.update_attribute(:catchphrase, "Ninjas suck!")
 
@@ -561,6 +573,8 @@ class DirtyTest < ActiveRecord::TestCase
     assert_not_nil pirate.previous_changes['updated_on'][1]
     assert !pirate.previous_changes.key?('parrot_id')
     assert !pirate.previous_changes.key?('created_on')
+  ensure
+    travel_back
   end
 
   if ActiveRecord::Base.connection.supports_migrations?
diff --git a/activerecord/test/cases/integration_test.rb b/activerecord/test/cases/integration_test.rb
index 018b7b0d8f..80d17b8114 100644
--- a/activerecord/test/cases/integration_test.rb
+++ b/activerecord/test/cases/integration_test.rb
@@ -125,6 +125,7 @@ class IntegrationTest < ActiveRecord::TestCase
   end
 
   def test_cache_key_format_is_precise_enough
+    skip("Subsecond precision is not supported") unless subsecond_precision_supported?
     dev = Developer.first
     key = dev.cache_key
     dev.touch
diff --git a/activerecord/test/cases/touch_later_test.rb b/activerecord/test/cases/touch_later_test.rb
index b3c42c8e42..7058f4fbe2 100644
--- a/activerecord/test/cases/touch_later_test.rb
+++ b/activerecord/test/cases/touch_later_test.rb
@@ -72,7 +72,7 @@ class TouchLaterTest < ActiveRecord::TestCase
   end
 
   def test_touch_touches_immediately_with_a_custom_time
-    time = Time.now.utc - 25.days
+    time = (Time.now.utc - 25.days).change(nsec: 0)
     topic = Topic.create!(updated_at: time, created_at: time)
     assert_equal time, topic.updated_at
     assert_equal time, topic.created_at
-- 
cgit v1.2.3