async-rspec 1.16.0 → 1.16.1

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: 99cc9f67cfd8ad26555a5805dc8aa76b58876272ea0aecd18c07434ee8304c18
4
- data.tar.gz: de573e462396eb1ccd28a45f7bd345bd2ecd0e8e6ea814ec300775b51d16280d
3
+ metadata.gz: 34164069084058e87dd043f816b73f6c480d4998d105581213d7eb1e89ce3084
4
+ data.tar.gz: 46f3d8e14a447fbee85151cb6a3272e361fa287bbabed35805b5b79114916993
5
5
  SHA512:
6
- metadata.gz: ef693569b536cbba80c35d7805de22cd2cda1046f125cb3516c432b6548587042269cc802989fb79d94aa032c96eb45c589fd275f1c891462fb71337affdcdf5
7
- data.tar.gz: fc6a89c0a9cecc214e140fb9a3b0887f6304f8612aeb1b6e771babda377d993fa56e6f2ef223fd02800123f24fd64005ceea500f0420df1fc29d7da039152d2a
6
+ metadata.gz: c8168f6c7a6846b4aa836417e005575bb4a5fa125a050145aefa4a31039d1909339d73b0227df97858a745dbde447d6fa72f00914dba6a3c511ef5eb4dce9a48
7
+ data.tar.gz: bdf7b373ce4fcbb11c149a4f3be47a318f508fc02ff57d5775ac01a3874310646b31af49bf5e0bf7a97752b4e0a0878890d3cada5a582b975325b41152412996
@@ -20,8 +20,10 @@
20
20
 
21
21
  require_relative 'leaks'
22
22
 
23
+ require 'kernel/sync'
23
24
  require 'kernel/async'
24
25
  require 'async/reactor'
26
+ require 'async/task'
25
27
 
26
28
  module Async
27
29
  module RSpec
@@ -32,13 +34,12 @@ module Async
32
34
 
33
35
  def run_in_reactor(reactor, duration = nil)
34
36
  result = nil
35
-
36
37
  timer_task = nil
37
38
 
38
39
  if duration
39
40
  timer_task = reactor.async do |task|
40
41
  # Wait for the timeout, at any point this task might be cancelled if the user code completes:
41
- task.annotate("timer task duration=#{duration}")
42
+ task.annotate("Timer task duration=#{duration}.")
42
43
  task.sleep(duration)
43
44
 
44
45
  # The timeout expired, so generate an error:
@@ -46,30 +47,28 @@ module Async
46
47
  reactor.print_hierarchy(buffer)
47
48
 
48
49
  # Raise an error so it is logged:
49
- raise TimeoutError, "run time exceeded duration #{duration}s:\r\n#{buffer.string}"
50
+ raise TimeoutError, "Run time exceeded duration #{duration}s:\n#{buffer.string}"
50
51
  end
51
52
  end
52
53
 
53
- reactor.run do |task|
54
- task.annotate(self.class)
54
+ spec_task = reactor.async do |spec_task|
55
+ spec_task.annotate("running example")
55
56
 
56
- spec_task = task.async do |spec_task|
57
- spec_task.annotate("running example")
58
-
59
- result = yield
60
-
61
- timer_task&.stop
62
-
63
- raise Async::Stop
64
- end
57
+ result = yield(spec_task)
65
58
 
66
- begin
67
- timer_task&.wait
68
- spec_task.wait
69
- ensure
70
- spec_task.stop
71
- end
72
- end.wait
59
+ # We are finished, so stop the timer task if it was started:
60
+ timer_task&.stop
61
+
62
+ # Now stop the entire reactor:
63
+ raise Async::Stop
64
+ end
65
+
66
+ begin
67
+ timer_task&.wait
68
+ spec_task.wait
69
+ ensure
70
+ spec_task.stop
71
+ end
73
72
 
74
73
  return result
75
74
  end
@@ -77,7 +76,7 @@ module Async
77
76
 
78
77
  ::RSpec.shared_context Reactor do
79
78
  include Reactor
80
- let(:reactor) {Async::Reactor.new}
79
+ let(:reactor) {@reactor}
81
80
 
82
81
  include_context Async::RSpec::Leaks
83
82
 
@@ -85,11 +84,17 @@ module Async
85
84
  duration = example.metadata.fetch(:timeout, 10)
86
85
 
87
86
  begin
88
- run_in_reactor(reactor, duration) do
89
- example.run
87
+ Sync do |task|
88
+ @reactor = task.reactor
89
+
90
+ task.annotate(self.class)
91
+
92
+ run_in_reactor(@reactor, duration) do
93
+ example.run
94
+ end
95
+ ensure
96
+ @reactor = nil
90
97
  end
91
- ensure
92
- reactor.close
93
98
  end
94
99
  end
95
100
  end
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Async
22
22
  module RSpec
23
- VERSION = "1.16.0"
23
+ VERSION = "1.16.1"
24
24
  end
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.0
4
+ version: 1.16.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-26 00:00:00.000000000 Z
11
+ date: 2021-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: async
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '1.24'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '1.24'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: async-io
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -141,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
141
  - !ruby/object:Gem::Version
142
142
  version: '0'
143
143
  requirements: []
144
- rubygems_version: 3.2.3
144
+ rubygems_version: 3.2.22
145
145
  signing_key:
146
146
  specification_version: 4
147
147
  summary: Helpers for writing specs against the async gem.