amqp-spec 0.1.13 → 0.2.0

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/HISTORY CHANGED
@@ -61,3 +61,7 @@
61
61
  == 0.1.13 / 2010-10-23
62
62
 
63
63
  * Release
64
+
65
+ == 0.2.0 / 2010-10-28
66
+
67
+ * Rspec 2 support added
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.13
1
+ 0.2.0
@@ -55,25 +55,42 @@ module AMQP
55
55
  SpecTimeoutExceededError = Class.new(RuntimeError)
56
56
 
57
57
  def self.included(example_group)
58
- ::Spec::Example::ExampleGroup.instance_exec do
59
- unless defined? default_spec_timeout
58
+ # unless defined? self.default_timeout
59
+ if defined?(RSpec)
60
+ example_group.instance_exec do
60
61
 
62
+ metadata[:em_default_options] = {}
63
+ metadata[:em_default_timeout] = nil
64
+
65
+ def self.default_timeout(spec_timeout=nil)
66
+ metadata[:em_default_timeout] = spec_timeout if spec_timeout
67
+ metadata[:em_default_timeout]
68
+ end
69
+
70
+ def self.default_options(opts=nil)
71
+ metadata[:em_default_options] = opts if opts
72
+ metadata[:em_default_options]
73
+ end
74
+ end
75
+ else
76
+ ::Spec::Example::ExampleGroup.instance_exec do
61
77
  @@_em_default_options = {}
62
78
  @@_em_default_timeout = nil
63
79
 
64
- def self.default_spec_timeout(spec_timeout=nil)
80
+ def self.default_timeout(spec_timeout=nil)
65
81
  @@_em_default_timeout = spec_timeout if spec_timeout
66
82
  @@_em_default_timeout
67
83
  end
68
84
 
69
- alias default_timeout default_spec_timeout
70
-
71
85
  def self.default_options(opts=nil)
72
86
  @@_em_default_options = opts if opts
73
87
  @@_em_default_options
74
88
  end
75
89
  end
90
+
91
+ # end
76
92
  end
93
+
77
94
  end
78
95
 
79
96
  # Yields to given block inside EM.run and AMQP.start loops. This method takes any option that is
@@ -88,12 +105,12 @@ module AMQP
88
105
  # if something goes wrong and EM/AMQP loop hangs for some reason. SpecTimeoutExceededError is raised.
89
106
  #
90
107
  def amqp opts={}, &block
91
- opts = @@_em_default_options.merge opts
108
+ opts = self.class.default_options.merge opts
92
109
  begin
93
110
  EM.run do
94
111
  @_em_spec_with_amqp = true
95
112
  @_em_spec_exception = nil
96
- spec_timeout = opts.delete(:spec_timeout) || @@_em_default_timeout
113
+ spec_timeout = opts.delete(:spec_timeout) || self.class.default_timeout
97
114
  timeout(spec_timeout) if spec_timeout
98
115
  @_em_spec_fiber = Fiber.new do
99
116
  begin
@@ -117,8 +134,8 @@ module AMQP
117
134
 
118
135
  # Yields to block inside EM loop, :spec_timeout option (in seconds) is used to force spec to timeout
119
136
  # if something goes wrong and EM/AMQP loop hangs for some reason. SpecTimeoutExceededError is raised.
120
- def em(spec_timeout = @@_em_default_timeout, &block)
121
- spec_timeout = spec_timeout[:spec_timeout] || @@_em_default_timeout if spec_timeout.is_a?(Hash)
137
+ def em(spec_timeout = self.class.default_timeout, &block)
138
+ spec_timeout = spec_timeout[:spec_timeout] || self.class.default_timeout if spec_timeout.is_a?(Hash)
122
139
  EM.run do
123
140
  @_em_spec_with_amqp = false
124
141
  @_em_spec_exception = nil
@@ -1,6 +1,6 @@
1
- require_relative 'spec_helper.rb'
1
+ require 'spec_helper'
2
2
 
3
- context 'Following examples should all be failing:' do
3
+ describe 'Following examples should all be failing:' do
4
4
  describe EventMachine, " when running failing examples" do
5
5
  include AMQP::EMSpec
6
6
 
@@ -17,8 +17,12 @@ context 'Following examples should all be failing:' do
17
17
  end
18
18
 
19
19
  describe EventMachine, " when testing with AMQP::EMSpec with a maximum execution time per test" do
20
-
21
20
  include AMQP::EMSpec
21
+
22
+ # For RSpec 1, default_timeout and default_options are global
23
+ # For RSpec 2, default_timeout and default_options are example-group local, inheritable by nested groups
24
+ default_timeout 1
25
+
22
26
  it 'should timeout before reaching done' do
