rspec-core 2.9.0.rc2 → 2.9.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.
@@ -1,5 +1,5 @@
1
- ### 2.9.0.rc2 / 2012-02-12
2
- [full changelog](http://github.com/rspec/rspec-core/compare/v2.8.0...v2.9.0.rc2)
1
+ ### 2.9.0 / 2012-03-17
2
+ [full changelog](http://github.com/rspec/rspec-core/compare/v2.8.0...v2.9.0)
3
3
 
4
4
  Enhancements
5
5
 
@@ -19,6 +19,7 @@ Bug fixes
19
19
  * In "autorun", don't run the specs in the at_exit hook if there was an
20
20
  exception (most likely due to a SyntaxError). (sunaku)
21
21
  * Don't extend groups with modules already used to extend ancestor groups.
22
+ * `its` correctly memoizes nil or false values (Yamada Masaki)
22
23
 
23
24
  ### 2.8.0 / 2012-01-04
24
25
 
@@ -67,6 +67,16 @@ module RSpec
67
67
  end
68
68
  rescue LoadError
69
69
  end
70
+
71
+ def _attribute_chain(attribute)
72
+ attribute.to_s.split('.')
73
+ end
74
+
75
+ def _nested_attribute(subject, attribute)
76
+ _attribute_chain(attribute).inject(subject) do |subject, attr|
77
+ subject.send(attr)
78
+ end
79
+ end
70
80
  end
71
81
 
72
82
  module ExampleGroupMethods
@@ -122,13 +132,11 @@ module RSpec
122
132
  example do
123
133
  self.class.class_eval do
124
134
  define_method(:subject) do
125
- @_subject ||= if attribute.is_a?(Array)
126
- super()[*attribute]
127
- else
128
- attribute.to_s.split('.').inject(super()) do |target, method|
129
- target.send(method)
130
- end
131
- end
135
+ if defined?(@_subject)
136
+ @_subject
137
+ else
138
+ @_subject = Array === attribute ? super()[*attribute] : _nested_attribute(super(), attribute)
139
+ end
132
140
  end
133
141
  end
134
142
  instance_eval(&block)
@@ -1,7 +1,7 @@
1
1
  module RSpec
2
2
  module Core
3
3
  module Version
4
- STRING = '2.9.0.rc2'
4
+ STRING = '2.9.0'
5
5
  end
6
6
  end
7
7
  end
@@ -194,6 +194,35 @@ module RSpec::Core
194
194
  end
195
195
  end
196
196
 
197
+ context "with nil subject" do
198
+ subject do
199
+ Class.new do
200
+ def initialize
201
+ @counter = -1
202
+ end
203
+ def nil_if_first_time
204
+ @counter += 1
205
+ @counter == 0 ? nil : true
206
+ end
207
+ end.new
208
+ end
209
+ its(:nil_if_first_time) { should be(nil) }
210
+ end
211
+
212
+ context "with false subject" do
213
+ subject do
214
+ Class.new do
215
+ def initialize
216
+ @counter = -1
217
+ end
218
+ def false_if_first_time
219
+ @counter += 1
220
+ @counter > 0
221
+ end
222
+ end.new
223
+ end
224
+ its(:false_if_first_time) { should be(false) }
225
+ end
197
226
  end
198
227
  end
199
228
  end
metadata CHANGED
@@ -1,15 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-core
3
3
  version: !ruby/object:Gem::Version
4
- hash: -2242269716
5
- prerelease: 6
4
+ hash: 43
5
+ prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 9
9
9
  - 0
10
- - rc
11
- - 2
12
- version: 2.9.0.rc2
10
+ version: 2.9.0
13
11
  platform: ruby
14
12
  authors:
15
13
  - Steven Baker
@@ -19,7 +17,7 @@ autorequire:
19
17
  bindir: exe
20
18
  cert_chain: []
21
19
 
22
- date: 2012-03-12 00:00:00 Z
20
+ date: 2012-03-17 00:00:00 Z
23
21
  dependencies:
24
22
  - !ruby/object:Gem::Dependency
25
23
  name: cucumber
@@ -363,21 +361,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
363
361
  required_rubygems_version: !ruby/object:Gem::Requirement
364
362
  none: false
365
363
  requirements:
366
- - - ">"
364
+ - - ">="
367
365
  - !ruby/object:Gem::Version
368
- hash: 25
366
+ hash: 3
369
367
  segments:
370
- - 1
371
- - 3
372
- - 1
373
- version: 1.3.1
368
+ - 0
369
+ version: "0"
374
370
  requirements: []
375
371
 
376
372
  rubyforge_project: rspec
377
373
  rubygems_version: 1.8.15
378
374
  signing_key:
379
375
  specification_version: 3
380
- summary: rspec-core-2.9.0.rc2
376
+ summary: rspec-core-2.9.0
381
377
  test_files:
382
378
  - features/Autotest.md
383
379
  - features/README.md