mr_darcy 0.1.0 → 0.2.0
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 +4 -4
- data/.travis.yml +1 -2
- data/lib/mr_darcy.rb +8 -2
- data/lib/mr_darcy/context.rb +1 -1
- data/lib/mr_darcy/deferred.rb +3 -2
- data/lib/mr_darcy/promise.rb +2 -1
- data/lib/mr_darcy/promise/base.rb +54 -18
- data/lib/mr_darcy/promise/celluloid.rb +76 -16
- data/lib/mr_darcy/promise/child_promise.rb +24 -19
- data/lib/mr_darcy/promise/em.rb +56 -5
- data/lib/mr_darcy/promise/state/base.rb +2 -2
- data/lib/mr_darcy/promise/thread.rb +38 -19
- data/lib/mr_darcy/role.rb +26 -6
- data/lib/mr_darcy/version.rb +1 -1
- data/spec/acceptance/dci_bank_transfer_spec.rb +12 -16
- data/spec/acceptance/em_http_request_spec.rb +20 -17
- data/spec/acceptance/simple_promise_with_fail_spec.rb +2 -2
- data/spec/lib/mr_darcy/promise/base_spec.rb +1 -1
- data/spec/lib/mr_darcy/promise/child_promise_spec.rb +23 -27
- data/spec/lib/mr_darcy/promise/em_spec.rb +20 -0
- data/spec/lib/mr_darcy/promise_spec.rb +35 -11
- data/spec/lib/mr_darcy/role_spec.rb +1 -1
- data/spec/lib/mr_darcy_spec.rb +20 -0
- metadata +46 -44
@@ -1,5 +1,29 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
shared_examples_for :threaded_promise do
|
4
|
+
it { should be_a MrDarcy::Promise::Thread }
|
5
|
+
end
|
6
|
+
|
7
|
+
shared_examples_for :synchronous_promise do
|
8
|
+
it { should be_a MrDarcy::Promise::Synchronous }
|
9
|
+
end
|
10
|
+
|
11
|
+
shared_examples_for :celluloid_promise do
|
12
|
+
it { should be_a MrDarcy::Promise::Celluloid }
|
13
|
+
end
|
14
|
+
|
15
|
+
shared_examples_for :event_machine_promise do
|
16
|
+
if RUBY_ENGINE == 'jruby'
|
17
|
+
When 'on JRuby' do
|
18
|
+
it 'raises an error' do
|
19
|
+
expect { subject }.to raise_error
|
20
|
+
end
|
21
|
+
end
|
22
|
+
else
|
23
|
+
it { should be_a MrDarcy::Promise::EM }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
3
27
|
describe MrDarcy::Promise do
|
4
28
|
describe '.new' do
|
5
29
|
let(:driver) { nil }
|
@@ -16,57 +40,57 @@ describe MrDarcy::Promise do
|
|
16
40
|
|
17
41
|
When 'driver is :thread' do
|
18
42
|
let(:driver) { :thread }
|
19
|
-
|
43
|
+
it_should_behave_like :threaded_promise
|
20
44
|
end
|
21
45
|
|
22
46
|
When 'driver is :Thread' do
|
23
47
|
let(:driver) { :Thread }
|
24
|
-
|
48
|
+
it_should_behave_like :threaded_promise
|
25
49
|
end
|
26
50
|
|
27
51
|
When 'driver is :synchronous' do
|
28
52
|
let(:driver) { :synchronous }
|
29
|
-
|
53
|
+
it_should_behave_like :synchronous_promise
|
30
54
|
end
|
31
55
|
|
32
56
|
When 'driver is :Synchronous' do
|
33
57
|
let(:driver) { :Synchronous }
|
34
|
-
|
58
|
+
it_should_behave_like :synchronous_promise
|
35
59
|
end
|
36
60
|
|
37
61
|
When 'driver is :celluloid' do
|
38
62
|
let(:driver) { :celluloid }
|
39
|
-
|
63
|
+
it_should_behave_like :celluloid_promise
|
40
64
|
end
|
41
65
|
|
42
66
|
When 'driver is :Celluloid' do
|
43
67
|
let(:driver) { :Celluloid }
|
44
|
-
|
68
|
+
it_should_behave_like :celluloid_promise
|
45
69
|
end
|
46
70
|
|
47
71
|
When 'driver is :em' do
|
48
72
|
let(:driver) { :em }
|
49
|
-
|
73
|
+
it_should_behave_like :event_machine_promise
|
50
74
|
end
|
51
75
|
|
52
76
|
When 'driver is :EM' do
|
53
77
|
let(:driver) { :EM }
|
54
|
-
|
78
|
+
it_should_behave_like :event_machine_promise
|
55
79
|
end
|
56
80
|
|
57
81
|
When 'driver is :event_machine' do
|
58
82
|
let(:driver) { :event_machine }
|
59
|
-
|
83
|
+
it_should_behave_like :event_machine_promise
|
60
84
|
end
|
61
85
|
|
62
86
|
When 'driver is :eventmachine' do
|
63
87
|
let(:driver) { :eventmachine }
|
64
|
-
|
88
|
+
it_should_behave_like :event_machine_promise
|
65
89
|
end
|
66
90
|
|
67
91
|
When 'driver is :EventMachine' do
|
68
92
|
let(:driver) { :EventMachine }
|
69
|
-
|
93
|
+
it_should_behave_like :event_machine_promise
|
70
94
|
end
|
71
95
|
end
|
72
96
|
end
|
data/spec/lib/mr_darcy_spec.rb
CHANGED
@@ -5,6 +5,26 @@ describe MrDarcy do
|
|
5
5
|
it { should respond_to :driver }
|
6
6
|
it { should respond_to :driver= }
|
7
7
|
|
8
|
+
|
9
|
+
describe '.all_drivers' do
|
10
|
+
subject { MrDarcy.all_drivers }
|
11
|
+
|
12
|
+
When 'running on jruby' do
|
13
|
+
before { stub_const 'RUBY_ENGINE', 'jruby' }
|
14
|
+
|
15
|
+
it { should_not include :em }
|
16
|
+
end
|
17
|
+
|
18
|
+
Otherwise do
|
19
|
+
before { stub_const 'RUBY_ENGINE', 'mri'}
|
20
|
+
|
21
|
+
it { should include :synchronous }
|
22
|
+
it { should include :thread }
|
23
|
+
it { should include :celluloid }
|
24
|
+
it { should include :em }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
8
28
|
# This spec doesn't pass on CI. I can't figure out why.
|
9
29
|
# describe '#promise' do
|
10
30
|
# When 'no driver is specified' do
|
metadata
CHANGED
@@ -1,169 +1,169 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mr_darcy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Harton
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
|
-
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.5'
|
20
|
-
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirement: !ruby/object:Gem::Requirement
|
23
21
|
requirements:
|
24
22
|
- - ~>
|
25
23
|
- !ruby/object:Gem::Version
|
26
24
|
version: '1.5'
|
25
|
+
prerelease: false
|
26
|
+
type: :development
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
29
34
|
requirement: !ruby/object:Gem::Requirement
|
30
35
|
requirements:
|
31
36
|
- - '>='
|
32
37
|
- !ruby/object:Gem::Version
|
33
38
|
version: '0'
|
34
|
-
type: :development
|
35
39
|
prerelease: false
|
40
|
+
type: :development
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
36
43
|
version_requirements: !ruby/object:Gem::Requirement
|
37
44
|
requirements:
|
38
45
|
- - '>='
|
39
46
|
- !ruby/object:Gem::Version
|
40
47
|
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
44
49
|
requirements:
|
45
50
|
- - '>='
|
46
51
|
- !ruby/object:Gem::Version
|
47
52
|
version: '0'
|
48
|
-
type: :development
|
49
53
|
prerelease: false
|
54
|
+
type: :development
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: guard
|
50
57
|
version_requirements: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
59
|
- - '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: guard
|
57
62
|
requirement: !ruby/object:Gem::Requirement
|
58
63
|
requirements:
|
59
64
|
- - '>='
|
60
65
|
- !ruby/object:Gem::Version
|
61
66
|
version: '0'
|
62
|
-
type: :development
|
63
67
|
prerelease: false
|
68
|
+
type: :development
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: guard-rspec
|
64
71
|
version_requirements: !ruby/object:Gem::Requirement
|
65
72
|
requirements:
|
66
73
|
- - '>='
|
67
74
|
- !ruby/object:Gem::Version
|
68
75
|
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: guard-rspec
|
71
76
|
requirement: !ruby/object:Gem::Requirement
|
72
77
|
requirements:
|
73
78
|
- - '>='
|
74
79
|
- !ruby/object:Gem::Version
|
75
80
|
version: '0'
|
76
|
-
type: :development
|
77
81
|
prerelease: false
|
82
|
+
type: :development
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: guard-bundler
|
78
85
|
version_requirements: !ruby/object:Gem::Requirement
|
79
86
|
requirements:
|
80
87
|
- - '>='
|
81
88
|
- !ruby/object:Gem::Version
|
82
89
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: guard-bundler
|
85
90
|
requirement: !ruby/object:Gem::Requirement
|
86
91
|
requirements:
|
87
92
|
- - '>='
|
88
93
|
- !ruby/object:Gem::Version
|
89
94
|
version: '0'
|
90
|
-
type: :development
|
91
95
|
prerelease: false
|
96
|
+
type: :development
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: terminal-notifier-guard
|
92
99
|
version_requirements: !ruby/object:Gem::Requirement
|
93
100
|
requirements:
|
94
101
|
- - '>='
|
95
102
|
- !ruby/object:Gem::Version
|
96
103
|
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: terminal-notifier-guard
|
99
104
|
requirement: !ruby/object:Gem::Requirement
|
100
105
|
requirements:
|
101
106
|
- - '>='
|
102
107
|
- !ruby/object:Gem::Version
|
103
108
|
version: '0'
|
104
|
-
type: :development
|
105
109
|
prerelease: false
|
110
|
+
type: :development
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: pry
|
106
113
|
version_requirements: !ruby/object:Gem::Requirement
|
107
114
|
requirements:
|
108
115
|
- - '>='
|
109
116
|
- !ruby/object:Gem::Version
|
110
117
|
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: pry
|
113
118
|
requirement: !ruby/object:Gem::Requirement
|
114
119
|
requirements:
|
115
120
|
- - '>='
|
116
121
|
- !ruby/object:Gem::Version
|
117
122
|
version: '0'
|
118
|
-
type: :development
|
119
123
|
prerelease: false
|
124
|
+
type: :development
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: eventmachine
|
120
127
|
version_requirements: !ruby/object:Gem::Requirement
|
121
128
|
requirements:
|
122
129
|
- - '>='
|
123
130
|
- !ruby/object:Gem::Version
|
124
131
|
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: eventmachine
|
127
132
|
requirement: !ruby/object:Gem::Requirement
|
128
133
|
requirements:
|
129
134
|
- - '>='
|
130
135
|
- !ruby/object:Gem::Version
|
131
136
|
version: '0'
|
132
|
-
type: :development
|
133
137
|
prerelease: false
|
138
|
+
type: :development
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: em-http-request
|
134
141
|
version_requirements: !ruby/object:Gem::Requirement
|
135
142
|
requirements:
|
136
143
|
- - '>='
|
137
144
|
- !ruby/object:Gem::Version
|
138
145
|
version: '0'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: em-http-request
|
141
146
|
requirement: !ruby/object:Gem::Requirement
|
142
147
|
requirements:
|
143
148
|
- - '>='
|
144
149
|
- !ruby/object:Gem::Version
|
145
150
|
version: '0'
|
146
|
-
type: :development
|
147
151
|
prerelease: false
|
152
|
+
type: :development
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: celluloid
|
148
155
|
version_requirements: !ruby/object:Gem::Requirement
|
149
156
|
requirements:
|
150
157
|
- - '>='
|
151
158
|
- !ruby/object:Gem::Version
|
152
159
|
version: '0'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: celluloid
|
155
160
|
requirement: !ruby/object:Gem::Requirement
|
156
161
|
requirements:
|
157
162
|
- - '>='
|
158
163
|
- !ruby/object:Gem::Version
|
159
164
|
version: '0'
|
160
|
-
type: :development
|
161
165
|
prerelease: false
|
162
|
-
|
163
|
-
requirements:
|
164
|
-
- - '>='
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
166
|
+
type: :development
|
167
167
|
description: |2
|
168
168
|
MrDarcy takes async promises from the javascript word, DCI from Jim
|
169
169
|
Gay's brain and sprinkles some ruby on top for great justice!
|
@@ -215,6 +215,7 @@ files:
|
|
215
215
|
- spec/lib/mr_darcy/promise/base_spec.rb
|
216
216
|
- spec/lib/mr_darcy/promise/child_promise_spec.rb
|
217
217
|
- spec/lib/mr_darcy/promise/dsl_spec.rb
|
218
|
+
- spec/lib/mr_darcy/promise/em_spec.rb
|
218
219
|
- spec/lib/mr_darcy/promise/state/base_spec.rb
|
219
220
|
- spec/lib/mr_darcy/promise/state/rejected_spec.rb
|
220
221
|
- spec/lib/mr_darcy/promise/state/resolved_spec.rb
|
@@ -232,7 +233,7 @@ homepage: https://github.com/jamesotron/MrDarcy
|
|
232
233
|
licenses:
|
233
234
|
- MIT
|
234
235
|
metadata: {}
|
235
|
-
post_install_message:
|
236
|
+
post_install_message:
|
236
237
|
rdoc_options: []
|
237
238
|
require_paths:
|
238
239
|
- lib
|
@@ -247,9 +248,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
247
248
|
- !ruby/object:Gem::Version
|
248
249
|
version: '0'
|
249
250
|
requirements: []
|
250
|
-
rubyforge_project:
|
251
|
-
rubygems_version: 2.
|
252
|
-
signing_key:
|
251
|
+
rubyforge_project:
|
252
|
+
rubygems_version: 2.2.2
|
253
|
+
signing_key:
|
253
254
|
specification_version: 4
|
254
255
|
summary: A mashup of async Promises and DCI in Ruby.
|
255
256
|
test_files:
|
@@ -264,6 +265,7 @@ test_files:
|
|
264
265
|
- spec/lib/mr_darcy/promise/base_spec.rb
|
265
266
|
- spec/lib/mr_darcy/promise/child_promise_spec.rb
|
266
267
|
- spec/lib/mr_darcy/promise/dsl_spec.rb
|
268
|
+
- spec/lib/mr_darcy/promise/em_spec.rb
|
267
269
|
- spec/lib/mr_darcy/promise/state/base_spec.rb
|
268
270
|
- spec/lib/mr_darcy/promise/state/rejected_spec.rb
|
269
271
|
- spec/lib/mr_darcy/promise/state/resolved_spec.rb
|