async-rspec 1.16.0 → 1.16.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
  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.