From: Daniel Pittman <[email protected]>

This code depended on the time written by the configurer, and Time.now about
half a dozen lines later, being the same integer value.  This would work
almost all the time, because our code is pretty fast, but can race.

We now capture the time on both sides of the call, and verify that the emitted
time was in that range; this actually tests the whole purpose much better, and
more thoroughly.

Reviewed-by: Paul Berry <[email protected]>
---
 spec/integration/configurer_spec.rb |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/spec/integration/configurer_spec.rb 
b/spec/integration/configurer_spec.rb
index 825b632..05b3d61 100755
--- a/spec/integration/configurer_spec.rb
+++ b/spec/integration/configurer_spec.rb
@@ -50,7 +50,12 @@ describe Puppet::Configurer do
       Puppet[:lastrunfile] = tmpfile("lastrunfile")
       Puppet[:report] = true
 
+      # We only record integer seconds in the timestamp, and truncate
+      # backwards, so don't use a more accurate timestamp in the test.
+      # --daniel 2011-03-07
+      t1 = Time.now.tv_sec
       @configurer.run :catalog => @catalog, :report => report
+      t2 = Time.now.tv_sec
 
       summary = nil
       File.open(Puppet[:lastrunfile], "r") do |fd|
@@ -62,7 +67,7 @@ describe Puppet::Configurer do
         summary.should be_key(key)
       end
       summary["time"].should be_key("notify")
-      summary["time"]["last_run"].should >= Time.now.tv_sec
+      summary["time"]["last_run"].should be_between(t1, t2)
     end
   end
 end
-- 
1.7.4.1

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to