rpromise 0.1.0 → 0.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f827fadaed28b188d96a603fd46c933e06f52e6f
4
- data.tar.gz: b76fde2e1c6388e4ca470e4eb8a0a28f779fa9cd
3
+ metadata.gz: 71a0304c401834de12b087ed0616ad637b7ad3a6
4
+ data.tar.gz: b38e756b3ccb4dcc60dbdffe866987f29ad34314
5
5
  SHA512:
6
- metadata.gz: b8b692957a78f776851bb84e5071304b7dd4a9666a9d8b44dd5254e336e7be3ebd82344ac60d98029961ca2cbcbe205ae97e04517d657a9a2c197a65f0e449cc
7
- data.tar.gz: e968d06a23ee237efa58935cb4e5b80130c86821c52f2ab1f2cd2055f2fa8c8e87b4103e798eea821eaea5971eedb24d1e11f68f33312d7b9244c0293ed7fd4b
6
+ metadata.gz: 6b09464f4d17c111bafae20fcbdcff7d000b8edcf715e1bbb320ebb07e84c4bb14b0e2d1b53b5000bb079aadb00c8e3aa2ab14ded7f89a2d4e45b23a4f7f8486
7
+ data.tar.gz: f2f7a02741c54b6e7452131b9fc4d54bb5d1b652f1a29f1fa9a483e894aa60baffa061c450f55d13ed0a96ba2499ef34bd9d94aa19993ba55c0d711e5e9f66bb
@@ -1,3 +1,3 @@
1
1
  class Rpromise
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/rpromise.rb CHANGED
@@ -17,12 +17,11 @@ class Rpromise
17
17
  @thread = Thread.new do
18
18
  begin
19
19
  yield(method(:resolve!), method(:reject!))
20
- rescue Exception => e
20
+ rescue => e
21
21
  reject!(e)
22
22
  end
23
23
  end
24
- rescue Exception => e
25
- reject!(e)
24
+ @thread.abort_on_exception = true
26
25
  end
27
26
 
28
27
  def then(on_resolved = nil, on_rejected = nil)
@@ -5,6 +5,7 @@ describe ::Rpromise do
5
5
  let(:n) { 0 }
6
6
  subject(:promise) do
7
7
  described_class.new do |resolve, reject|
8
+ sleep(0.1)
8
9
  end
9
10
  end
10
11
 
@@ -14,6 +15,7 @@ describe ::Rpromise do
14
15
  it 'uses the resolve! method as callback' do
15
16
  lock = true
16
17
  p = described_class.new do |resolve, reject|
18
+ sleep(0.1)
17
19
  resolve.call('hi')
18
20
  lock = false
19
21
  end
@@ -24,6 +26,7 @@ describe ::Rpromise do
24
26
  it 'uses the reject! method as callback' do
25
27
  lock = true
26
28
  p = described_class.new do |resolve, reject|
29
+ sleep(0.1)
27
30
  reject.call('hi')
28
31
  lock = false
29
32
  end
@@ -57,6 +60,7 @@ describe ::Rpromise do
57
60
 
58
61
  before(:each) do
59
62
  @promise = described_class.new do |resolve, reject|
63
+ sleep(0.1)
60
64
  resolve.call(value)
61
65
  end
62
66
  end
@@ -104,6 +108,7 @@ describe ::Rpromise do
104
108
  @promise.then(lambda do |v|
105
109
  return described_class.new do |resolve, reject|
106
110
  thread2 = Thread.new do
111
+ sleep(0.1)
107
112
  resolve.call('Hello world!')
108
113
  end
109
114
  end
@@ -136,6 +141,7 @@ describe ::Rpromise do
136
141
  lambda_error = nil
137
142
  lock = true
138
143
  p = described_class.new do |resolve, reject|
144
+ sleep(0.1)
139
145
  reject.call(error)
140
146
  end
141
147
  p.then(nil, lambda do |e|
@@ -145,10 +151,12 @@ describe ::Rpromise do
145
151
  loop { break unless lock }
146
152
  expect(lambda_error).to eq error
147
153
  end
154
+
148
155
  it 'handles raised exceptions within the promise' do
149
156
  lambda_error = nil
150
157
  lock = true
151
158
  p = described_class.new do |resolve, reject|
159
+ sleep(0.1)
152
160
  raise 'Oops'
153
161
  end
154
162
  p.then(nil, lambda do |e|
@@ -159,8 +167,24 @@ describe ::Rpromise do
159
167
  expect(lambda_error).to be_kind_of RuntimeError
160
168
  expect(lambda_error.message).to eq 'Oops'
161
169
  end
162
- xit 'handles raised exceptions within resolve!'
163
- xit 'handles raised exceptions within handle!'
170
+
171
+ it 'handles raised exceptions within resolve!' do
172
+ lambda_error = nil
173
+ lock = true
174
+ p = described_class.new do |resolve, reject|
175
+ sleep(0.1)
176
+ resolve.call(true)
177
+ end
178
+ # Skip the lambda argument to generate an error
179
+ p.then(lambda do
180
+ lock = false
181
+ end, lambda do |err|
182
+ lambda_error = err
183
+ lock = false
184
+ end)
185
+ loop { break unless lock }
186
+ expect(lambda_error).to be_kind_of ArgumentError
187
+ end
164
188
  end
165
189
  end
166
190
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rpromise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Molinari