| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
package Test::MockTime; |
|
2
|
|
|
|
|
|
|
|
|
3
|
4
|
|
|
4
|
|
28537
|
use strict; |
|
|
4
|
|
|
|
|
5
|
|
|
|
4
|
|
|
|
|
332
|
|
|
4
|
4
|
|
|
4
|
|
21
|
use warnings; |
|
|
4
|
|
|
|
|
7
|
|
|
|
4
|
|
|
|
|
114
|
|
|
5
|
4
|
|
|
4
|
|
57
|
use Carp(); |
|
|
4
|
|
|
|
|
12
|
|
|
|
4
|
|
|
|
|
52
|
|
|
6
|
4
|
|
|
4
|
|
19
|
use Exporter(); |
|
|
4
|
|
|
|
|
4
|
|
|
|
4
|
|
|
|
|
667
|
|
|
7
|
|
|
|
|
|
|
*import = \&Exporter::import; |
|
8
|
|
|
|
|
|
|
our @EXPORT_OK = qw( |
|
9
|
|
|
|
|
|
|
set_relative_time |
|
10
|
|
|
|
|
|
|
set_absolute_time |
|
11
|
|
|
|
|
|
|
set_fixed_time |
|
12
|
|
|
|
|
|
|
restore_time |
|
13
|
|
|
|
|
|
|
); |
|
14
|
|
|
|
|
|
|
our %EXPORT_TAGS = ( |
|
15
|
|
|
|
|
|
|
'all' => \@EXPORT_OK, |
|
16
|
|
|
|
|
|
|
); |
|
17
|
|
|
|
|
|
|
our ($VERSION) = '0.13'; |
|
18
|
|
|
|
|
|
|
our ($offset) = 0; |
|
19
|
|
|
|
|
|
|
our ($fixed) = undef; |
|
20
|
|
|
|
|
|
|
|
|
21
|
|
|
|
|
|
|
BEGIN { |
|
22
|
4
|
|
|
4
|
|
21
|
*CORE::GLOBAL::time = \&Test::MockTime::time; |
|
23
|
4
|
|
|
|
|
13
|
*CORE::GLOBAL::localtime = \&Test::MockTime::localtime; |
|
24
|
4
|
|
|
|
|
2741
|
*CORE::GLOBAL::gmtime = \&Test::MockTime::gmtime; |
|
25
|
|
|
|
|
|
|
} |
|
26
|
|
|
|
|
|
|
|
|
27
|
|
|
|
|
|
|
sub set_relative_time { |
|
28
|
3
|
|
|
3
|
1
|
452
|
my ($relative) = @_; |
|
29
|
3
|
50
|
33
|
|
|
49
|
if (($relative eq __PACKAGE__) || (UNIVERSAL::isa($relative, __PACKAGE__))) { |
|
30
|
0
|
|
|
|
|
0
|
Carp::carp("Test::MockTime::set_relative_time called incorrectly\n"); |
|
31
|
|
|
|
|
|
|
} |
|
32
|
3
|
|
|
|
|
9
|
$offset = $_[-1]; # last argument. might have been called in a OO syntax? |
|
33
|
|
|
|
|
|
|
} |
|
34
|
|
|
|
|
|
|
|
|
35
|
|
|
|
|
|
|
sub _time { |
|
36
|
15
|
|
|
15
|
|
41
|
my ($time, $spec) = @_; |
|
37
|
15
|
100
|
|
|
|
117
|
unless ($time =~ /\A -? \d+ \z/xms) { |
|
38
|
8
|
|
100
|
|
|
35
|
$spec ||= '%Y-%m-%dT%H:%M:%SZ'; |
|
39
|
|
|
|
|
|
|
} |
|
40
|
15
|
100
|
|
|
|
48
|
if ($spec) { |
|
41
|
8
|
|
|
|
|
805541
|
require Time::Piece; |
|
42
|
8
|
|
|
|
|
328081
|
$time = Time::Piece->strptime($time, $spec)->epoch(); |
|
43
|
|
|
|
|
|
|
} |
|
44
|
15
|
|
|
|
|
1044
|
return $time; |
|
45
|
|
|
|
|
|
|
} |
|
46
|
|
|
|
|
|
|
|
|
47
|
|
|
|
|
|
|
sub set_absolute_time { |
|
48
|
4
|
|
|
4
|
1
|
1209
|
my ($time, $spec) = @_; |
|
49
|
4
|
50
|
33
|
|
|
68
|
if (($time eq __PACKAGE__) || (UNIVERSAL::isa($time, __PACKAGE__))) { |
|
50
|
0
|
|
|
|
|
0
|
Carp::carp("Test::MockTime::set_absolute_time called incorrectly\n"); |
|
51
|
|
|
|
|
|
|
} |
|
52
|
4
|
|
|
|
|
20
|
$time = _time($time, $spec); |
|
53
|
4
|
|
|
|
|
23
|
$offset = $time - CORE::time; |
|
54
|
|
|
|
|
|
|
} |
|
55
|
|
|
|
|
|
|
|
|
56
|
|
|
|
|
|
|
sub set_fixed_time { |
|
57
|
11
|
|
|
11
|
1
|
10944
|
my ($time, $spec) = @_; |
|
58
|
11
|
50
|
33
|
|
|
192
|
if (($time eq __PACKAGE__) || (UNIVERSAL::isa($time, __PACKAGE__))) { |
|
59
|
0
|
|
|
|
|
0
|
Carp::carp("Test::MockTime::set_fixed_time called incorrectly\n"); |
|
60
|
|
|
|
|
|
|
} |
|
61
|
11
|
|
|
|
|
110
|
$time = _time($time, $spec); |
|
62
|
11
|
|
|
|
|
33
|
$fixed = $time; |
|
63
|
|
|
|
|
|
|
} |
|
64
|
|
|
|
|
|
|
|
|
65
|
|
|
|
|
|
|
sub time() { |
|
66
|
36
|
100
|
|
36
|
0
|
16006989
|
if (defined $fixed) { |
|
67
|
19
|
|
|
|
|
106
|
return $fixed; |
|
68
|
|
|
|
|
|
|
} else { |
|
69
|
17
|
|
|
|
|
92
|
return (CORE::time + $Test::MockTime::offset); |
|
70
|
|
|
|
|
|
|
} |
|
71
|
|
|
|
|
|
|
} |
|
72
|
|
|
|
|
|
|
|
|
73
|
|
|
|
|
|
|
sub localtime (;$) { |
|
74
|
30
|
|
|
30
|
0
|
6072056
|
my ($time) = @_; |
|
75
|
30
|
100
|
|
|
|
104
|
unless (defined $time) { |
|
76
|
12
|
|
|
|
|
37
|
$time = Test::MockTime::time(); |
|
77
|
|
|
|
|
|
|
} |
|
78
|
30
|
|
|
|
|
1655
|
return CORE::localtime($time); |
|
79
|
|
|
|
|
|
|
} |
|
80
|
|
|
|
|
|
|
|
|
81
|
|
|
|
|
|
|
sub gmtime (;$) { |
|
82
|
10
|
|
|
10
|
0
|
6008201
|
my ($time) = @_; |
|
83
|
10
|
100
|
|
|
|
56
|
unless (defined $time) { |
|
84
|
6
|
|
|
|
|
29
|
$time = Test::MockTime::time(); |
|
85
|
|
|
|
|
|
|
} |
|
86
|
10
|
|
|
|
|
116
|
return CORE::gmtime($time);; |
|
87
|
|
|
|
|
|
|
} |
|
88
|
|
|
|
|
|
|
|
|
89
|
|
|
|
|
|
|
sub restore { |
|
90
|
1
|
|
|
1
|
1
|
5
|
$offset = 0; |
|
91
|
1
|
|
|
|
|
4
|
$fixed = undef; |
|
92
|
|
|
|
|
|
|
} |
|
93
|
|
|
|
|
|
|
*restore_time = \&restore; |