much-timeout 0.1.1 → 0.1.2
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 -7
- data/Gemfile +5 -1
- data/lib/much-timeout.rb +32 -20
- data/lib/much-timeout/version.rb +3 -1
- data/much-timeout.gemspec +21 -12
- data/test/helper.rb +5 -3
- data/test/support/factory.rb +3 -2
- data/test/system/.keep +0 -0
- data/test/unit/much-timeout_tests.rb +62 -58
- data/tmp/.gitkeep +0 -0
- metadata +50 -38
- data/.gitignore +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8ccbcba689d4e2e7838a5f1b176b2fab1b40f6cc4aeff5c477ef96b1416b64d3
|
4
|
+
data.tar.gz: 9ee85e10815badc1efbf6223ae3c7486e76a29176b0ce7e64ca05bb0cf31a0c9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0a0038b7050f792541d92cb32ab42680b14b745ca4a8fdba540b2a2a393edb7b069f5867d0a58e5a88c670f5a6df681d24d840a7e0c0d39e471322aebe7d5ff7
|
7
|
+
data.tar.gz: f3a9b163d7379b238a3638d7d22ab42e07542405fd7ae2d6e4f27518332146b4111dbc5393c02ccf5c36c73107a276b0d44ffed8105bc8443057e2b39ff4562c
|
data/Gemfile
CHANGED
data/lib/much-timeout.rb
CHANGED
@@ -1,17 +1,18 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "thread"
|
2
4
|
require "much-timeout/version"
|
3
5
|
|
4
6
|
module MuchTimeout
|
7
|
+
TimeoutError = Class.new(Interrupt) # rubocop:disable Lint/InheritException
|
5
8
|
|
6
|
-
|
7
|
-
|
8
|
-
PIPE_SIGNAL = '.'
|
9
|
+
PIPE_SIGNAL = "."
|
9
10
|
|
10
11
|
def self.timeout(seconds, klass = nil, &block)
|
11
12
|
if seconds.nil?
|
12
|
-
raise ArgumentError,
|
13
|
+
raise ArgumentError, "please specify a non-nil seconds value"
|
13
14
|
end
|
14
|
-
|
15
|
+
unless seconds.is_a?(::Numeric)
|
15
16
|
raise ArgumentError, "please specify a numeric seconds value " \
|
16
17
|
"(`#{seconds.inspect}` was given)"
|
17
18
|
end
|
@@ -21,25 +22,37 @@ module MuchTimeout
|
|
21
22
|
begin
|
22
23
|
main_thread = Thread.current
|
23
24
|
io_select_thread ||= Thread.new do
|
24
|
-
|
25
|
+
unless ::IO.select([reader], nil, nil, seconds)
|
25
26
|
main_thread.raise exception_klass
|
26
27
|
end
|
27
28
|
end
|
28
29
|
begin
|
29
30
|
block.call
|
30
31
|
ensure
|
31
|
-
|
32
|
+
begin
|
33
|
+
writer.write_nonblock(PIPE_SIGNAL)
|
34
|
+
rescue
|
35
|
+
false
|
36
|
+
end
|
32
37
|
io_select_thread.join
|
33
38
|
end
|
34
39
|
ensure
|
35
|
-
|
36
|
-
|
40
|
+
begin
|
41
|
+
reader.close
|
42
|
+
rescue
|
43
|
+
false
|
44
|
+
end
|
45
|
+
begin
|
46
|
+
writer.close
|
47
|
+
rescue
|
48
|
+
false
|
49
|
+
end
|
37
50
|
end
|
38
51
|
end
|
39
52
|
|
40
53
|
def self.optional_timeout(seconds, klass = nil, &block)
|
41
54
|
if !seconds.nil?
|
42
|
-
|
55
|
+
timeout(seconds, klass, &block)
|
43
56
|
else
|
44
57
|
block.call
|
45
58
|
end
|
@@ -48,39 +61,38 @@ module MuchTimeout
|
|
48
61
|
def self.just_timeout(seconds, args)
|
49
62
|
args ||= {}
|
50
63
|
if args[:do].nil?
|
51
|
-
raise ArgumentError,
|
64
|
+
raise ArgumentError, "you need to specify a :do block arg to call"
|
52
65
|
end
|
53
|
-
|
66
|
+
unless args[:do].is_a?(::Proc)
|
54
67
|
raise ArgumentError, "you need pass a Proc as the :do arg " \
|
55
68
|
"(`#{args[:do].inspect}` was given)"
|
56
69
|
end
|
57
|
-
if !args[:on_timeout].nil? && !args[:on_timeout].
|
70
|
+
if !args[:on_timeout].nil? && !args[:on_timeout].is_a?(::Proc)
|
58
71
|
raise ArgumentError, "you need pass a Proc as the :on_timeout arg " \
|
59
72
|
"(`#{args[:on_timeout].inspect}` was given)"
|
60
73
|
end
|
61
74
|
|
62
75
|
begin
|
63
|
-
|
76
|
+
timeout(seconds, &args[:do])
|
64
77
|
rescue TimeoutError
|
65
|
-
(args[:on_timeout] || proc{
|
78
|
+
(args[:on_timeout] || proc{}).call
|
66
79
|
end
|
67
80
|
end
|
68
81
|
|
69
82
|
def self.just_optional_timeout(seconds, args)
|
70
83
|
args ||= {}
|
71
84
|
if args[:do].nil?
|
72
|
-
raise ArgumentError,
|
85
|
+
raise ArgumentError, "you need to specify a :do block arg to call"
|
73
86
|
end
|
74
|
-
|
87
|
+
unless args[:do].is_a?(::Proc)
|
75
88
|
raise ArgumentError, "you need pass a Proc as the :do arg " \
|
76
89
|
"(`#{args[:do].inspect}` was given)"
|
77
90
|
end
|
78
91
|
|
79
92
|
if !seconds.nil?
|
80
|
-
|
93
|
+
just_timeout(seconds, args)
|
81
94
|
else
|
82
95
|
args[:do].call
|
83
96
|
end
|
84
97
|
end
|
85
|
-
|
86
98
|
end
|
data/lib/much-timeout/version.rb
CHANGED
data/much-timeout.gemspec
CHANGED
@@ -1,23 +1,32 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
6
|
require "much-timeout/version"
|
5
7
|
|
6
8
|
Gem::Specification.new do |gem|
|
7
|
-
gem.name
|
8
|
-
gem.version
|
9
|
-
gem.authors
|
10
|
-
gem.email
|
11
|
-
|
12
|
-
gem.
|
13
|
-
|
14
|
-
gem.
|
15
|
-
|
16
|
-
|
9
|
+
gem.name = "much-timeout"
|
10
|
+
gem.version = MuchTimeout::VERSION
|
11
|
+
gem.authors = ["Kelly Redding", "Collin Redding"]
|
12
|
+
gem.email = ["kelly@kellyredding.com", "collin.redding@me.com"]
|
13
|
+
|
14
|
+
gem.summary =
|
15
|
+
"IO.select based timeouts; an alternative to Ruby's stdlib Timeout module."
|
16
|
+
gem.description =
|
17
|
+
"IO.select based timeouts; an alternative to Ruby's stdlib Timeout module."
|
18
|
+
|
19
|
+
gem.homepage = "http://github.com/redding/much-timeout"
|
20
|
+
gem.license = "MIT"
|
21
|
+
|
22
|
+
gem.files = `git ls-files | grep "^[^.]"`.split($INPUT_RECORD_SEPARATOR)
|
23
|
+
|
17
24
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
18
25
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
26
|
gem.require_paths = ["lib"]
|
20
27
|
|
21
|
-
gem.
|
28
|
+
gem.required_ruby_version = "~> 2.5"
|
22
29
|
|
30
|
+
gem.add_development_dependency("much-style-guide", ["~> 0.6.0"])
|
31
|
+
gem.add_development_dependency("assert", ["~> 2.19.3"])
|
23
32
|
end
|
data/test/helper.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# this file is automatically required when you run `assert`
|
2
4
|
# put any test helpers here
|
3
5
|
|
@@ -5,14 +7,14 @@
|
|
5
7
|
$LOAD_PATH.unshift(File.expand_path("../..", __FILE__))
|
6
8
|
|
7
9
|
# require pry for debugging (`binding.pry`)
|
8
|
-
require
|
10
|
+
require "pry"
|
9
11
|
|
10
|
-
require
|
12
|
+
require "test/support/factory"
|
11
13
|
|
12
14
|
# 1.8.7 backfills
|
13
15
|
|
14
16
|
# Array#sample
|
15
|
-
if !(a =
|
17
|
+
if !(a = []).respond_to?(:sample) && a.respond_to?(:choice)
|
16
18
|
class Array
|
17
19
|
alias_method :sample, :choice
|
18
20
|
end
|
data/test/support/factory.rb
CHANGED
data/test/system/.keep
ADDED
File without changes
|
@@ -1,8 +1,9 @@
|
|
1
|
-
|
2
|
-
require 'much-timeout'
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
|
3
|
+
require "assert"
|
4
|
+
require "much-timeout"
|
5
5
|
|
6
|
+
module MuchTimeout
|
6
7
|
class UnitTests < Assert::Context
|
7
8
|
desc "MuchTimeout"
|
8
9
|
setup do
|
@@ -18,9 +19,8 @@ module MuchTimeout
|
|
18
19
|
end
|
19
20
|
|
20
21
|
should "know its pipe signal" do
|
21
|
-
assert_equal
|
22
|
+
assert_equal ".", subject::PIPE_SIGNAL
|
22
23
|
end
|
23
|
-
|
24
24
|
end
|
25
25
|
|
26
26
|
class TimeoutSetupTests < UnitTests
|
@@ -34,7 +34,6 @@ module MuchTimeout
|
|
34
34
|
teardown do
|
35
35
|
@cond_var.broadcast
|
36
36
|
end
|
37
|
-
|
38
37
|
end
|
39
38
|
|
40
39
|
class TimeoutTests < TimeoutSetupTests
|
@@ -48,7 +47,8 @@ module MuchTimeout
|
|
48
47
|
end
|
49
48
|
end
|
50
49
|
|
51
|
-
should "interrupt and raise if a custom exception is given and block
|
50
|
+
should "interrupt and raise if a custom exception is given and block "\
|
51
|
+
"times out" do
|
52
52
|
assert_raises(@exception) do
|
53
53
|
subject.timeout(@seconds, @exception) do
|
54
54
|
@mutex.synchronize{ @cond_var.wait(@mutex) }
|
@@ -56,7 +56,8 @@ module MuchTimeout
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
should "not interrupt and return the block's return value if there
|
59
|
+
should "not interrupt and return the block's return value if there "\
|
60
|
+
"is no timeout" do
|
60
61
|
val = nil
|
61
62
|
assert_nothing_raised do
|
62
63
|
val = subject.timeout(@seconds){ @return_val }
|
@@ -72,16 +73,15 @@ module MuchTimeout
|
|
72
73
|
|
73
74
|
should "complain if given a nil seconds value" do
|
74
75
|
assert_raises(ArgumentError) do
|
75
|
-
subject.timeout(nil){
|
76
|
+
subject.timeout(nil){}
|
76
77
|
end
|
77
78
|
end
|
78
79
|
|
79
80
|
should "complain if given a non-numeric seconds value" do
|
80
81
|
assert_raises(ArgumentError) do
|
81
|
-
subject.timeout(Factory.string){
|
82
|
+
subject.timeout(Factory.string){}
|
82
83
|
end
|
83
84
|
end
|
84
|
-
|
85
85
|
end
|
86
86
|
|
87
87
|
class OptionalTimeoutTests < TimeoutSetupTests
|
@@ -113,14 +113,18 @@ module MuchTimeout
|
|
113
113
|
end
|
114
114
|
|
115
115
|
assert_raises(ArgumentError) do
|
116
|
-
subject.optional_timeout(Factory.string){
|
116
|
+
subject.optional_timeout(Factory.string){}
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
120
120
|
should "call the given block directly if seconds is nil" do
|
121
121
|
val = nil
|
122
122
|
assert_nothing_raised do
|
123
|
-
val =
|
123
|
+
val =
|
124
|
+
subject.optional_timeout(nil) do
|
125
|
+
sleep @seconds
|
126
|
+
@return_val
|
127
|
+
end
|
124
128
|
end
|
125
129
|
assert_equal @return_val, val
|
126
130
|
|
@@ -128,7 +132,6 @@ module MuchTimeout
|
|
128
132
|
subject.optional_timeout(nil){ raise @exception }
|
129
133
|
end
|
130
134
|
end
|
131
|
-
|
132
135
|
end
|
133
136
|
|
134
137
|
class JustTimeoutTests < TimeoutSetupTests
|
@@ -141,29 +144,29 @@ module MuchTimeout
|
|
141
144
|
# this repeats the relevent tests from the TimeoutTests above
|
142
145
|
|
143
146
|
assert_nothing_raised do
|
144
|
-
subject.just_timeout(@seconds, :
|
147
|
+
subject.just_timeout(@seconds, do: proc{
|
145
148
|
@mutex.synchronize{ @cond_var.wait(@mutex) }
|
146
149
|
@val_set = Factory.string
|
147
|
-
})
|
150
|
+
},)
|
148
151
|
end
|
149
152
|
assert_nil @val_set
|
150
153
|
|
151
154
|
val = nil
|
152
155
|
assert_nothing_raised do
|
153
|
-
val = subject.just_timeout(@seconds, :
|
156
|
+
val = subject.just_timeout(@seconds, do: proc{ @return_val })
|
154
157
|
end
|
155
158
|
assert_equal @return_val, val
|
156
159
|
|
157
160
|
assert_raises(@exception) do
|
158
|
-
subject.just_timeout(@seconds, :
|
161
|
+
subject.just_timeout(@seconds, do: proc{ raise @exception })
|
159
162
|
end
|
160
163
|
|
161
164
|
assert_raises(ArgumentError) do
|
162
|
-
subject.just_timeout(nil, :
|
165
|
+
subject.just_timeout(nil, do: proc{})
|
163
166
|
end
|
164
167
|
|
165
168
|
assert_raises(ArgumentError) do
|
166
|
-
subject.just_timeout(Factory.string, :
|
169
|
+
subject.just_timeout(Factory.string, do: proc{})
|
167
170
|
end
|
168
171
|
end
|
169
172
|
|
@@ -171,20 +174,20 @@ module MuchTimeout
|
|
171
174
|
exp = Factory.string
|
172
175
|
assert_nothing_raised do
|
173
176
|
subject.just_timeout(@seconds, {
|
174
|
-
:
|
177
|
+
do: proc{
|
175
178
|
@mutex.synchronize{ @cond_var.wait(@mutex) }
|
176
179
|
},
|
177
|
-
:
|
178
|
-
})
|
180
|
+
on_timeout: proc{ @val_set = exp },
|
181
|
+
},)
|
179
182
|
end
|
180
183
|
assert_equal exp, @val_set
|
181
184
|
|
182
185
|
@val_set = val = nil
|
183
186
|
assert_nothing_raised do
|
184
187
|
val = subject.just_timeout(@seconds, {
|
185
|
-
:
|
186
|
-
:
|
187
|
-
})
|
188
|
+
do: proc{ @return_val },
|
189
|
+
on_timeout: proc{ @val_set = exp },
|
190
|
+
},)
|
188
191
|
end
|
189
192
|
assert_equal @return_val, val
|
190
193
|
assert_nil @val_set
|
@@ -192,28 +195,27 @@ module MuchTimeout
|
|
192
195
|
|
193
196
|
should "complain if not given a :do arg" do
|
194
197
|
assert_raises(ArgumentError) do
|
195
|
-
subject.just_timeout(@seconds){
|
198
|
+
subject.just_timeout(@seconds){}
|
196
199
|
end
|
197
200
|
assert_raises(ArgumentError) do
|
198
|
-
subject.just_timeout(@seconds, :
|
201
|
+
subject.just_timeout(@seconds, do: nil)
|
199
202
|
end
|
200
203
|
end
|
201
204
|
|
202
205
|
should "complain if given a non-proc :do arg" do
|
203
206
|
assert_raises(ArgumentError) do
|
204
|
-
subject.just_timeout(@seconds, :
|
207
|
+
subject.just_timeout(@seconds, do: Factory.string)
|
205
208
|
end
|
206
209
|
end
|
207
210
|
|
208
211
|
should "complain if given a non-proc :on_timeout arg" do
|
209
212
|
assert_raises(ArgumentError) do
|
210
213
|
subject.just_timeout(@seconds, {
|
211
|
-
:
|
212
|
-
:
|
213
|
-
})
|
214
|
+
do: proc{},
|
215
|
+
on_timeout: Factory.string,
|
216
|
+
},)
|
214
217
|
end
|
215
218
|
end
|
216
|
-
|
217
219
|
end
|
218
220
|
|
219
221
|
class JustOptionalTimeoutTests < TimeoutSetupTests
|
@@ -226,97 +228,99 @@ module MuchTimeout
|
|
226
228
|
# this repeats the relevent tests from the JustTimeoutTests above
|
227
229
|
|
228
230
|
assert_nothing_raised do
|
229
|
-
subject.just_optional_timeout(@seconds, :
|
231
|
+
subject.just_optional_timeout(@seconds, do: proc{
|
230
232
|
@mutex.synchronize{ @cond_var.wait(@mutex) }
|
231
233
|
@val_set = Factory.string
|
232
|
-
})
|
234
|
+
},)
|
233
235
|
end
|
234
236
|
assert_nil @val_set
|
235
237
|
|
236
238
|
val = nil
|
237
239
|
assert_nothing_raised do
|
238
|
-
val =
|
240
|
+
val =
|
241
|
+
subject.just_optional_timeout(@seconds, do: proc{ @return_val })
|
239
242
|
end
|
240
243
|
assert_equal @return_val, val
|
241
244
|
|
242
245
|
assert_raises(@exception) do
|
243
|
-
subject.just_optional_timeout(@seconds, :
|
246
|
+
subject.just_optional_timeout(@seconds, do: proc{ raise @exception })
|
244
247
|
end
|
245
248
|
|
246
249
|
assert_raises(ArgumentError) do
|
247
|
-
subject.just_optional_timeout(Factory.string, :
|
250
|
+
subject.just_optional_timeout(Factory.string, do: proc{})
|
248
251
|
end
|
249
252
|
|
250
253
|
exp = Factory.string
|
251
254
|
assert_nothing_raised do
|
252
255
|
subject.just_optional_timeout(@seconds, {
|
253
|
-
:
|
256
|
+
do: proc{
|
254
257
|
@mutex.synchronize{ @cond_var.wait(@mutex) }
|
255
258
|
},
|
256
|
-
:
|
257
|
-
})
|
259
|
+
on_timeout: proc{ @val_set = exp },
|
260
|
+
},)
|
258
261
|
end
|
259
262
|
assert_equal exp, @val_set
|
260
263
|
|
261
264
|
@val_set = val = nil
|
262
265
|
assert_nothing_raised do
|
263
266
|
val = subject.just_optional_timeout(@seconds, {
|
264
|
-
:
|
265
|
-
:
|
266
|
-
})
|
267
|
+
do: proc{ @return_val },
|
268
|
+
on_timeout: proc{ @val_set = exp },
|
269
|
+
},)
|
267
270
|
end
|
268
271
|
assert_equal @return_val, val
|
269
272
|
assert_nil @val_set
|
270
273
|
|
271
274
|
assert_raises(ArgumentError) do
|
272
|
-
subject.just_optional_timeout(@seconds){
|
275
|
+
subject.just_optional_timeout(@seconds){}
|
273
276
|
end
|
274
277
|
assert_raises(ArgumentError) do
|
275
|
-
subject.just_optional_timeout(@seconds, :
|
278
|
+
subject.just_optional_timeout(@seconds, do: nil)
|
276
279
|
end
|
277
280
|
|
278
281
|
assert_raises(ArgumentError) do
|
279
|
-
subject.just_optional_timeout(@seconds, :
|
282
|
+
subject.just_optional_timeout(@seconds, do: Factory.string)
|
280
283
|
end
|
281
284
|
|
282
285
|
assert_raises(ArgumentError) do
|
283
286
|
subject.just_optional_timeout(@seconds, {
|
284
|
-
:
|
285
|
-
:
|
286
|
-
})
|
287
|
+
do: proc{},
|
288
|
+
on_timeout: Factory.string,
|
289
|
+
},)
|
287
290
|
end
|
288
291
|
end
|
289
292
|
|
290
293
|
should "call the given :do arg directly if seconds is nil" do
|
291
294
|
val = nil
|
292
295
|
assert_nothing_raised do
|
293
|
-
val = subject.just_optional_timeout(nil, :
|
296
|
+
val = subject.just_optional_timeout(nil, do: proc{
|
294
297
|
sleep @seconds
|
295
298
|
@return_val
|
296
|
-
})
|
299
|
+
},)
|
297
300
|
end
|
298
301
|
assert_equal @return_val, val
|
299
302
|
|
300
303
|
assert_raises(@exception) do
|
301
|
-
subject.just_optional_timeout(nil, :
|
304
|
+
subject.just_optional_timeout(nil, do: proc{ raise @exception })
|
302
305
|
end
|
303
306
|
end
|
304
307
|
|
305
308
|
should "complain if not given a :do arg" do
|
306
309
|
assert_raises(ArgumentError) do
|
307
|
-
subject.just_optional_timeout([@seconds, nil].sample){
|
310
|
+
subject.just_optional_timeout([@seconds, nil].sample){}
|
308
311
|
end
|
309
312
|
assert_raises(ArgumentError) do
|
310
|
-
subject.just_optional_timeout([@seconds, nil].sample, :
|
313
|
+
subject.just_optional_timeout([@seconds, nil].sample, do: nil)
|
311
314
|
end
|
312
315
|
end
|
313
316
|
|
314
317
|
should "complain if given a non-proc :do arg" do
|
315
318
|
assert_raises(ArgumentError) do
|
316
|
-
subject.just_optional_timeout(
|
319
|
+
subject.just_optional_timeout(
|
320
|
+
[@seconds, nil].sample,
|
321
|
+
do: Factory.string,
|
322
|
+
)
|
317
323
|
end
|
318
324
|
end
|
319
|
-
|
320
325
|
end
|
321
|
-
|
322
326
|
end
|
data/tmp/.gitkeep
ADDED
File without changes
|
metadata
CHANGED
@@ -1,39 +1,52 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: much-timeout
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Kelly Redding
|
8
8
|
- Collin Redding
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
date: 2021-01-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: much-style-guide
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 0.6.0
|
21
|
+
type: :development
|
17
22
|
prerelease: false
|
18
|
-
|
19
|
-
requirements:
|
20
|
-
- - ~>
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version:
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 0.6.0
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: assert
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 2.19.3
|
23
35
|
type: :development
|
24
|
-
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 2.19.3
|
25
42
|
description: IO.select based timeouts; an alternative to Ruby's stdlib Timeout module.
|
26
|
-
email:
|
43
|
+
email:
|
27
44
|
- kelly@kellyredding.com
|
28
45
|
- collin.redding@me.com
|
29
46
|
executables: []
|
30
|
-
|
31
47
|
extensions: []
|
32
|
-
|
33
48
|
extra_rdoc_files: []
|
34
|
-
|
35
|
-
files:
|
36
|
-
- .gitignore
|
49
|
+
files:
|
37
50
|
- Gemfile
|
38
51
|
- LICENSE
|
39
52
|
- README.md
|
@@ -43,35 +56,34 @@ files:
|
|
43
56
|
- much-timeout.gemspec
|
44
57
|
- test/helper.rb
|
45
58
|
- test/support/factory.rb
|
59
|
+
- test/system/.keep
|
46
60
|
- test/unit/much-timeout_tests.rb
|
47
61
|
- tmp/.gitkeep
|
48
62
|
homepage: http://github.com/redding/much-timeout
|
49
|
-
licenses:
|
63
|
+
licenses:
|
50
64
|
- MIT
|
51
65
|
metadata: {}
|
52
|
-
|
53
66
|
post_install_message:
|
54
67
|
rdoc_options: []
|
55
|
-
|
56
|
-
require_paths:
|
68
|
+
require_paths:
|
57
69
|
- lib
|
58
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
-
|
61
|
-
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '2.5'
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
67
80
|
requirements: []
|
68
|
-
|
69
|
-
rubyforge_project:
|
70
|
-
rubygems_version: 2.6.4
|
81
|
+
rubygems_version: 3.2.4
|
71
82
|
signing_key:
|
72
83
|
specification_version: 4
|
73
84
|
summary: IO.select based timeouts; an alternative to Ruby's stdlib Timeout module.
|
74
|
-
test_files:
|
85
|
+
test_files:
|
75
86
|
- test/helper.rb
|
76
87
|
- test/support/factory.rb
|
88
|
+
- test/system/.keep
|
77
89
|
- test/unit/much-timeout_tests.rb
|