rspec-given 2.3.0.beta.1 → 2.3.0.beta.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -7,4 +7,5 @@ group :dev do
7
7
  gem 'bluecloth'
8
8
  gem 'ghpreview'
9
9
  gem 'flog'
10
+ gem 'flay'
10
11
  end
data/Gemfile.lock CHANGED
@@ -3,6 +3,9 @@ GEM
3
3
  specs:
4
4
  bluecloth (2.2.0)
5
5
  diff-lcs (1.1.3)
6
+ flay (2.0.1)
7
+ ruby_parser (~> 3.0)
8
+ sexp_processor (~> 4.0)
6
9
  flog (3.2.1)
7
10
  ruby_parser (~> 3.1, > 3.1.0)
8
11
  sexp_processor (~> 4.0)
@@ -32,6 +35,7 @@ PLATFORMS
32
35
 
33
36
  DEPENDENCIES
34
37
  bluecloth
38
+ flay
35
39
  flog
36
40
  ghpreview
37
41
  rake (>= 0.9.2.2)
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # rspec-given
2
2
 
3
- Covering rspec-given, version 3.0.0.beta.1.
3
+ Covering rspec-given, version 2.3.0.beta.2.
4
4
 
5
5
  rspec-given is an RSpec extension to allow Given/When/Then notation in
6
6
  RSpec specifications. It is a natural extension of the experimental
