spicycode-micronaut 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 3
2
+ :patch: 4
3
3
  :major: 0
4
4
  :minor: 2
@@ -11,6 +11,7 @@ end
11
11
  with_ruby("1.8") do
12
12
  gem :mocha
13
13
  end
14
+
14
15
  require File.expand_path(File.dirname(__FILE__) + "/resources/example_classes")
15
16
 
16
17
  module Micronaut
@@ -29,13 +30,20 @@ def remove_last_describe_from_world
29
30
  Micronaut.world.behaviours.pop
30
31
  end
31
32
 
33
+ def isolate_behaviour
34
+ if block_given?
35
+ yield
36
+ Micronaut.world.behaviours.pop
37
+ end
38
+ end
39
+
32
40
  def not_in_editor?
33
- ['TM_MODE', 'EMACS', 'VIM'].all? { |k| !ENV.has_key?(k) }
41
+ !(ENV.has_key?('TM_MODE') || ENV.has_key?('EMACS') || ENV.has_key?('VIM'))
34
42
  end
35
43
 
36
44
  Micronaut.configure do |c|
37
45
  c.mock_with :mocha
38
46
  c.color_enabled = not_in_editor?
39
47
  c.filter_run :focused => true
40
- c.formatter = :documentation
48
+ #c.formatter = :documentation
41
49
  end
@@ -2,9 +2,6 @@ require File.expand_path(File.dirname(__FILE__) + "/../../example_helper")
2
2
 
3
3
  describe Micronaut::Behaviour do
4
4
 
5
- before(:all) { puts "ba: describe Micronaut::Behaviour" }
6
- after(:all) { puts "aa: describe Micronaut::Behaviour" }
7
-
8
5
  def empty_behaviour_group
9
6
  group = Micronaut::Behaviour.describe(Object, 'Empty Behaviour Group') { }
10
7
  remove_last_describe_from_world
@@ -12,9 +9,6 @@ describe Micronaut::Behaviour do
12
9
 
13
10
  describe "describing behaviour with #describe" do
14
11
 
15
- before(:all) { puts "ba: describing behaviour with #describe" }
16
- after(:all) { puts "aa: describing behaviour with #describe" }
17
-
18
12
  example "an ArgumentError is raised if no type or description is given" do
19
13
  lambda { Micronaut::Behaviour.describe() {} }.should raise_error(ArgumentError, "No arguments given. You must a least supply a type or description")
20
14
  end
@@ -26,13 +20,15 @@ describe Micronaut::Behaviour do
26
20
  describe '#name' do
27
21
 
28
22
  it "should expose the first parameter as name" do
29
- Micronaut::Behaviour.describe("my favorite pony") { }.name.should == 'my favorite pony'
30
- remove_last_describe_from_world
23
+ isolate_behaviour do
24
+ Micronaut::Behaviour.describe("my favorite pony") { }.name.should == 'my favorite pony'
25
+ end
31
26
  end
32
27
 
33
28
  it "should call to_s on the first parameter in case it is a constant" do
34
- Micronaut::Behaviour.describe(Object) { }.name.should == 'Object'
35
- remove_last_describe_from_world
29
+ isolate_behaviour do
30
+ Micronaut::Behaviour.describe(Object) { }.name.should == 'Object'
31
+ end
36
32
  end
37
33
 
38
34
  end
@@ -40,13 +36,15 @@ describe Micronaut::Behaviour do
40
36
  describe '#describes' do
41
37
 
42
38
  it "should be the first parameter when it is a constant" do
43
- Micronaut::Behaviour.describe(Object) { }.describes.should == Object
44
- remove_last_describe_from_world
39
+ isolate_behaviour do
40
+ Micronaut::Behaviour.describe(Object) { }.describes.should == Object
41
+ end
45
42
  end
46
43
 
47
44
  it "should be nil when the first parameter is a string" do
48
- Micronaut::Behaviour.describe("i'm a computer") { }.describes.should be_nil
49
- remove_last_describe_from_world
45
+ isolate_behaviour do
46
+ Micronaut::Behaviour.describe("i'm a computer") { }.describes.should be_nil
47
+ end
50
48
  end
51
49
 
52
50
  end
@@ -54,13 +52,15 @@ describe Micronaut::Behaviour do
54
52
  describe '#description' do
55
53
 
56
54
  it "should expose the second parameter as description" do