23
27
  EM.add_timer(2) { done }
24
28
  end
@@ -33,7 +37,9 @@ context 'Following examples should all be failing:' do
33
37
 
34
38
  include AMQP::Spec
35
39
 
36
- default_timeout 1 # Because we may need to run this spec file separately
40
+ # For RSpec 1, default_timeout and default_options are global
41
+ # For RSpec 2, default_timeout and default_options are example-group local, inheritable by nested groups
42
+ default_timeout 1
37
43
 
38
44
  it 'should timeout before reaching done' do
39
45
  EM.add_timer(2) { done }
@@ -1,5 +1,5 @@
1
1
  require_relative 'spec_helper.rb'
2
2
 
3
- context '!!!!!!!!! LEAKING OR PROBLEMATIC EXAMPLES !!!!!!!!!' do
3
+ describe '!!!!!!!!! LEAKING OR PROBLEMATIC EXAMPLES !!!!!!!!!' do
4
4
  end
5
5
 
@@ -1,11 +1,5 @@
1
1
  require_relative 'spec_helper.rb'
2
2
 
3
- describe 'Rspec' do
4
- it 'should work as normal without AMQP-Spec' do
5
- 1.should == 1
6
- end
7
- end
8
-
9
3
  def publish_and_consume_once(queue_name="test_sink", data="data")
10
4
  amqp do
11
5
  q = MQ.queue(queue_name)
@@ -20,7 +14,13 @@ def publish_and_consume_once(queue_name="test_sink", data="data")
20
14
  end
21
15
  end
22
16
 
23
- context 'Evented AMQP specs' do
17
+ describe RSPEC do
18
+ it 'should work as normal without AMQP-Spec' do
19
+ 1.should == 1
20
+ end
21
+ end
22
+
23
+ describe 'Evented AMQP specs' do
24
24
  describe AMQP, " when testing with AMQP::SpecHelper" do
25
25
  include AMQP::SpecHelper
26
26
 
@@ -55,7 +55,7 @@ context 'Evented AMQP specs' do
55
55
  amqp do
56
56
  :this.should == :fail
57
57
  end
58
- }.to raise_error Spec::Expectations::ExpectationNotMetError
58
+ }.to raise_error RSPEC::Expectations::ExpectationNotMetError
59
59
  AMQP.conn.should == nil
60
60
  end
61
61
 
@@ -65,7 +65,7 @@ context 'Evented AMQP specs' do
65
65
  done
66
66
  :this.should == :fail
67
67
  end
68
- }.to raise_error Spec::Expectations::ExpectationNotMetError
68
+ }.to raise_error RSPEC::Expectations::ExpectationNotMetError
69
69
  AMQP.conn.should == nil
70
70
  end
71
71
 
@@ -91,7 +91,7 @@ context 'Evented AMQP specs' do
91
91
  end
92
92
  end
93
93
 
94
- describe "Rspec", " when running an example group after another group that uses AMQP-Spec " do
94
+ describe RSPEC, " when running an example group after another group that uses AMQP-Spec " do
95
95
  it "should work normally" do
96
96
  :does_not_hang.should_not be_false
97
97
  end
@@ -1,6 +1,6 @@
1
1
  require_relative 'spec_helper.rb'
2
2
 
3
- context 'Plain EM, no AMQP' do
3
+ describe 'Plain EM, no AMQP' do
4
4
  describe EventMachine, " when testing with AMQP::SpecHelper" do
5
5
  include AMQP::SpecHelper
6
6
 
@@ -46,7 +46,7 @@ context 'Plain EM, no AMQP' do
46
46
  end
47
47
  end
48
48
 
49
- describe "Rspec", " when running an example group after groups that uses EM specs " do
49
+ describe RSPEC, " when running an example group after groups that uses EM specs " do
50
50
  it "should work normally" do
51
51
  :does_not_hang.should_not be_false
52
52
  end
@@ -61,48 +61,6 @@ shared_examples_for 'SpecHelper examples' do
61
61
  it_should_behave_like 'timeout examples'
62
62
  end
63
63
 
