timecop 0.6.1 → 0.9.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +1 -1
- data/README.markdown +31 -16
- data/Rakefile +10 -4
- data/lib/timecop/time_extensions.rb +120 -47
- data/lib/timecop/time_stack_item.rb +109 -127
- data/lib/timecop/timecop.rb +104 -24
- data/lib/timecop/version.rb +1 -1
- data/test/test_helper.rb +26 -21
- data/test/time_stack_item_test.rb +98 -74
- data/test/timecop_test.rb +215 -31
- data/test/timecop_without_date_but_with_time_test.rb +4 -8
- data/test/timecop_without_date_test.rb +22 -23
- metadata +13 -17
- data/test/run_tests.sh +0 -6
data/test/timecop_test.rb
CHANGED
@@ -1,23 +1,28 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
require File.join(File.dirname(__FILE__), '..', 'lib', 'timecop')
|
1
|
+
require_relative "test_helper"
|
2
|
+
require 'timecop'
|
4
3
|
|
5
|
-
class TestTimecop < Test
|
4
|
+
class TestTimecop < Minitest::Test
|
6
5
|
def teardown
|
7
6
|
Timecop.return
|
8
7
|
end
|
9
8
|
|
10
9
|
def test_freeze_changes_and_resets_time
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
Timecop.freeze(
|
17
|
-
|
10
|
+
outer_freeze_time = Time.local(2001, 01, 01)
|
11
|
+
inner_freeze_block = Time.local(2002, 02, 02)
|
12
|
+
inner_freeze_one = Time.local(2003, 03, 03)
|
13
|
+
inner_freeze_two = Time.local(2004, 04, 04)
|
14
|
+
|
15
|
+
Timecop.freeze(outer_freeze_time) do
|
16
|
+
assert_times_effectively_equal outer_freeze_time, Time.now
|
17
|
+
Timecop.freeze(inner_freeze_block) do
|
18
|
+
assert_times_effectively_equal inner_freeze_block, Time.now
|
19
|
+
Timecop.freeze(inner_freeze_one)
|
20
|
+
assert_times_effectively_equal inner_freeze_one, Time.now
|
21
|
+
Timecop.freeze(inner_freeze_two)
|
22
|
+
assert_times_effectively_equal inner_freeze_two, Time.now
|
23
|
+
end
|
24
|
+
assert_times_effectively_equal outer_freeze_time, Time.now
|
18
25
|
end
|
19
|
-
|
20
|
-
assert_not_equal t, Time.now
|
21
26
|
end
|
22
27
|
|
23
28
|
def test_freeze_yields_mocked_time
|
@@ -25,13 +30,19 @@ class TestTimecop < Test::Unit::TestCase
|
|
25
30
|
assert_equal frozen_time, Time.now
|
26
31
|
end
|
27
32
|
end
|
28
|
-
|
33
|
+
|
29
34
|
def test_freeze_then_return_unsets_mock_time
|
30
35
|
Timecop.freeze(1)
|
31
36
|
Timecop.return
|
32
37
|
assert_nil Time.send(:mock_time)
|
33
38
|
end
|
34
39
|
|
40
|
+
def test_freeze_then_unfreeze_unsets_mock_time
|
41
|
+
Timecop.freeze(1)
|
42
|
+
Timecop.unfreeze
|
43
|
+
assert_nil Time.send(:mock_time)
|
44
|
+
end
|
45
|
+
|
35
46
|
def test_travel_then_return_unsets_mock_time
|
36
47
|
Timecop.travel(1)
|
37
48
|
Timecop.return
|
@@ -53,8 +64,11 @@ class TestTimecop < Test::Unit::TestCase
|
|
53
64
|
def test_travel_does_not_reduce_precision_of_datetime
|
54
65
|
# requires to_r on Float (>= 1.9)
|
55
66
|
if Float.method_defined?(:to_r)
|
56
|
-
Timecop.travel(1)
|
57
|
-
|
67
|
+
Timecop.travel(Time.new(2014, 1, 1, 0, 0, 0))
|
68
|
+
assert DateTime.now != DateTime.now
|
69
|
+
|
70
|
+
Timecop.travel(Time.new(2014, 1, 1, 0, 0, 59))
|
71
|
+
assert DateTime.now != DateTime.now
|
58
72
|
end
|
59
73
|
end
|
60
74
|
|
@@ -107,7 +121,7 @@ class TestTimecop < Test::Unit::TestCase
|
|
107
121
|
end
|
108
122
|
assert_equal t, Time.now
|
109
123
|
end
|
110
|
-
|
124
|
+
assert t != Time.now
|
111
125
|
end
|
112
126
|
|
113
127
|
def test_freeze_with_time_instance_works_as_expected
|
@@ -118,9 +132,9 @@ class TestTimecop < Test::Unit::TestCase
|
|
118
132
|
assert_equal Date.new(2008, 10, 10), Date.today
|
119
133
|
end
|
120
134
|
|
121
|
-
|
122
|
-
|
123
|
-
|
135
|
+
assert t != Time.now
|
136
|
+
assert DateTime.new(2008, 10, 10, 10, 10, 10, local_offset) != DateTime.now
|
137
|
+
assert Date.new(2008, 10, 10) != Date.today
|
124
138
|
end
|
125
139
|
|
126
140
|
def test_freeze_with_datetime_on_specific_timezone_during_dst
|
@@ -179,9 +193,9 @@ class TestTimecop < Test::Unit::TestCase
|
|
179
193
|
assert_equal Time.local(2008, 10, 10, 0, 0, 0), Time.now
|
180
194
|
assert_date_times_equal DateTime.new(2008, 10, 10, 0, 0, 0, local_offset), DateTime.now
|
181
195
|
end
|
182
|
-
|
183
|
-
|
184
|
-
|
196
|
+
assert d != Date.today
|
197
|
+
assert Time.local(2008, 10, 10, 0, 0, 0) != Time.now
|
198
|
+
assert DateTime.new(2008, 10, 10, 0, 0, 0, local_offset) != DateTime.now
|
185
199
|
end
|
186
200
|
|
187
201
|
def test_freeze_with_integer_instance_works_as_expected
|
@@ -196,9 +210,9 @@ class TestTimecop < Test::Unit::TestCase
|
|
196
210
|
assert_equal Date.new(2008, 10, 10), Date.today
|
197
211
|
end
|
198
212
|
end
|
199
|
-
|
200
|
-
|
201
|
-
|
213
|
+
assert t != Time.now
|
214
|
+
assert DateTime.new(2008, 10, 10, 10, 10, 10) != DateTime.now
|
215
|
+
assert Date.new(2008, 10, 10) != Date.today
|
202
216
|
end
|
203
217
|
|
204
218
|
def test_exception_thrown_in_freeze_block_properly_resets_time
|
@@ -209,11 +223,19 @@ class TestTimecop < Test::Unit::TestCase
|
|
209
223
|
raise "blah exception"
|
210
224
|
end
|
211
225
|
rescue
|
212
|
-
|
226
|
+
assert t != Time.now
|
213
227
|
assert_nil Time.send(:mock_time)
|
214
228
|
end
|
215
229
|
end
|
216
230
|
|
231
|
+
def test_exception_thrown_in_return_block_restores_previous_time
|
232
|
+
t = Time.local(2008, 10, 10, 10, 10, 10)
|
233
|
+
Timecop.freeze(t) do
|
234
|
+
Timecop.return { raise 'foobar' } rescue nil
|
235
|
+
assert_equal t, Time.now
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
217
239
|
def test_freeze_freezes_time
|
218
240
|
t = Time.local(2008, 10, 10, 10, 10, 10)
|
219
241
|
now = Time.now
|
@@ -235,7 +257,7 @@ class TestTimecop < Test::Unit::TestCase
|
|
235
257
|
new_now = Time.now
|
236
258
|
assert_times_effectively_equal(new_now, t, 1, "Looks like we failed to actually travel time")
|
237
259
|
sleep(0.25)
|
238
|
-
assert_times_effectively_not_equal new_now, Time.now, 0.
|
260
|
+
assert_times_effectively_not_equal new_now, Time.now, 0.24, "Looks like time is not moving"
|
239
261
|
end
|
240
262
|
end
|
241
263
|
|
@@ -243,6 +265,11 @@ class TestTimecop < Test::Unit::TestCase
|
|
243
265
|
each_timezone do
|
244
266
|
t = DateTime.parse("2009-10-11 00:38:00 +0200")
|
245
267
|
Timecop.freeze(t) do
|
268
|
+
if ENV['TZ'] == 'UTC'
|
269
|
+
assert_equal(local_offset, 0, "Local offset not be zero for #{ENV['TZ']}")
|
270
|
+
else
|
271
|
+
assert(local_offset, 0 != "Local offset should not be zero for #{ENV['TZ']}")
|
272
|
+
end
|
246
273
|
assert_equal local_offset, DateTime.now.offset, "Failed for timezone: #{ENV['TZ']}"
|
247
274
|
end
|
248
275
|
end
|
@@ -262,6 +289,17 @@ class TestTimecop < Test::Unit::TestCase
|
|
262
289
|
t = Time.local(2008, 10, 10, 10, 10, 10)
|
263
290
|
assert_times_effectively_equal t, Timecop.scale(4, t)
|
264
291
|
end
|
292
|
+
|
293
|
+
def test_scaling_returns_now_if_nil_supplied
|
294
|
+
assert_times_effectively_equal Time.now, Timecop.scale(nil)
|
295
|
+
end
|
296
|
+
|
297
|
+
def test_scaling_raises_when_empty_string_supplied
|
298
|
+
err = assert_raises(TypeError) do
|
299
|
+
Timecop.scale("")
|
300
|
+
end
|
301
|
+
assert_match /String can't be coerced into Float/, err.message
|
302
|
+
end
|
265
303
|
|
266
304
|
def test_freeze_with_utc_time
|
267
305
|
each_timezone do
|
@@ -273,6 +311,19 @@ class TestTimecop < Test::Unit::TestCase
|
|
273
311
|
end
|
274
312
|
end
|
275
313
|
|
314
|
+
def test_freeze_without_arguments_instance_works_as_expected
|
315
|
+
t = Time.local(2008, 10, 10, 10, 10, 10)
|
316
|
+
Timecop.freeze(t) do
|
317
|
+
assert_equal t, Time.now
|
318
|
+
Timecop.freeze do
|
319
|
+
assert_equal t, Time.now
|
320
|
+
assert_equal Time.local(2008, 10, 10, 10, 10, 10), Time.now
|
321
|
+
assert_equal Date.new(2008, 10, 10), Date.today
|
322
|
+
end
|
323
|
+
end
|
324
|
+
assert t != Time.now
|
325
|
+
end
|
326
|
+
|
276
327
|
def test_destructive_methods_on_frozen_time
|
277
328
|
# Use any time zone other than UTC.
|
278
329
|
ENV['TZ'] = 'EST'
|
@@ -303,13 +354,13 @@ class TestTimecop < Test::Unit::TestCase
|
|
303
354
|
end
|
304
355
|
|
305
356
|
def test_recursive_travel_yields_correct_time
|
306
|
-
Timecop.travel(2008, 10, 10, 10, 10, 10) do
|
357
|
+
Timecop.travel(2008, 10, 10, 10, 10, 10) do
|
307
358
|
Timecop.travel(2008, 9, 9, 9, 9, 9) do |inner_freeze|
|
308
359
|
assert_times_effectively_equal inner_freeze, Time.now, 1, "Failed to yield current time back to block"
|
309
360
|
end
|
310
361
|
end
|
311
362
|
end
|
312
|
-
|
363
|
+
|
313
364
|
def test_recursive_travel_then_freeze
|
314
365
|
t = Time.local(2008, 10, 10, 10, 10, 10)
|
315
366
|
Timecop.travel(2008, 10, 10, 10, 10, 10) do
|
@@ -354,6 +405,10 @@ class TestTimecop < Test::Unit::TestCase
|
|
354
405
|
end
|
355
406
|
assert_times_effectively_equal(time_after_travel, Time.now)
|
356
407
|
end
|
408
|
+
|
409
|
+
def test_travel_returns_now_if_nil_supplied
|
410
|
+
assert_times_effectively_equal Time.now, Timecop.travel(nil)
|
411
|
+
end
|
357
412
|
|
358
413
|
def test_travel_time_with_block_returns_the_value_of_the_block
|
359
414
|
t_future = Time.local(2030, 10, 10, 10, 10, 10)
|
@@ -362,6 +417,13 @@ class TestTimecop < Test::Unit::TestCase
|
|
362
417
|
|
363
418
|
assert_equal expected, actual
|
364
419
|
end
|
420
|
+
|
421
|
+
def test_travel_raises_when_empty_string_supplied
|
422
|
+
err = assert_raises(ArgumentError) do
|
423
|
+
Timecop.travel("")
|
424
|
+
end
|
425
|
+
assert_match /no time information in \"\"/, err.message
|
426
|
+
end
|
365
427
|
|
366
428
|
def test_freeze_time_returns_now_if_no_block_given
|
367
429
|
t_future = Time.local(2030, 10, 10, 10, 10, 10)
|
@@ -388,6 +450,17 @@ class TestTimecop < Test::Unit::TestCase
|
|
388
450
|
end
|
389
451
|
end
|
390
452
|
end
|
453
|
+
|
454
|
+
def test_freeze_returns_now_if_nil_supplied
|
455
|
+
assert_times_effectively_equal Time.now, Timecop.freeze(nil)
|
456
|
+
end
|
457
|
+
|
458
|
+
def test_freeze_raises_when_empty_string_supplied
|
459
|
+
err = assert_raises(ArgumentError) do
|
460
|
+
Timecop.freeze("")
|
461
|
+
end
|
462
|
+
assert_match /no time information in \"\"/, err.message
|
463
|
+
end
|
391
464
|
|
392
465
|
def test_freeze_with_new_date
|
393
466
|
date = Date.new(2012, 6, 9)
|
@@ -431,8 +504,119 @@ class TestTimecop < Test::Unit::TestCase
|
|
431
504
|
end
|
432
505
|
|
433
506
|
def test_not_callable_send_travel
|
434
|
-
|
507
|
+
assert_raises NoMethodError do
|
435
508
|
Timecop.send_travel(:travel, Time.now - 100)
|
436
509
|
end
|
437
510
|
end
|
511
|
+
|
512
|
+
def test_datetime_to_time_for_dst_to_non_dst
|
513
|
+
# Start at a time subject to DST
|
514
|
+
Timecop.travel(2009, 4, 1, 0, 0, 0, -4*60*60) do
|
515
|
+
|
516
|
+
# Then freeze, via DateTime, at a time not subject to DST
|
517
|
+
t = DateTime.new(2009,01,01,0,0,0, "-0500")
|
518
|
+
Timecop.freeze(t) do
|
519
|
+
|
520
|
+
# Check the current time via DateTime.now--should be what we asked for
|
521
|
+
assert_date_times_equal t, DateTime.now
|
522
|
+
|
523
|
+
# Then check the current time via Time.now (not DateTime.now)
|
524
|
+
assert_times_effectively_equal Time.new(2009, 1, 1, 0, 0, 0, -5*60*60), Time.now
|
525
|
+
end
|
526
|
+
end
|
527
|
+
end
|
528
|
+
|
529
|
+
def test_raises_when_safe_mode_and_no_block
|
530
|
+
with_safe_mode do
|
531
|
+
assert_raises Timecop::SafeModeException do
|
532
|
+
Timecop.freeze
|
533
|
+
end
|
534
|
+
end
|
535
|
+
end
|
536
|
+
|
537
|
+
def test_raises_when_safe_mode_and_no_block_though_previously_block_given
|
538
|
+
Timecop.freeze do
|
539
|
+
Timecop.freeze
|
540
|
+
end
|
541
|
+
|
542
|
+
with_safe_mode do
|
543
|
+
assert_raises Timecop::SafeModeException do
|
544
|
+
Timecop.freeze
|
545
|
+
end
|
546
|
+
end
|
547
|
+
end
|
548
|
+
|
549
|
+
def test_no_raise_when_safe_mode_and_block_used
|
550
|
+
with_safe_mode do
|
551
|
+
Timecop.freeze {}
|
552
|
+
end
|
553
|
+
end
|
554
|
+
|
555
|
+
def test_no_raise_when_not_safe_mode_and_no_block
|
556
|
+
with_safe_mode(false) do
|
557
|
+
Timecop.freeze
|
558
|
+
end
|
559
|
+
end
|
560
|
+
|
561
|
+
def test_no_raise_when_safe_mode_and_no_block_and_in_block_context
|
562
|
+
with_safe_mode do
|
563
|
+
Timecop.freeze do
|
564
|
+
Timecop.freeze
|
565
|
+
end
|
566
|
+
end
|
567
|
+
end
|
568
|
+
|
569
|
+
def test_frozen_after_freeze
|
570
|
+
Timecop.freeze
|
571
|
+
assert Timecop.frozen?
|
572
|
+
end
|
573
|
+
|
574
|
+
def test_frozen_inside_freeze
|
575
|
+
Timecop.freeze do
|
576
|
+
assert Timecop.frozen?
|
577
|
+
end
|
578
|
+
end
|
579
|
+
|
580
|
+
def test_not_frozen_after_return
|
581
|
+
Timecop.freeze
|
582
|
+
Timecop.return
|
583
|
+
assert !Timecop.frozen?
|
584
|
+
end
|
585
|
+
|
586
|
+
def test_thread_safe_timecop_in_parallel
|
587
|
+
Timecop.thread_safe = true
|
588
|
+
date = Time.local(2011, 01, 02)
|
589
|
+
thread = Thread.new do
|
590
|
+
Timecop.freeze(date) do
|
591
|
+
sleep 1 #give main thread time to run
|
592
|
+
assert_equal date, Time.now
|
593
|
+
end
|
594
|
+
end
|
595
|
+
|
596
|
+
sleep 0.25
|
597
|
+
assert Time.now != date
|
598
|
+
thread.join
|
599
|
+
ensure
|
600
|
+
Timecop.thread_safe = false
|
601
|
+
end
|
602
|
+
|
603
|
+
def test_thread_safe_timecop_returns_after_block
|
604
|
+
Timecop.thread_safe = true
|
605
|
+
date = Time.local(2017, 10, 8)
|
606
|
+
|
607
|
+
Timecop.freeze(date) { }
|
608
|
+
assert Time.now != date
|
609
|
+
ensure
|
610
|
+
Timecop.thread_safe = false
|
611
|
+
end
|
612
|
+
|
613
|
+
private
|
614
|
+
|
615
|
+
def with_safe_mode(enabled=true)
|
616
|
+
mode = Timecop.safe_mode?
|
617
|
+
Timecop.safe_mode = enabled
|
618
|
+
yield
|
619
|
+
ensure
|
620
|
+
Timecop.safe_mode = mode
|
621
|
+
end
|
438
622
|
end
|
@@ -1,12 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
class TestTimecopWithoutDateButWithTime < Test::Unit::TestCase
|
4
|
-
TIMECOP_LIB = File.join(File.dirname(__FILE__), '..', 'lib', 'timecop')
|
1
|
+
require_relative "test_helper"
|
2
|
+
require "time"
|
5
3
|
|
4
|
+
class TestTimecopWithoutDateButWithTime < Minitest::Test
|
6
5
|
def test_loads_properly_when_time_is_required_instead_of_date
|
7
|
-
|
8
|
-
require "time"
|
9
|
-
require TIMECOP_LIB
|
10
|
-
end
|
6
|
+
require 'timecop'
|
11
7
|
end
|
12
8
|
end
|
@@ -1,34 +1,33 @@
|
|
1
|
+
require_relative "test_helper"
|
2
|
+
require 'timecop'
|
1
3
|
|
2
|
-
|
3
|
-
require File.join(File.dirname(__FILE__), '..', 'lib', 'timecop')
|
4
|
+
class TestTimecopWithoutDate < Minitest::Test
|
4
5
|
|
5
|
-
class TestTimecopWithoutDate < Test::Unit::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
Object.send(:remove_const, :Date) if Object.const_defined?(:Date)
|
9
8
|
Object.send(:remove_const, :DateTime) if Object.const_defined?(:DateTime)
|
10
9
|
end
|
11
|
-
|
10
|
+
|
12
11
|
# just in case...let's really make sure that Timecop is disabled between tests...
|
13
12
|
def teardown
|
14
13
|
Timecop.return
|
15
14
|
end
|
16
|
-
|
15
|
+
|
17
16
|
def test_freeze_changes_and_resets_time
|
18
17
|
# depending on how we're invoked (individually or via the rake test suite)
|
19
18
|
assert !Time.respond_to?(:zone) || Time.zone.nil?
|
20
|
-
|
19
|
+
|
21
20
|
t = Time.local(2008, 10, 10, 10, 10, 10)
|
22
|
-
|
21
|
+
assert t != Time.now
|
23
22
|
Timecop.freeze(2008, 10, 10, 10, 10, 10) do
|
24
23
|
assert_equal t, Time.now
|
25
24
|
end
|
26
|
-
|
25
|
+
assert t != Time.now
|
27
26
|
end
|
28
|
-
|
27
|
+
|
29
28
|
def test_recursive_freeze
|
30
29
|
t = Time.local(2008, 10, 10, 10, 10, 10)
|
31
|
-
Timecop.freeze(2008, 10, 10, 10, 10, 10) do
|
30
|
+
Timecop.freeze(2008, 10, 10, 10, 10, 10) do
|
32
31
|
assert_equal t, Time.now
|
33
32
|
t2 = Time.local(2008, 9, 9, 9, 9, 9)
|
34
33
|
Timecop.freeze(2008, 9, 9, 9, 9, 9) do
|
@@ -38,7 +37,7 @@ class TestTimecopWithoutDate < Test::Unit::TestCase
|
|
38
37
|
end
|
39
38
|
assert_nil Time.send(:mock_time)
|
40
39
|
end
|
41
|
-
|
40
|
+
|
42
41
|
def test_exception_thrown_in_freeze_block_properly_resets_time
|
43
42
|
t = Time.local(2008, 10, 10, 10, 10, 10)
|
44
43
|
begin
|
@@ -47,11 +46,11 @@ class TestTimecopWithoutDate < Test::Unit::TestCase
|
|
47
46
|
raise "blah exception"
|
48
47
|
end
|
49
48
|
rescue
|
50
|
-
|
49
|
+
assert t != Time.now
|
51
50
|
assert_nil Time.send(:mock_time)
|
52
51
|
end
|
53
52
|
end
|
54
|
-
|
53
|
+
|
55
54
|
def test_freeze_freezes_time
|
56
55
|
t = Time.local(2008, 10, 10, 10, 10, 10)
|
57
56
|
now = Time.now
|
@@ -63,7 +62,7 @@ class TestTimecopWithoutDate < Test::Unit::TestCase
|
|
63
62
|
assert_equal new_t, Time.now
|
64
63
|
end
|
65
64
|
end
|
66
|
-
|
65
|
+
|
67
66
|
def test_travel_keeps_time_moving
|
68
67
|
t = Time.local(2008, 10, 10, 10, 10, 10)
|
69
68
|
now = Time.now
|
@@ -71,13 +70,13 @@ class TestTimecopWithoutDate < Test::Unit::TestCase
|
|
71
70
|
new_now = Time.now
|
72
71
|
assert_times_effectively_equal new_now, t, 1, "Looks like we failed to actually travel time" # 0.1 seconds
|
73
72
|
sleep(0.25)
|
74
|
-
assert_times_effectively_not_equal new_now, Time.now, 0.
|
73
|
+
assert_times_effectively_not_equal new_now, Time.now, 0.24, "Looks like time is not moving"
|
75
74
|
end
|
76
75
|
end
|
77
|
-
|
76
|
+
|
78
77
|
def test_recursive_travel_maintains_each_context
|
79
78
|
t = Time.local(2008, 10, 10, 10, 10, 10)
|
80
|
-
Timecop.travel(2008, 10, 10, 10, 10, 10) do
|
79
|
+
Timecop.travel(2008, 10, 10, 10, 10, 10) do
|
81
80
|
assert((t - Time.now).abs < 50, "Failed to travel time.")
|
82
81
|
t2 = Time.local(2008, 9, 9, 9, 9, 9)
|
83
82
|
Timecop.travel(2008, 9, 9, 9, 9, 9) do
|
@@ -88,10 +87,10 @@ class TestTimecopWithoutDate < Test::Unit::TestCase
|
|
88
87
|
end
|
89
88
|
assert_nil Time.send(:mock_time)
|
90
89
|
end
|
91
|
-
|
90
|
+
|
92
91
|
def test_recursive_travel_then_freeze
|
93
92
|
t = Time.local(2008, 10, 10, 10, 10, 10)
|
94
|
-
Timecop.travel(2008, 10, 10, 10, 10, 10) do
|
93
|
+
Timecop.travel(2008, 10, 10, 10, 10, 10) do
|
95
94
|
assert((t - Time.now).abs < 50, "Failed to travel time.")
|
96
95
|
t2 = Time.local(2008, 9, 9, 9, 9, 9)
|
97
96
|
Timecop.freeze(2008, 9, 9, 9, 9, 9) do
|
@@ -101,10 +100,10 @@ class TestTimecopWithoutDate < Test::Unit::TestCase
|
|
101
100
|
end
|
102
101
|
assert_nil Time.send(:mock_time)
|
103
102
|
end
|
104
|
-
|
103
|
+
|
105
104
|
def test_recursive_freeze_then_travel
|
106
105
|
t = Time.local(2008, 10, 10, 10, 10, 10)
|
107
|
-
Timecop.freeze(t) do
|
106
|
+
Timecop.freeze(t) do
|
108
107
|
assert_equal t, Time.now
|
109
108
|
t2 = Time.local(2008, 9, 9, 9, 9, 9)
|
110
109
|
Timecop.travel(t2) do
|
@@ -113,7 +112,7 @@ class TestTimecopWithoutDate < Test::Unit::TestCase
|
|
113
112
|
end
|
114
113
|
assert_equal t, Time.now
|
115
114
|
end
|
116
|
-
assert_nil Time.send(:mock_time)
|
115
|
+
assert_nil Time.send(:mock_time)
|
117
116
|
end
|
118
117
|
|
119
118
|
end
|
metadata
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timecop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6
|
5
|
-
prerelease:
|
4
|
+
version: 0.9.6
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Travis Jeffery
|
9
8
|
- John Trupiano
|
10
|
-
autorequire:
|
9
|
+
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2022-11-29 00:00:00.000000000 Z
|
14
13
|
dependencies: []
|
15
14
|
description: A gem providing "time travel" and "time freezing" capabilities, making
|
16
15
|
it dead simple to test time-dependent code. It provides a unified method to mock
|
@@ -28,38 +27,35 @@ files:
|
|
28
27
|
- lib/timecop.rb
|
29
28
|
- lib/timecop/time_extensions.rb
|
30
29
|
- lib/timecop/time_stack_item.rb
|
31
|
-
- lib/timecop/version.rb
|
32
30
|
- lib/timecop/timecop.rb
|
33
|
-
-
|
31
|
+
- lib/timecop/version.rb
|
34
32
|
- test/test_helper.rb
|
35
33
|
- test/time_stack_item_test.rb
|
36
34
|
- test/timecop_test.rb
|
37
|
-
- test/timecop_without_date_test.rb
|
38
35
|
- test/timecop_without_date_but_with_time_test.rb
|
36
|
+
- test/timecop_without_date_test.rb
|
39
37
|
homepage: https://github.com/travisjeffery/timecop
|
40
38
|
licenses:
|
41
39
|
- MIT
|
42
|
-
|
40
|
+
metadata: {}
|
41
|
+
post_install_message:
|
43
42
|
rdoc_options:
|
44
|
-
- --charset=UTF-8
|
43
|
+
- "--charset=UTF-8"
|
45
44
|
require_paths:
|
46
45
|
- lib
|
47
46
|
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
-
none: false
|
49
47
|
requirements:
|
50
|
-
- -
|
48
|
+
- - ">="
|
51
49
|
- !ruby/object:Gem::Version
|
52
|
-
version:
|
50
|
+
version: 1.9.2
|
53
51
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
-
none: false
|
55
52
|
requirements:
|
56
|
-
- -
|
53
|
+
- - ">="
|
57
54
|
- !ruby/object:Gem::Version
|
58
55
|
version: '0'
|
59
56
|
requirements: []
|
60
|
-
|
61
|
-
|
62
|
-
signing_key:
|
57
|
+
rubygems_version: 3.2.15
|
58
|
+
signing_key:
|
63
59
|
specification_version: 3
|
64
60
|
summary: A gem providing "time travel" and "time freezing" capabilities, making it
|
65
61
|
dead simple to test time-dependent code. It provides a unified method to mock Time.now,
|