tmm1-em-spec 0.1.0 → 0.1.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.
- data/lib/em/spec.rb +16 -9
- data/lib/ext/fiber18.rb +7 -0
- metadata +10 -1
data/lib/em/spec.rb
CHANGED
@@ -3,15 +3,17 @@ require File.dirname(__FILE__) + '/../ext/fiber18'
|
|
3
3
|
require 'bacon'
|
4
4
|
|
5
5
|
class Bacon::Context
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
_it(*args){ if block_given? then yield; Fiber.yield end }
|
10
|
-
end
|
11
|
-
def done() $bacon_fiber.resume if $bacon_fiber end
|
12
|
-
alias :resume :done
|
6
|
+
alias :_it :it
|
7
|
+
def it *args
|
8
|
+
_it(*args){ if block_given? then yield; Fiber.yield end }
|
13
9
|
end
|
14
|
-
|
10
|
+
|
11
|
+
def done
|
12
|
+
EM.next_tick{
|
13
|
+
$bacon_fiber.resume if $bacon_fiber
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end unless Bacon::Context.method_defined? :_it
|
15
17
|
|
16
18
|
require 'eventmachine'
|
17
19
|
|
@@ -23,7 +25,7 @@ module EventMachine
|
|
23
25
|
EM.run{
|
24
26
|
Bacon.summary_on_exit
|
25
27
|
($bacon_fiber = Fiber.new{
|
26
|
-
Bacon::Context.new(args.join(' '), &blk)
|
28
|
+
Bacon::Context.new(args.join(' '), &blk).run
|
27
29
|
EM.stop_event_loop
|
28
30
|
}).resume
|
29
31
|
}
|
@@ -33,6 +35,11 @@ end
|
|
33
35
|
|
34
36
|
EM.describe EventMachine do
|
35
37
|
|
38
|
+
should 'work' do
|
39
|
+
1.should == 1
|
40
|
+
done
|
41
|
+
end
|
42
|
+
|
36
43
|
should 'have timers' do
|
37
44
|
start = Time.now
|
38
45
|
|
data/lib/ext/fiber18.rb
CHANGED
@@ -21,11 +21,16 @@ unless defined? Fiber
|
|
21
21
|
|
22
22
|
def resume *args
|
23
23
|
raise FiberError, 'dead fiber called' unless @thread.alive?
|
24
|
+
raise FiberError, 'double resume' if @thread == Thread.current
|
24
25
|
@resume.push(args)
|
25
26
|
result = @yield.pop
|
26
27
|
result.size > 1 ? result : result.first
|
27
28
|
end
|
28
29
|
|
30
|
+
def resume!
|
31
|
+
@resume.push []
|
32
|
+
end
|
33
|
+
|
29
34
|
def yield *args
|
30
35
|
@yield.push(args)
|
31
36
|
result = @resume.pop
|
@@ -45,6 +50,8 @@ unless defined? Fiber
|
|
45
50
|
"#<#{self.class}:0x#{self.object_id.to_s(16)}>"
|
46
51
|
end
|
47
52
|
end
|
53
|
+
else
|
54
|
+
require 'fiber'
|
48
55
|
end
|
49
56
|
|
50
57
|
if __FILE__ == $0
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tmm1-em-spec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aman Gupta
|
@@ -21,6 +21,15 @@ dependencies:
|
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 0.12.0
|
23
23
|
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: bacon
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 1.1.0
|
32
|
+
version:
|
24
33
|
description: Bacon based BDD API for Ruby/EventMachine
|
25
34
|
email: em-spec@tmm1.net
|
26
35
|
executables: []
|