57
- Micronaut::Behaviour.describe(Object, "my desc") { }.description.should == 'my desc'
58
- remove_last_describe_from_world
55
+ isolate_behaviour do
56
+ Micronaut::Behaviour.describe(Object, "my desc") { }.description.should == 'my desc'
57
+ end
59
58
  end
60
59
 
61
60
  it "should allow the second parameter to be nil" do
62
- Micronaut::Behaviour.describe(Object, nil) { }.description.size.should == 0
63
- remove_last_describe_from_world
61
+ isolate_behaviour do
62
+ Micronaut::Behaviour.describe(Object, nil) { }.description.size.should == 0
63
+ end
64
64
  end
65
65
 
66
66
  end
@@ -68,28 +68,33 @@ describe Micronaut::Behaviour do
68
68
  describe '#metadata' do
69
69
 
70
70
  it "should add the third parameter to the metadata" do
71
- Micronaut::Behaviour.describe(Object, nil, 'foo' => 'bar') { }.metadata.should include({ "foo" => 'bar' })
72
- remove_last_describe_from_world
71
+ isolate_behaviour do
72
+ Micronaut::Behaviour.describe(Object, nil, 'foo' => 'bar') { }.metadata.should include({ "foo" => 'bar' })
73
+ end
73
74
  end
74
75
 
75
76
  it "should add the caller to metadata" do
76
- Micronaut::Behaviour.describe(Object) { }.metadata[:behaviour][:caller][4].should =~ /#{__FILE__}:#{__LINE__}/
77
- remove_last_describe_from_world
77
+ isolate_behaviour do
78
+ Micronaut::Behaviour.describe(Object) { }.metadata[:behaviour][:caller][4].should =~ /#{__FILE__}:#{__LINE__}/
79
+ end
78
80
  end
79
81
 
80
82
  it "should add the the file_path to metadata" do
81
- Micronaut::Behaviour.describe(Object) { }.metadata[:behaviour][:file_path].should == __FILE__
82
- remove_last_describe_from_world
83
+ isolate_behaviour do
84
+ Micronaut::Behaviour.describe(Object) { }.metadata[:behaviour][:file_path].should == __FILE__
85
+ end
83
86
  end
84
87
 
85
88
  it "should have a reader for file_path" do
86
- Micronaut::Behaviour.describe(Object) { }.file_path.should == __FILE__
87
- remove_last_describe_from_world
89
+ isolate_behaviour do
90
+ Micronaut::Behaviour.describe(Object) { }.file_path.should == __FILE__
91
+ end
88
92
  end
89
93
 
90
94
  it "should add the line_number to metadata" do
91
- Micronaut::Behaviour.describe(Object) { }.metadata[:behaviour][:line_number].should == __LINE__
92
- remove_last_describe_from_world
95
+ isolate_behaviour do
96
+ Micronaut::Behaviour.describe(Object) { }.metadata[:behaviour][:line_number].should == __LINE__
97
+ end
93
98
  end
94
99
 
95
100
  it "should add file path and line number metadata for arbitrarily nested describes" do
@@ -99,10 +104,8 @@ describe Micronaut::Behaviour do
99
104
  Micronaut::Behaviour.describe(Object) { }.metadata[:behaviour][:line_number].should == __LINE__
100
105
  end
101
106
  end
102
- remove_last_describe_from_world
103
- remove_last_describe_from_world
104
- remove_last_describe_from_world
105
- remove_last_describe_from_world
107
+
108
+ 4.times { remove_last_describe_from_world }
106
109
  end
107
110
 
108
111
  end
@@ -269,13 +272,13 @@ describe Micronaut::Behaviour do
269
272
 
270
273
  describe "how instance variables inherit" do
271
274
 
272
- before do
273
- @before_each_top_level = 'before_each_top_level'
274
- end
275
-
276
275
  before(:all) do
277
276
  @before_all_top_level = 'before_all_top_level'
278
277
  end
278
+
279
+ before(:each) do
280
+ @before_each_top_level = 'before_each_top_level'
281
+ end
279
282
 
280
283
  it "should be able to access a before each ivar at the same level" do
281
284
  @before_each_top_level.should == 'before_each_top_level'
@@ -284,6 +287,11 @@ describe Micronaut::Behaviour do
284
287
  it "should be able to access a before all ivar at the same level" do
285
288
  @before_all_top_level.should == 'before_all_top_level'
286
289
  end
290
+
291
+
292
+ it "should be able to access the before all ivars in the before_all_ivars hash" do
293
+ running_example.behaviour.before_all_ivars.should include('@before_all_top_level' => 'before_all_top_level')
294
+ end
287
295
 