@@ -392,11 +392,11 @@ comparison operators (==, !=, <, <=, >, >=) or matching operators (=~,
392
392
 
393
393
  Keep the following in mind when using Natural Assertions.
394
394
 
395
- * Only a single assertion per _Then_. Only the final expression of the
396
- _Then_ block will be considered when determining pass/fail for the
397
- assertion. If you _want_ to express a complex condition for the
398
- _Then_, you need to use ||, && or some other logical operation to
399
- join the conditions into a single expression (and the failure
395
+ * Only a single expression/assertion per _Then_. The single expression
396
+ of the _Then_ block will be considered when determining pass/fail
397
+ for the assertion. If you _want_ to express a complex condition for
398
+ the _Then_, you need to use ||, && or some other logical operation
399
+ to join the conditions into a single expression (and the failure
400
400
  message will breakdown the values for each part).
401
401
 
402
402
  * Natural assertions must be **idempotent** (that means they don't
@@ -14,7 +14,7 @@ module RSpec
14
14
  # outermost.
15
15
  def _rg_inner_contexts # :nodoc:
16
16
  self.class.ancestors.select { |context|
17
- context.respond_to?(:_rg_givens)
17
+ context.respond_to?(:_rgc_givens)
18
18
  }
19
19
  end
20
20
 
@@ -24,9 +24,11 @@ module RSpec
24
24
  _rg_inner_contexts.reverse
25
25
  end
26
26
 
27
- def _rg_info(keyword)
27
+ # Return the context information for keyword from the innermost
28
+ # defining context.
29
+ def _rg_info(keyword) # :nodoc:
28
30
  _rg_inner_contexts.each do |context|
29
- h = context._rg_context_info
31
+ h = context._rgc_context_info
30
32
  if h.has_key?(keyword)
31
33
  return h[keyword]
32
34
  end
@@ -34,10 +36,28 @@ module RSpec
34
36
  nil
35
37
  end
36
38
 
37
- def _rg_natural_assertions?(nassert)
39
+ # Should a natural assertion failure message be generated?
40
+ #
41
+ # A natural assertion failure message is generated if the
42
+ # assertion has non-empty content that doesn't use rspec
43
+ # assertions. The configuration options for natural assertions
44
+ # are checked and applied accordingly.
45
+ #
46
+ def _rg_need_na_message?(nassert) # :nodoc:
47
+ return false unless nassert.has_content?
48
+ use_na = _rg_na_configured?
49
+ return true if use_na == :always
50
+ return false if nassert.using_rspec_assertion?
51
+ use_na
52
+ end
53
+
54
+ # Return the configuration value for natural assertions.
55
+ #
56
+ # If natural assertions are not configured in the contexts, use
57
+ # the global configuration value.
58
+ def _rg_na_configured? # :nodoc:
38
59
  info_value = _rg_info(:natural_assertions_enabled)
39
- use_na = info_value.nil? ? RSpec::Given.natural_assertions_enabled? : info_value
40
- (! nassert.using_rspec_assertion? && use_na) || (use_na == :always)
60
+ info_value.nil? ? RSpec::Given.natural_assertions_enabled? : info_value
41
61
  end
42
62
 
43
63
  # Establish all the Given preconditions the current and
@@ -47,7 +67,7 @@ module RSpec
47
67
  return if defined?(@_rg_ran) && @_rg_ran
48
68
  @_rg_ran = true
49
69
  _rg_contexts.each do |context|
50
- context._rg_givens.each do |block|
70
+ context._rgc_givens.each do |block|
51
71
  instance_eval(&block)
52
72
  end
53
73
  end
@@ -57,18 +77,18 @@ module RSpec
57
77
  # describe/context blocks, starting with the outermost context.
58
78
  def _rg_check_invariants # :nodoc:
59
79
  _rg_contexts.each do |context|
60
- context._rg_invariants.each do |block|
80
+ context._rgc_invariants.each do |block|
61
81
  _rg_evaluate(block)
62
82
  end
63
83
  end
64
84
  end
65
85
 
66
86
  def _rg_check_ands # :nodoc:
67
- return if self.class._rg_context_info[:and_ran]
68
- self.class._rg_and_blocks.each do |block|
87
+ return if self.class._rgc_context_info[:and_ran]
88
+ self.class._rgc_and_blocks.each do |block|
69
89
  _rg_evaluate(block)
70
90
  end
71
- self.class._rg_context_info[:and_ran] = true
91
+ self.class._rgc_context_info[:and_ran] = true
72
92
  end
73
93
 
74
94
  # Implement the run-time semantics of the Then clause.
@@ -79,12 +99,12 @@ module RSpec
79
99
  _rg_check_ands
80
100
  end
81
101
 
82
- def _rg_evaluate(block)
83
- unless instance_eval(&block)
84
- nassert = NaturalAssertion.new(block, binding, self.class._rg_lines)
85
- if ! nassert.using_rspec_assertion? && nassert.has_content?
86
- ::RSpec::Expectations.fail_with nassert.message
87
- end
102
+ # Evaluate a Then, And, or Invariant assertion.
103
+ def _rg_evaluate(block) # :nodoc:
104
+ passed = instance_eval(&block)
105
+ if ! passed && _rg_na_configured?
106
+ nassert = NaturalAssertion.new(block, binding, self.class._rgc_lines)
107
+ ::RSpec::Expectations.fail_with nassert.message if _rg_need_na_message?(nassert)
88
108
  end
89
109
  end
90
110
  end
@@ -93,31 +113,31 @@ module RSpec
93
113
 
94
114
  # List of all givens directly in the current describe/context
95
115
  # block.
96
- def _rg_givens # :nodoc:
97
- @_rg_givens ||= []
116
+ def _rgc_givens # :nodoc:
117
+ @_rgc_givens ||= []
98
118
  end
99
119
 
100
120
  # List of all invariants directly in the current
101
121
  # describe/context block.
102
- def _rg_invariants # :nodoc:
103
- @_rg_invariants ||= []
122
+ def _rgc_invariants # :nodoc:
123
+ @_rgc_invariants ||= []
104
124
  end
105
125
 
106
- def _rg_and_blocks
107
- @_rg_and_blocks ||= []
126
+ def _rgc_and_blocks
127
+ @_rgc_and_blocks ||= []
108
128
  end
109
129
 
110
- def _rg_context_info
111
- @_rg_context_info ||= {}
130
+ def _rgc_context_info
131
+ @_rgc_context_info ||= {}
112
132
  end
113
133
 
114
- def _rg_lines
115
- @_rg_lines ||= LineExtractor.new
134
+ def _rgc_lines
135
+ @_rgc_lines ||= LineExtractor.new
116
136
  end
117
137
 
118
138
  # Trigger the evaluation of a Given! block by referencing its
119
139
  # name.
120
- def _rg_trigger_given(name) # :nodoc:
140
+ def _rgc_trigger_given(name) # :nodoc:
121
141
  Proc.new { send(name) }
122
142
  end
123
143
 
@@ -157,7 +177,7 @@ module RSpec
157
177
  if args.first.is_a?(Symbol)
158
178
  let(args.first, &block)
159
179
  else
160
- _rg_givens << block
180
+ _rgc_givens << block
161
181
  end
162
182
  end
163
183
 
@@ -170,7 +190,7 @@ module RSpec
170
190
  #
171
191
  def Given!(name, &block)
172
192
  let!(name, &block)
173
- _rg_givens << _rg_trigger_given(name)
193
+ _rgc_givens << _rgc_trigger_given(name)
174
194
  end
175
195
 
176
196
  # Declare the code that is under test.
@@ -209,29 +229,29 @@ module RSpec
209
229
  def Then(&block)
210
230
  env = block.binding
211
231
  file, line = eval "[__FILE__, __LINE__]", env
212
- description = _rg_lines.line(file, line) unless RSpec::Given.source_caching_disabled
232
+ description = _rgc_lines.line(file, line) unless RSpec::Given.source_caching_disabled
213
233
  if description
214
234
  cmd = "it(description)"
215
235
  else
216
236
  cmd = "specify"
217
237
  end
218
238
  eval %{#{cmd} do _rg_then(&block) end}, binding, file, line
219
- _rg_context_info[:then_defined] = true
239
+ _rgc_context_info[:then_defined] = true
220
240
  end
221
241
 
222
242
  # Establish an invariant that must be true for all Then blocks
223
243
  # in the current (and nested) scopes.
224
244
  def Invariant(&block)
225
- _rg_invariants << block
245
+ _rgc_invariants << block
226
246
  end
227
247
 
228
248
  def And(&block)
229
- fail "And defined without a Then" unless _rg_context_info[:then_defined]
230
- _rg_and_blocks << block
249
+ fail "And defined without a Then" unless _rgc_context_info[:then_defined]
250
+ _rgc_and_blocks << block
231
251
  end
232
252
 
233
253
  def use_natural_assertions(enabled=true)
234
- _rg_context_info[:natural_assertions_enabled] = enabled
254
+ _rgc_context_info[:natural_assertions_enabled] = enabled
235
255
  end
236
256
  end
237
257
  end
@@ -5,7 +5,7 @@ module RSpec
5
5
  VERSION_MINOR = 3,
6
6
  VERSION_BUILD = 0,
7
7
  'beta',
8
- VERSION_BETA = 1,
8
+ VERSION_BETA = 2,
9
9
  ]
10
10
  VERSION = VERSION_NUMBERS.join(".")
11
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-given
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0.beta.1
4
+ version: 2.3.0.beta.2
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-29 00:00:00.000000000 Z
12
+ date: 2013-01-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec