quack_concurrency 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 367f0d058fbce805b9f2eb40c2905b21682da792df0d8d485aaf4e677bdee7b1
4
- data.tar.gz: 0b598b37c585c3613dd6c423344160412cc2fc84d7afe5efad2c447473f3ee69
3
+ metadata.gz: 44dbae9778d3d75b1415d9616a4e34eb621a878047f02672826114c931b343f5
4
+ data.tar.gz: 284808d284aca2332d1dc5e10304e666246ece69fa65d17d785bb46e6a4de843
5
5
  SHA512:
6
- metadata.gz: 5516ea7ae5481ff84a9592f3e2df9419b285d22d3c2fd9563e31974a93b0725fa8944929f1d6fe6ca199c477b72d991b9af02caf46c9c89d41f2eed0b7d906d9
7
- data.tar.gz: ffbf811448df7077667fdbc26f0e84a4ba6aa5b9e78c81afe7d163bd279d0a3cdb55b84818eeb080bdee875b9c8484a64f0043f3574b073ba7a7fb8b25814c7e
6
+ metadata.gz: 742a8ca5bd55cf8619e070466731f00847801145f98430855dd696e41199fba4ab112fd189965348d77307f237ec9db9d61df3ef28c41e7e53d91369a791fd72
7
+ data.tar.gz: 3e5e029887be11e3a98bb4be5012035800be934e005ce0d72936f9ebc1166e8d168d011b767b50d340091a6dcfae0e563af34de0e9c011ba2881be0ed44e689d
@@ -45,13 +45,17 @@ module QuackConcurrency
45
45
  # @param exception [Exception]
46
46
  # @return [void]
47
47
  def raise(exception = nil)
48
- unless exception == nil || exception.is_a?(Exception)
49
- Kernel.raise(ArgumentError, "'exception' must be nil or an instance of an Exception")
48
+ exception = case
49
+ when exception == nil then StandardError.new
50
+ when exception.is_a?(Exception) then exception
51
+ when exception <= Exception then exception.new
52
+ else
53
+ Kernel.raise(ArgumentError, "'exception' must be nil or an instance of or descendant of Exception")
50
54
  end
51
55
  @mutex.synchronize do
52
56
  Kernel.raise(Complete) if @complete
53
57
  @complete = true
54
- @exception = exception || StandardError.new
58
+ @exception = exception
55
59
  @waiter.resume_all_forever
56
60
  end
57
61
  nil
data/spec/future_spec.rb CHANGED
@@ -108,5 +108,41 @@ RSpec.describe QuackConcurrency::Future do
108
108
  end
109
109
 
110
110
  end
111
+
112
+ describe "#raise" do
113
+
114
+ context "when called with nil" do
115
+ it "should set the error to raise StandardError" do
116
+ future = QuackConcurrency::Future.new
117
+ expect{ future.raise }.not_to raise_error
118
+ expect{ future.get }.to raise_error(StandardError)
119
+ end
120
+ end
121
+
122
+ context "when called with an error instance" do
123
+ it "should set the error to that instance" do
124
+ future = QuackConcurrency::Future.new
125
+ e = TypeError.new
126
+ expect{ future.raise(e) }.not_to raise_error
127
+ expect{ future.get }.to raise_error(e)
128
+ end
129
+ end
130
+
131
+ context "when called with an error class" do
132
+ it "should set the error to an instance of that class" do
133
+ future = QuackConcurrency::Future.new
134
+ expect{ future.raise(TypeError) }.not_to raise_error
135
+ expect{ future.get }.to raise_error(TypeError)
136
+ end
137
+ end
138
+
139
+ context "when called with an invalid argument" do
140
+ it "should raise ArgumentError" do
141
+ future = QuackConcurrency::Future.new
142
+ expect{ future.raise("error") }.to raise_error(ArgumentError)
143
+ end
144
+ end
145
+
146
+ end
111
147
 
112
148
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quack_concurrency
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Fors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-31 00:00:00.000000000 Z
11
+ date: 2018-12-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Offers concurrency tools that could also be found in the 'Concurrent
14
14
  Ruby'. However, all these tools will also accept core class duck types to build
@@ -63,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
63
63
  version: '0'
64
64
  requirements: []
65
65
  rubyforge_project:
66
- rubygems_version: 2.7.6
66
+ rubygems_version: 2.7.7
67
67
  signing_key:
68
68
  specification_version: 4
69
69
  summary: Concurrency tools that accept duck types of core classes.