288
296
  describe "but now I am nested" do
289
297
 
@@ -291,12 +299,24 @@ describe Micronaut::Behaviour do
291
299
  @before_each_top_level.should == 'before_each_top_level'
292
300
  end
293
301
 
294
- it "should not be able to access a parent behaviours before all ivar at a nested level (YET)" do
295
- @before_all_top_level.should be_nil
302
+ it "should be able to access a parent behaviours before all ivar at a nested level" do
303
+ @before_all_top_level.should == "before_all_top_level"
304
+ end
305
+
306
+ it "changes to before all ivars from within an example do not persist outside the current describe" do
307
+ @before_all_top_level = "ive been changed"
308
+ end
309
+
310
+ describe "accessing a before_all ivar that was changed in a parent behaviour" do
311
+
312
+ it "should have access to the modified version" do
313
+ @before_all_top_level.should == 'ive been changed'
314
+ end
315
+
296
316
  end
297
317
 
298
318
  end
299
319
 
300
320
  end
301
321
 
302
- end
322
+ end
@@ -156,31 +156,31 @@ module Micronaut
156
156
  @_after_ancestors ||= ancestors(true)
157
157
  end
158
158
 
159
+ def self.before_all_ivars
160
+ @before_all_ivars ||= {}
161
+ end
162
+
159
163
  def self.eval_before_alls(running_behaviour)
164
+ superclass.before_all_ivars.each { |ivar, val| running_behaviour.instance_variable_set(ivar, val) }
160
165
  Micronaut.configuration.find_before_or_after(:before, :all, self).each { |blk| running_behaviour.instance_eval(&blk) }
161
166
 
162
167
  before_alls.each { |blk| running_behaviour.instance_eval(&blk) }
168
+ running_behaviour.instance_variables.each { |ivar| before_all_ivars[ivar] = running_behaviour.instance_variable_get(ivar) }
163
169
  end
164
170
 
165
171
  def self.eval_before_eachs(running_behaviour)
166
172
  Micronaut.configuration.find_before_or_after(:before, :each, self).each { |blk| running_behaviour.instance_eval(&blk) }
167
-
168
- before_ancestors.each do |ancestor|
169
- ancestor.before_eachs.each { |blk| running_behaviour.instance_eval(&blk) }
170
- end
173
+ before_ancestors.each { |ancestor| ancestor.before_eachs.each { |blk| running_behaviour.instance_eval(&blk) } }
171
174
  end
172
175
 
173
176
  def self.eval_after_alls(running_behaviour)
174
177
  after_alls.each { |blk| running_behaviour.instance_eval(&blk) }
175
-
176
178
  Micronaut.configuration.find_before_or_after(:after, :all, self).each { |blk| running_behaviour.instance_eval(&blk) }
179
+ before_all_ivars.keys.each { |ivar| before_all_ivars[ivar] = running_behaviour.instance_variable_get(ivar) }
177
180
  end
178
181
 
179
182
  def self.eval_after_eachs(running_behaviour)
180
- after_ancestors.each do |ancestor|
181
- ancestor.after_eachs.each { |blk| running_behaviour.instance_eval(&blk) }
182
- end
183
-
183
+ after_ancestors.each { |ancestor| ancestor.after_eachs.each { |blk| running_behaviour.instance_eval(&blk) } }
184
184
  Micronaut.configuration.find_before_or_after(:after, :each, self).each { |blk| running_behaviour.instance_eval(&blk) }
185
185
  end
186
186
 
@@ -214,4 +214,4 @@ module Micronaut
214
214
  end
215
215
 
216
216
  end
217
- end
217
+ end
@@ -149,8 +149,8 @@ module Micronaut
149
149
  before_and_afters[:after][each_or_all] << [options, block]
150
150
  end
151
151
 
152
- def find_before_or_after(desired_type, desired_each_or_all, group)
153
- before_and_afters[desired_type][desired_each_or_all].select do |options, block|
152
+ def find_before_or_after(desired_before_or_after, desired_each_or_all, group)
153
+ before_and_afters[desired_before_or_after][desired_each_or_all].select do |options, block|
154
154
  options.all? do |filter_on, filter|
155
155
  Micronaut.world.apply_condition(filter_on, filter, group.metadata)
156
156
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spicycode-micronaut
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chad Humphries
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-02-10 00:00:00 -08:00
12
+ date: 2009-02-13 00:00:00 -08:00
13
13
  default_executable: micronaut
14
14
  dependencies: []
15
15