em-spec 0.2.1 → 0.2.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.
- data/.gitignore +2 -0
- data/.rspec +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +44 -0
- data/Guardfile +9 -0
- data/Rakefile +5 -16
- data/em-spec.gemspec +39 -0
- data/lib/em-spec/rspec.rb +1 -1
- data/lib/em-spec/test.rb +37 -30
- data/lib/em-spec/version.rb +5 -0
- data/{test → spec}/rspec_fail_examples.rb +0 -0
- data/{test → spec}/rspec_spec.rb +7 -7
- data/test/test_spec.rb +3 -1
- metadata +144 -13
- data/VERSION +0 -1
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
em-spec (0.2.4)
|
5
|
+
bacon
|
6
|
+
eventmachine
|
7
|
+
rspec (~> 2.6.0)
|
8
|
+
test-unit
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: http://rubygems.org/
|
12
|
+
specs:
|
13
|
+
bacon (1.1.0)
|
14
|
+
diff-lcs (1.1.2)
|
15
|
+
eventmachine (0.12.10)
|
16
|
+
growl (1.0.3)
|
17
|
+
guard (0.5.1)
|
18
|
+
thor (~> 0.14.6)
|
19
|
+
guard-bundler (0.1.3)
|
20
|
+
bundler (>= 1.0.0)
|
21
|
+
guard (>= 0.2.2)
|
22
|
+
guard-rspec (0.2.0)
|
23
|
+
guard (>= 0.2.2)
|
24
|
+
rake (0.8.7)
|
25
|
+
rspec (2.6.0)
|
26
|
+
rspec-core (~> 2.6.0)
|
27
|
+
rspec-expectations (~> 2.6.0)
|
28
|
+
rspec-mocks (~> 2.6.0)
|
29
|
+
rspec-core (2.6.4)
|
30
|
+
rspec-expectations (2.6.0)
|
31
|
+
diff-lcs (~> 1.1.2)
|
32
|
+
rspec-mocks (2.6.0)
|
33
|
+
test-unit (2.3.1)
|
34
|
+
thor (0.14.6)
|
35
|
+
|
36
|
+
PLATFORMS
|
37
|
+
ruby
|
38
|
+
|
39
|
+
DEPENDENCIES
|
40
|
+
em-spec!
|
41
|
+
growl
|
42
|
+
guard-bundler
|
43
|
+
guard-rspec
|
44
|
+
rake (= 0.8.7)
|
data/Guardfile
ADDED
data/Rakefile
CHANGED
@@ -1,19 +1,7 @@
|
|
1
1
|
require 'rake/testtask'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
Jeweler::Tasks.new do |s|
|
6
|
-
s.name = "em-spec"
|
7
|
-
s.description = s.summary = "Simple BDD API for testing asynchronous Ruby/EventMachine code"
|
8
|
-
s.email = "aman@tmm1.net"
|
9
|
-
s.homepage = "http://github.com/joshbuddy/em-spec"
|
10
|
-
s.authors = ["Aman Gupta"]
|
11
|
-
s.files = FileList["[A-Z]*", "{lib,test}/**/*"]
|
12
|
-
end
|
13
|
-
Jeweler::GemcutterTasks.new
|
14
|
-
rescue LoadError
|
15
|
-
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
16
|
-
end
|
2
|
+
require 'rubygems'
|
3
|
+
require 'bundler'
|
4
|
+
Bundler::GemHelper.install_tasks
|
17
5
|
|
18
6
|
task :default => :spec
|
19
7
|
|
@@ -27,4 +15,5 @@ task :spec do
|
|
27
15
|
sh('rake test') rescue nil
|
28
16
|
sh('bacon test/bacon_spec.rb') rescue nil
|
29
17
|
sh 'spec -f specdoc test/rspec_spec.rb test/rspec_fail_examples.rb'
|
30
|
-
end
|
18
|
+
end
|
19
|
+
|
data/em-spec.gemspec
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), 'lib', 'em-spec', 'version')
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'em-spec'
|
7
|
+
s.version = EventMachine::Spec::VERSION
|
8
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
|
+
s.authors = ["Aman Gupta"]
|
10
|
+
s.summary = "Simple BDD API for testing asynchronous Ruby/EventMachine code"
|
11
|
+
s.description = "Simple BDD API for testing asynchronous Ruby/EventMachine code"
|
12
|
+
s.email = %q{aman@tmm1.net}
|
13
|
+
s.extra_rdoc_files = ['README.rdoc']
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.homepage = %q{http://github.com/joshbuddy/em-spec}
|
16
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.rubygems_version = %q{1.3.7}
|
19
|
+
s.test_files = `git ls-files`.split("\n").select{|f| f =~ /^test/}
|
20
|
+
s.rubyforge_project = 'em-spec'
|
21
|
+
|
22
|
+
# dependencies
|
23
|
+
s.add_dependency 'rspec', '~> 2.6.0'
|
24
|
+
s.add_dependency 'bacon'
|
25
|
+
s.add_dependency 'test-unit'
|
26
|
+
s.add_dependency 'eventmachine'
|
27
|
+
|
28
|
+
if RUBY_PLATFORM.downcase.include?("darwin")
|
29
|
+
# also install growlnotify from the
|
30
|
+
# Extras/growlnotify/growlnotify.pkg in Growl disk image
|
31
|
+
s.add_development_dependency 'growl'
|
32
|
+
end
|
33
|
+
|
34
|
+
s.add_development_dependency 'guard-rspec'
|
35
|
+
s.add_development_dependency 'guard-bundler'
|
36
|
+
s.add_development_dependency 'rake', '= 0.8.7'
|
37
|
+
|
38
|
+
end
|
39
|
+
|
data/lib/em-spec/rspec.rb
CHANGED
@@ -7,7 +7,7 @@ module EventMachine
|
|
7
7
|
SpecTimeoutExceededError = Class.new(RuntimeError)
|
8
8
|
|
9
9
|
def self.included(cls)
|
10
|
-
::
|
10
|
+
::RSpec::Core::ExampleGroup.instance_eval "
|
11
11
|
@@_em_default_time_to_finish = nil
|
12
12
|
def self.default_timeout(timeout)
|
13
13
|
@@_em_default_time_to_finish = timeout
|
data/lib/em-spec/test.rb
CHANGED
@@ -5,52 +5,61 @@ module EventMachine
|
|
5
5
|
TestTimeoutExceededError = Class.new(RuntimeError)
|
6
6
|
|
7
7
|
module TestHelper
|
8
|
-
|
8
|
+
|
9
9
|
def self.included(cls)
|
10
10
|
cls.class_eval(<<-HERE_DOC, __FILE__, __LINE__)
|
11
11
|
DefaultTimeout = nil unless const_defined?(:DefaultTimeout)
|
12
|
-
|
12
|
+
|
13
13
|
def self.default_timeout(timeout)
|
14
|
-
|
15
|
-
self.
|
14
|
+
|
15
|
+
if self.const_defined? :DefaultTimeout
|
16
|
+
self.ancestors.each do |cls|
|
17
|
+
begin
|
18
|
+
cls.send(:remove_const, :DefaultTimeout)
|
19
|
+
cls.send(:const_set, :DefaultTimeout, timeout)
|
20
|
+
break
|
21
|
+
rescue
|
22
|
+
end
|
23
|
+
end
|
24
|
+
else
|
25
|
+
self.send(:const_set, :DefaultTimeout, timeout)
|
26
|
+
end
|
16
27
|
end
|
17
|
-
|
28
|
+
|
18
29
|
def current_default_timeout
|
19
30
|
DefaultTimeout
|
20
31
|
end
|
21
32
|
HERE_DOC
|
22
|
-
|
23
33
|
end
|
24
|
-
|
25
|
-
|
34
|
+
|
26
35
|
def timeout(time_to_run)
|
27
36
|
EM.cancel_timer(@_em_timer) if @_em_timer
|
28
37
|
@_em_timer = EM.add_timer(time_to_run) { done('timeout exceeded') }
|
29
38
|
end
|
30
|
-
|
39
|
+
|
31
40
|
def em(time_to_run = current_default_timeout, &block)
|
32
41
|
@flunk_test = nil
|
33
42
|
EM.run do
|
34
43
|
timeout(time_to_run) if time_to_run
|
35
44
|
em_spec_exception = nil
|
36
45
|
@_em_spec_fiber = Fiber.new do
|
37
|
-
begin
|
46
|
+
@_output = begin
|
38
47
|
block.call
|
39
48
|
rescue Exception => em_spec_exception
|
40
49
|
done
|
41
50
|
end
|
42
51
|
Fiber.yield
|
43
52
|
end
|
44
|
-
|
45
53
|
@_em_spec_fiber.resume
|
46
|
-
|
54
|
+
|
47
55
|
raise em_spec_exception if em_spec_exception
|
48
|
-
|
49
|
-
|
56
|
+
end
|
57
|
+
raise(@flunk_test) if @flunk_test
|
58
|
+
@_output
|
50
59
|
end
|
51
60
|
|
52
61
|
def done(flunk_reason = nil)
|
53
|
-
EM.next_tick{
|
62
|
+
EM.next_tick {
|
54
63
|
@flunk_test = flunk_reason
|
55
64
|
finish_em_spec_fiber
|
56
65
|
}
|
@@ -62,31 +71,29 @@ module EventMachine
|
|
62
71
|
EM.stop_event_loop if EM.reactor_running?
|
63
72
|
@_em_spec_fiber.resume if @_em_spec_fiber.alive?
|
64
73
|
end
|
65
|
-
|
74
|
+
|
66
75
|
end
|
67
|
-
|
76
|
+
|
68
77
|
module Test
|
69
|
-
|
78
|
+
|
70
79
|
def self.included(cls)
|
71
80
|
cls.class_eval(<<-HERE_DOC, __FILE__, __LINE__)
|
72
|
-
def self.default_timeout(timeout)
|
73
|
-
self.send(:remove_const, :DefaultTimeout)
|
74
|
-
self.send(:const_set, :DefaultTimeout, timeout)
|
75
|
-
end
|
76
|
-
|
77
81
|
include TestHelper
|
78
82
|
|
79
83
|
alias_method :run_without_em, :run
|
80
84
|
def run(result, &block)
|
81
85
|
em(DefaultTimeout) { run_without_em(result, &block) }
|
82
|
-
rescue Exception
|
83
|
-
|
86
|
+
rescue Exception => e
|
87
|
+
if RUBY_VERSION >= "1.9.1"
|
88
|
+
result.puke(self.class, @name, e)
|
89
|
+
else
|
90
|
+
add_error($!)
|
91
|
+
end
|
84
92
|
end
|
85
|
-
|
93
|
+
|
86
94
|
HERE_DOC
|
87
|
-
|
88
95
|
end
|
89
|
-
|
96
|
+
|
90
97
|
end
|
91
|
-
|
92
|
-
end
|
98
|
+
|
99
|
+
end
|
File without changes
|
data/{test → spec}/rspec_spec.rb
RENAMED
@@ -17,8 +17,8 @@ describe EventMachine, "when testing with EM::SpecHelper" do
|
|
17
17
|
em do
|
18
18
|
start = Time.now
|
19
19
|
|
20
|
-
EM.add_timer(0.5){
|
21
|
-
(Time.now-start).should
|
20
|
+
EM.add_timer(0.5) {
|
21
|
+
(Time.now - start).should be_within(0.1).of(0.5)
|
22
22
|
done
|
23
23
|
}
|
24
24
|
end
|
@@ -35,8 +35,8 @@ describe EventMachine, "when testing with EM::Spec" do
|
|
35
35
|
it 'should have timers' do
|
36
36
|
start = Time.now
|
37
37
|
|
38
|
-
EM.add_timer(0.5){
|
39
|
-
(Time.now-start).should
|
38
|
+
EM.add_timer(0.5) {
|
39
|
+
(Time.now - start).should be_within(0.5).of(0.5)
|
40
40
|
done
|
41
41
|
}
|
42
42
|
end
|
@@ -45,9 +45,9 @@ describe EventMachine, "when testing with EM::Spec" do
|
|
45
45
|
num = 0
|
46
46
|
start = Time.now
|
47
47
|
|
48
|
-
timer = EM.add_periodic_timer(0.5){
|
48
|
+
timer = EM.add_periodic_timer(0.5) {
|
49
49
|
if (num += 1) == 2
|
50
|
-
(Time.now-start).should
|
50
|
+
(Time.now - start).should be_within(1).of(0.5)
|
51
51
|
EM.__send__ :cancel_timer, timer
|
52
52
|
done
|
53
53
|
end
|
@@ -68,7 +68,7 @@ describe EventMachine, "when testing with EM::Spec with a maximum execution time
|
|
68
68
|
|
69
69
|
include EM::Spec
|
70
70
|
|
71
|
-
default_timeout
|
71
|
+
default_timeout 4
|
72
72
|
|
73
73
|
it 'should timeout before reaching done' do
|
74
74
|
EM.add_timer(3) {
|
data/test/test_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: em-spec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 31
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 2
|
9
|
+
- 4
|
10
|
+
version: 0.2.4
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Aman Gupta
|
@@ -9,10 +15,125 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
18
|
+
date: 2011-08-07 00:00:00 -07:00
|
13
19
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 23
|
29
|
+
segments:
|
30
|
+
- 2
|
31
|
+
- 6
|
32
|
+
- 0
|
33
|
+
version: 2.6.0
|
34
|
+
requirement: *id001
|
35
|
+
name: rspec
|
36
|
+
type: :runtime
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
version: "0"
|
48
|
+
requirement: *id002
|
49
|
+
name: bacon
|
50
|
+
type: :runtime
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
62
|
+
requirement: *id003
|
63
|
+
name: test-unit
|
64
|
+
type: :runtime
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 3
|
73
|
+
segments:
|
74
|
+
- 0
|
75
|
+
version: "0"
|
76
|
+
requirement: *id004
|
77
|
+
name: eventmachine
|
78
|
+
type: :runtime
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
hash: 3
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
version: "0"
|
90
|
+
requirement: *id005
|
91
|
+
name: growl
|
92
|
+
type: :development
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
prerelease: false
|
95
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
hash: 3
|
101
|
+
segments:
|
102
|
+
- 0
|
103
|
+
version: "0"
|
104
|
+
requirement: *id006
|
105
|
+
name: guard-rspec
|
106
|
+
type: :development
|
107
|
+
- !ruby/object:Gem::Dependency
|
108
|
+
prerelease: false
|
109
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
hash: 3
|
115
|
+
segments:
|
116
|
+
- 0
|
117
|
+
version: "0"
|
118
|
+
requirement: *id007
|
119
|
+
name: guard-bundler
|
120
|
+
type: :development
|
121
|
+
- !ruby/object:Gem::Dependency
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
124
|
+
none: false
|
125
|
+
requirements:
|
126
|
+
- - "="
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
hash: 49
|
129
|
+
segments:
|
130
|
+
- 0
|
131
|
+
- 8
|
132
|
+
- 7
|
133
|
+
version: 0.8.7
|
134
|
+
requirement: *id008
|
135
|
+
name: rake
|
136
|
+
type: :development
|
16
137
|
description: Simple BDD API for testing asynchronous Ruby/EventMachine code
|
17
138
|
email: aman@tmm1.net
|
18
139
|
executables: []
|
@@ -22,16 +143,22 @@ extensions: []
|
|
22
143
|
extra_rdoc_files:
|
23
144
|
- README.rdoc
|
24
145
|
files:
|
146
|
+
- .gitignore
|
147
|
+
- .rspec
|
148
|
+
- Gemfile
|
149
|
+
- Gemfile.lock
|
150
|
+
- Guardfile
|
25
151
|
- README.rdoc
|
26
152
|
- Rakefile
|
27
|
-
-
|
153
|
+
- em-spec.gemspec
|
28
154
|
- lib/em-spec/bacon.rb
|
29
155
|
- lib/em-spec/rspec.rb
|
30
156
|
- lib/em-spec/test.rb
|
157
|
+
- lib/em-spec/version.rb
|
31
158
|
- lib/ext/fiber18.rb
|
159
|
+
- spec/rspec_fail_examples.rb
|
160
|
+
- spec/rspec_spec.rb
|
32
161
|
- test/bacon_spec.rb
|
33
|
-
- test/rspec_fail_examples.rb
|
34
|
-
- test/rspec_spec.rb
|
35
162
|
- test/test_spec.rb
|
36
163
|
has_rdoc: true
|
37
164
|
homepage: http://github.com/joshbuddy/em-spec
|
@@ -43,26 +170,30 @@ rdoc_options:
|
|
43
170
|
require_paths:
|
44
171
|
- lib
|
45
172
|
required_ruby_version: !ruby/object:Gem::Requirement
|
173
|
+
none: false
|
46
174
|
requirements:
|
47
175
|
- - ">="
|
48
176
|
- !ruby/object:Gem::Version
|
177
|
+
hash: 3
|
178
|
+
segments:
|
179
|
+
- 0
|
49
180
|
version: "0"
|
50
|
-
version:
|
51
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
|
+
none: false
|
52
183
|
requirements:
|
53
184
|
- - ">="
|
54
185
|
- !ruby/object:Gem::Version
|
186
|
+
hash: 3
|
187
|
+
segments:
|
188
|
+
- 0
|
55
189
|
version: "0"
|
56
|
-
version:
|
57
190
|
requirements: []
|
58
191
|
|
59
|
-
rubyforge_project:
|
60
|
-
rubygems_version: 1.
|
192
|
+
rubyforge_project: em-spec
|
193
|
+
rubygems_version: 1.6.2
|
61
194
|
signing_key:
|
62
195
|
specification_version: 3
|
63
196
|
summary: Simple BDD API for testing asynchronous Ruby/EventMachine code
|
64
197
|
test_files:
|
65
198
|
- test/bacon_spec.rb
|
66
|
-
- test/rspec_fail_examples.rb
|
67
|
-
- test/rspec_spec.rb
|
68
199
|
- test/test_spec.rb
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.2.1
|