64
- shared_examples_for 'Spec examples' do
65
- after do
66
- EM.reactor_running?.should == true
67
- # AMQP.conn.should be_nil # You're inside running amqp block, stupid!
68
- done
69
- end
70
-
71
- it 'should work' do
72
- done
73
- end
74
-
75
- it 'should have timers' do
76
- start = Time.now
77
-
78
- EM.add_timer(0.5) {
79
- (Time.now-start).should be_close(0.5, 0.1)
80
- done
81
- }
82
- end
83
-
84
- it 'should have periodic timers' do
85
- num = 0
86
- start = Time.now
87
-
88
- timer = EM.add_periodic_timer(0.25) {
89
- if (num += 1) == 2
90
- (Time.now-start).should be_close(0.5, 0.1)
91
- EM.cancel_timer timer
92
- done
93
- end
94
- }
95
- end
96
-
97
- it 'should have deferrables' do
98
- defr = EM::DefaultDeferrable.new
99
- defr.timeout(0.5)
100
- defr.errback {
101
- done
102
- }
103
- end
104
- end
105
-
106
64
  shared_examples_for 'done examples' do
107
65
 
108
66
  it 'should yield to block given to done (when amqp is used)' do
@@ -138,7 +96,6 @@ shared_examples_for 'done examples' do
138
96
  end
139
97
  end
140
98
 
141
-
142
99
  shared_examples_for 'timeout examples' do
143
100
  before { @start = Time.now }
144
101
 
@@ -175,4 +132,44 @@ shared_examples_for 'timeout examples' do
175
132
  end
176
133
  end
177
134
 
135
+ shared_examples_for 'Spec examples' do
136
+ after do
137
+ EM.reactor_running?.should == true
138
+ # AMQP.conn.should be_nil # You're inside running amqp block, stupid!
139
+ done
140
+ end
141
+
142
+ it 'should work' do
143
+ done
144
+ end
145
+
146
+ it 'should have timers' do
147
+ start = Time.now
148
+
149
+ EM.add_timer(0.25) {
150
+ (Time.now-start).should be_close(0.25, 0.1)
151
+ done
152
+ }
153
+ end
154
+
155
+ it 'should have periodic timers' do
156
+ num = 0
157
+ start = Time.now
178
158
 
159
+ timer = EM.add_periodic_timer(0.25) {
160
+ if (num += 1) == 2
161
+ (Time.now-start).should be_close(0.5, 0.1)
162
+ EM.cancel_timer timer
163
+ done
164
+ end
165
+ }
166
+ end
167
+
168
+ it 'should have deferrables' do
169
+ defr = EM::DefaultDeferrable.new
170
+ defr.timeout(0.25)
171
+ defr.errback {
172
+ done
173
+ }
174
+ end
175
+ end
@@ -1,17 +1,18 @@
1
- #$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
-
3
1
  $LOAD_PATH << "." unless $LOAD_PATH.include? "." # moronic 1.9.2 breaks things bad
4
2
 
5
- require 'spec'
6
- require 'yaml'
3
+ require 'bundler'
4
+ Bundler.setup
5
+ Bundler.require :test
7
6
 
7
+ require 'yaml'
8
8
  require 'amqp-spec/rspec'
9
9
  require 'shared_examples'
10
- #require File.join(File.dirname(__FILE__), '..', 'lib', 'amqp-spec', 'rspec.rb')
10
+
11
+ RSPEC = defined?(RSpec) ? RSpec : Spec
11
12
 
12
13
  amqp_config = File.dirname(__FILE__) + '/amqp.yml'
13
- if File.exists? amqp_config
14
14
 
15
+ if File.exists? amqp_config
15
16
  class Hash
16
17
  def symbolize_keys
17
18
  self.inject({}) { |result, (key, value)|
@@ -2,17 +2,13 @@ desc 'Alias to spec:spec'
2
2
  task :spec => 'spec:spec'
3
3
 
4
4
  namespace :spec do
5
- require 'spec/rake/spectask'
5
+ require 'rspec/core/rake_task'
6
6
 
7
7
  desc "Run all specs"
8
- Spec::Rake::SpecTask.new(:spec) do |t|
9
- t.spec_opts = ['--options', %Q{"#{BASE_PATH}/spec/spec.opts"}]
10
- t.spec_files = FileList['spec/**/*_spec.rb']
11
- end
8
+ RSpec::Core::RakeTask.new(:spec){|task|}
12
9
 
13
10
  desc "Run specs with RCov"
14
- Spec::Rake::SpecTask.new(:rcov) do |t|
15
- t.spec_files = FileList['spec/**/*_spec.rb']
11
+ RSpec::Core::RakeTask.new(:rcov) do |t|
16
12
  t.rcov = true
17
13
  t.rcov_opts = ['--exclude', 'spec']
18
14
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amqp-spec
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 13
10
- version: 0.1.13
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Arvicco
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-23 00:00:00 +04:00
18
+ date: 2010-10-28 00:00:00 +04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency