quack_concurrency 0.5.1 → 0.5.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 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.