schmurfy-bacon 1.6.3 → 1.6.4
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/Gemfile +1 -0
- data/examples/async_spec.rb +63 -0
- data/lib/bacon/ext/async.rb +78 -0
- data/lib/bacon/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dcb5050ddc789d1701bcaa4cc59876c6682bf543
|
4
|
+
data.tar.gz: a7c957e1d0f290bc56bd3052bcd7608c16e4291e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4bdf591f249b011a10f30723628eea564097e48a82c65cd6a4e48c0c105c725a32c825819530880d8a7c65ca69d2b2a3c7dc7898f09879311688c751051deea
|
7
|
+
data.tar.gz: cafad2ea51723e3e961257df8f772d734acbe2ce61235f6fba011f49d8af303fdb023f645f5e7cbab8a7cc2250846668d484a210aef6894db8a8f1af5bbe3148
|
data/Gemfile
CHANGED
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift << File.expand_path('../../lib/', __FILE__)
|
4
|
+
|
5
|
+
require 'bacon'
|
6
|
+
require 'bacon/ext/async'
|
7
|
+
|
8
|
+
Bacon.summary_on_exit
|
9
|
+
|
10
|
+
def run_something_later(&block)
|
11
|
+
Async::Task.current.reactor.after(0.1) do
|
12
|
+
block.call("something")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe 'AsynchronousSpec' do
|
17
|
+
before do
|
18
|
+
# Eventmachine is running, yeah !
|
19
|
+
# Async::Task.current.reactor.stopped.should == false
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'ends immediately' do
|
23
|
+
# Async::Task.current.reactor.stopped.should == false
|
24
|
+
1.should == 1
|
25
|
+
# without action EM::stop is called after our code
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'requires time (simple)' do
|
29
|
+
executed = false
|
30
|
+
|
31
|
+
Async::Task.current.reactor.after(0.1) do
|
32
|
+
executed = true
|
33
|
+
end
|
34
|
+
|
35
|
+
wait(0.2)
|
36
|
+
executed.should == true
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
it 'requires time (less simple)' do
|
41
|
+
v = 1
|
42
|
+
Async::Task.current.reactor.after(0.1){ v = 2 }
|
43
|
+
|
44
|
+
# wait 0.2s and then execute the passed block
|
45
|
+
wait(0.2)
|
46
|
+
v.should == 2
|
47
|
+
end
|
48
|
+
|
49
|
+
# if done is called the test ends early
|
50
|
+
# but the block passed to wait is till called
|
51
|
+
should 'end early' do
|
52
|
+
v = 1
|
53
|
+
Async::Task.current.reactor.after(0.2) do
|
54
|
+
v+= 1
|
55
|
+
done
|
56
|
+
end
|
57
|
+
|
58
|
+
Async::Task.current.reactor.after(0.3){ v = 3 }
|
59
|
+
wait(1)
|
60
|
+
v.should == 2
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'async'
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
module Bacon
|
6
|
+
module AsyncSpec
|
7
|
+
class <<self
|
8
|
+
attr_accessor :top_task
|
9
|
+
end
|
10
|
+
|
11
|
+
def wakeup
|
12
|
+
if @waiting_task
|
13
|
+
t = @waiting_task
|
14
|
+
|
15
|
+
@waiting_task.reactor.after(0) do
|
16
|
+
t.fiber.resume()
|
17
|
+
end
|
18
|
+
|
19
|
+
@waiting_task = nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def cancel_timer()
|
24
|
+
if @timeout_timer
|
25
|
+
@timeout_timer.cancel()
|
26
|
+
@timeout_timer = nil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def wait(timeout = 0.1)
|
31
|
+
cancel_timer()
|
32
|
+
|
33
|
+
@waiting_task = Async::Task.current
|
34
|
+
@timeout_timer = @waiting_task.reactor.after(timeout) do
|
35
|
+
wakeup()
|
36
|
+
end
|
37
|
+
|
38
|
+
Async::Task.yield()
|
39
|
+
# Fiber.yield()
|
40
|
+
|
41
|
+
ensure
|
42
|
+
cancel_timer()
|
43
|
+
@waiting_task = nil
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
def done
|
48
|
+
wakeup()
|
49
|
+
end
|
50
|
+
|
51
|
+
# def run_requirement(title, *args)
|
52
|
+
# p [:RUN_START, title]
|
53
|
+
# super(title, *args)
|
54
|
+
# p [:RUN_END]
|
55
|
+
# end
|
56
|
+
|
57
|
+
def run(*)
|
58
|
+
if AsyncSpec.top_task && (AsyncSpec.top_task == Async::Task.current?)
|
59
|
+
super
|
60
|
+
else
|
61
|
+
Async::Reactor.run do |task|
|
62
|
+
task.async do |reactor|
|
63
|
+
AsyncSpec.top_task = Async::Task.current?
|
64
|
+
begin
|
65
|
+
super
|
66
|
+
reactor.stop()
|
67
|
+
ensure
|
68
|
+
AsyncSpec.top_task = nil
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
Context.send(:include, AsyncSpec)
|
78
|
+
end
|
data/lib/bacon/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schmurfy-bacon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Neukirchen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: term-ansicolor
|
@@ -56,6 +56,7 @@ files:
|
|
56
56
|
- Rakefile
|
57
57
|
- bacon.gemspec
|
58
58
|
- bin/bacon
|
59
|
+
- examples/async_spec.rb
|
59
60
|
- examples/em_spec.rb
|
60
61
|
- examples/focus_spec.rb
|
61
62
|
- examples/http_spec.rb
|
@@ -65,6 +66,7 @@ files:
|
|
65
66
|
- lib/autotest/bacon_rspec.rb
|
66
67
|
- lib/autotest/discover.rb
|
67
68
|
- lib/bacon.rb
|
69
|
+
- lib/bacon/ext/async.rb
|
68
70
|
- lib/bacon/ext/em.rb
|
69
71
|
- lib/bacon/ext/http.rb
|
70
72
|
- lib/bacon/ext/mocha.rb
|
@@ -98,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
100
|
version: '0'
|
99
101
|
requirements: []
|
100
102
|
rubyforge_project:
|
101
|
-
rubygems_version: 2.
|
103
|
+
rubygems_version: 2.6.8
|
102
104
|
signing_key:
|
103
105
|
specification_version: 4
|
104
106
|
summary: a small RSpec clone
|