marsh_grass 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/marsh_grass/rspec.rb +35 -59
- data/lib/marsh_grass/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75c25a9fd71d7bc9e868b9d82a590e6c98ec1d3b
|
4
|
+
data.tar.gz: 73e7f8bac791254293a91121b7f63850f438e440
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 746ab6c822be5085e6bde4152d27974ba55b9981ec8aee2fd24feef188b8f9744efdd6e7d290f888506c80f86a6b397ad62df49916bf5fcde19c81469dd1455a
|
7
|
+
data.tar.gz: a6ee7aae1fef25f098f76319047185c8760403c159500ff1496e0834eae2a3d681eae4786e59e8bb0d95a4094ff365d6cbedee1187aafc1812ec12b32de47105
|
data/lib/marsh_grass/rspec.rb
CHANGED
@@ -10,7 +10,21 @@ RSpec.configure do |config|
|
|
10
10
|
example.metadata.delete(tag)
|
11
11
|
end
|
12
12
|
|
13
|
+
def run_example_or_duplicate(original_example, test_description)
|
14
|
+
if !original_example.executed?
|
15
|
+
# Let the original example be the first repetition that is printed
|
16
|
+
original_example.metadata[:description] = test_description
|
17
|
+
original_example.run
|
18
|
+
else
|
19
|
+
repetition = original_example.duplicate_with
|
20
|
+
repetition.metadata[:description] = test_description
|
21
|
+
original_example.example_group.context.add_example(repetition)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
13
25
|
config.around(time_of_day: true) do |original_example|
|
26
|
+
shared_description = original_example.metadata[:description]
|
27
|
+
|
14
28
|
now = Time.now
|
15
29
|
time_of_day = untag_example(original_example, :time_of_day)
|
16
30
|
test_segments = time_of_day.is_a?(Array) ? time_of_day : [time_of_day]
|
@@ -19,27 +33,15 @@ RSpec.configure do |config|
|
|
19
33
|
minutes_to_run = test_segments.include?(:minutes) ? (0..59) : [now.min]
|
20
34
|
seconds_to_run = test_segments.include?(:seconds) ? (0..59) : [now.sec]
|
21
35
|
|
22
|
-
total = hours_to_run.size * minutes_to_run.size * seconds_to_run.size
|
23
|
-
|
24
|
-
def describe_time_of_day(test, hour, minute, second)
|
25
|
-
test.metadata[:description] = "Run Time #{hour}:#{minute}:#{second}: #{test.metadata[:description]}"
|
26
|
-
end
|
27
|
-
|
28
|
-
run_count = 0
|
29
36
|
hours_to_run.each do |hour|
|
30
37
|
minutes_to_run.each do |minute|
|
31
38
|
seconds_to_run.each do |second|
|
32
|
-
run_count += 1
|
33
39
|
# Freeze time at the specified hour, minute, and/or second.
|
34
40
|
# We need to run the test within the Timecop.freeze block,
|
35
41
|
# in order to actually be affected by Timecop.
|
36
42
|
Timecop.freeze(now.year, now.month, now.day, hour, minute, second) do
|
37
|
-
|
38
|
-
|
39
|
-
example = last_run ? original_example : original_example.duplicate_with
|
40
|
-
# Run example with a helpful description
|
41
|
-
describe_time_of_day(example, hour, minute, second)
|
42
|
-
example.run(original_example.example_group_instance, original_example.reporter)
|
43
|
+
test_description = "Run Time #{hour}:#{minute}:#{second}: #{shared_description}"
|
44
|
+
run_example_or_duplicate(original_example, test_description)
|
43
45
|
end
|
44
46
|
end
|
45
47
|
end
|
@@ -47,6 +49,8 @@ RSpec.configure do |config|
|
|
47
49
|
end
|
48
50
|
|
49
51
|
config.around(surrounding_time: true) do |original_example|
|
52
|
+
shared_description = original_example.metadata[:description]
|
53
|
+
|
50
54
|
now = Time.now
|
51
55
|
surrounding_time = untag_example(original_example, :surrounding_time)
|
52
56
|
hour = surrounding_time.fetch(:hour, now.hour)
|
@@ -55,10 +59,6 @@ RSpec.configure do |config|
|
|
55
59
|
# 1000 milliseconds before & after the surrounding time
|
56
60
|
test_time_float = Time.local(now.year, now.month, now.day, hour, minute, second).to_f
|
57
61
|
|
58
|
-
def describe_exact_time(test, time)
|
59
|
-
test.metadata[:description] = "Run Time #{time.strftime('%H:%M:%S:%L')}: #{test.metadata[:description]}"
|
60
|
-
end
|
61
|
-
|
62
62
|
(-1000..1000).each do |millisecond|
|
63
63
|
# Travel to the specified hour, minute, second, and millisecond, allowing
|
64
64
|
# for time to elapse.
|
@@ -66,84 +66,60 @@ RSpec.configure do |config|
|
|
66
66
|
# in order to actually be affected by Timecop.
|
67
67
|
test_time = Time.at(test_time_float + millisecond.to_f / 1000)
|
68
68
|
Timecop.travel(test_time) do
|
69
|
-
|
70
|
-
|
71
|
-
example = last_run ? original_example : original_example.duplicate_with
|
72
|
-
# Run example with a helpful description
|
73
|
-
describe_exact_time(example, test_time)
|
74
|
-
example.run(original_example.example_group_instance, original_example.reporter)
|
69
|
+
test_description = "Run Time #{test_time.strftime('%H:%M:%S:%L')}: #{shared_description}"
|
70
|
+
run_example_or_duplicate(original_example, test_description)
|
75
71
|
end
|
76
72
|
end
|
77
73
|
end
|
78
74
|
|
79
75
|
config.around(elapsed_time: true) do |original_example|
|
80
|
-
|
81
|
-
test.metadata[:description] = "Run Speed #{scale}x Slower: #{test.metadata[:description]}"
|
82
|
-
end
|
76
|
+
shared_description = original_example.metadata[:description]
|
83
77
|
|
84
78
|
# Freeze time at the specified hour, minute, and/or second.
|
85
79
|
# We need to run the test within the Timecop.freeze block,
|
86
80
|
# in order to actually be affected by Timecop.
|
87
81
|
time_multipliers = untag_example(original_example, :elapsed_time)
|
88
82
|
time_multipliers = (1..10) unless time_multipliers.respond_to?(:each)
|
83
|
+
|
89
84
|
time_multipliers.each do |seconds_multiplier|
|
90
85
|
Timecop.scale(seconds_multiplier) do
|
91
|
-
|
92
|
-
|
93
|
-
example = last_run ? original_example : original_example.duplicate_with
|
94
|
-
# Run example with a helpful description
|
95
|
-
describe_time_elapsed(example, seconds_multiplier)
|
96
|
-
example.run(original_example.example_group_instance, original_example.reporter)
|
86
|
+
test_description = "Run Speed #{seconds_multiplier}x Slower: #{shared_description}"
|
87
|
+
run_example_or_duplicate(original_example, test_description)
|
97
88
|
end
|
98
89
|
end
|
99
90
|
end
|
100
91
|
|
101
92
|
config.around(time_zones: true) do |original_example|
|
93
|
+
shared_description = original_example.metadata[:description]
|
102
94
|
untag_example(original_example, :time_zones)
|
103
95
|
|
104
96
|
utc = Time.now.utc
|
105
97
|
time_zone_hours = %w[-12 -11 -10 -09 -08 -07 -06 -05 -04 -03 -02 -01 +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +10 +11 +12 +13 +14]
|
106
98
|
time_zone_minutes = %w[00 30]
|
107
99
|
|
108
|
-
|
109
|
-
|
110
|
-
end
|
111
|
-
|
112
|
-
total = time_zone_hours.size * time_zone_minutes.size
|
113
|
-
|
114
|
-
time_zone_hours.each.with_index do |time_zone_hour, hour_index|
|
115
|
-
time_zone_minutes.each.with_index(1) do |time_zone_minute, minute_index|
|
116
|
-
adjustment = "#{time_zone_hour}:#{time_zone_minute}"
|
117
|
-
adjusted_time = Time.new(utc.year, utc.month, utc.day, utc.hour, utc.min, utc.sec, adjustment)
|
100
|
+
time_zone_hours.each do |time_zone_hour|
|
101
|
+
time_zone_minutes.each do |time_zone_minute|
|
118
102
|
# We need to run the test within the Timecop.freeze block,
|
119
103
|
# in order to actually be affected by Timecop.
|
104
|
+
adjustment = "#{time_zone_hour}:#{time_zone_minute}"
|
105
|
+
adjusted_time = Time.new(utc.year, utc.month, utc.day, utc.hour, utc.min, utc.sec, adjustment)
|
120
106
|
Timecop.travel(adjusted_time) do
|
121
|
-
|
122
|
-
|
123
|
-
example = last_run ? original_example : original_example.duplicate_with
|
124
|
-
# Run example with a helpful description
|
125
|
-
describe_time_zone(example, time_zone_hour, time_zone_minute)
|
126
|
-
example.run(original_example.example_group_instance, original_example.reporter)
|
107
|
+
test_description = "Time Zone Offset #{time_zone_hour}:#{time_zone_minute}: #{shared_description}"
|
108
|
+
run_example_or_duplicate(original_example, test_description)
|
127
109
|
end
|
128
110
|
end
|
129
111
|
end
|
130
112
|
end
|
131
113
|
|
132
114
|
config.around(repetitions: true) do |original_example|
|
115
|
+
shared_description = original_example.metadata[:description]
|
116
|
+
|
133
117
|
repetitions = untag_example(original_example, :repetitions)
|
134
118
|
total = repetitions.is_a?(Integer) ? repetitions : 1000
|
135
119
|
|
136
|
-
def describe_repetition_count(test, count, total)
|
137
|
-
test.metadata[:description] = "Repetition #{count} of #{total}: #{test.metadata[:description]}"
|
138
|
-
end
|
139
|
-
|
140
120
|
(1..total).each do |count|
|
141
|
-
|
142
|
-
|
143
|
-
example = last_run ? original_example : original_example.duplicate_with
|
144
|
-
# Run example with a helpful description
|
145
|
-
describe_repetition_count(example, count, total)
|
146
|
-
example.run(original_example.example_group_instance, original_example.reporter)
|
121
|
+
test_description = "Repetition #{count} of #{total}: #{shared_description}"
|
122
|
+
run_example_or_duplicate(original_example, test_description)
|
147
123
|
end
|
148
124
|
end
|
149
125
|
end
|
data/lib/marsh_grass/version.rb
CHANGED