given_core 3.7.1 → 3.8.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 82c044841ee9503defff72cc88d40b500327dec0
4
- data.tar.gz: 7d91a83e5740375f068fa55b917cf60549482026
3
+ metadata.gz: 4c5460fda0b68ed478e3e65df1fa7c37c6d58cbc
4
+ data.tar.gz: fab707bbc059a7c79280baea8627933d36755856
5
5
  SHA512:
6
- metadata.gz: e244317ee8961885303bd63ab43d86c04eeb92b3d0bf4f60f81c1721f87481fc522a924e07b7d4c6d3534012168dc849974c4bc5833f2fd86bddd2a04885ed5f
7
- data.tar.gz: 337ab49896640b4099737d50126cbda6f096d5049034cf2083dd7f662bb1915ab3a33c9b16031911885b94ce17c3a6786a00ddba823fdde5890e556c8cd70b9d
6
+ metadata.gz: b2ca385bc6f7a8583193cf7a0363222faefa96500441ebd217673d43f3aa110f5133fb2f8845a77f7f92ea8b7fa91f1919ad87e8e07842f92a41ad5c06cce788
7
+ data.tar.gz: fddd6ae9b41e390e03a4db1d2cf3baf81afb19528ddbdac283e81849e2b9f0d03df1ad239668d0dd685a6a9da070dde7c8177c29d4240b128de12533986cf201
@@ -2,21 +2,21 @@ GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
4
  diff-lcs (1.2.5)
5
- minitest (5.7.0)
6
- rake (10.4.2)
7
- rspec (3.3.0)
8
- rspec-core (~> 3.3.0)
9
- rspec-expectations (~> 3.3.0)
10
- rspec-mocks (~> 3.3.0)
11
- rspec-core (3.3.1)
12
- rspec-support (~> 3.3.0)
13
- rspec-expectations (3.3.0)
5
+ minitest (5.8.3)
6
+ rake (10.5.0)
7
+ rspec (3.4.0)
8
+ rspec-core (~> 3.4.0)
9
+ rspec-expectations (~> 3.4.0)
10
+ rspec-mocks (~> 3.4.0)
11
+ rspec-core (3.4.1)
12
+ rspec-support (~> 3.4.0)
13
+ rspec-expectations (3.4.0)
14
14
  diff-lcs (>= 1.2.0, < 2.0)
15
- rspec-support (~> 3.3.0)
16
- rspec-mocks (3.3.1)
15
+ rspec-support (~> 3.4.0)
16
+ rspec-mocks (3.4.1)
17
17
  diff-lcs (>= 1.2.0, < 2.0)
18
- rspec-support (~> 3.3.0)
19
- rspec-support (3.3.0)
18
+ rspec-support (~> 3.4.0)
19
+ rspec-support (3.4.1)
20
20
  sorcerer (1.0.2)
21
21
 
22
22
  PLATFORMS
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  | :----: |
5
5
  | [![Master Build Status](https://secure.travis-ci.org/rspec-given/rspec-given.png?branch=master)](https://travis-ci.org/rspec-given/rspec-given) |
6
6
 
7
- Covering rspec-given, minitest-given, and given-core, version 3.7.0.
7
+ Covering rspec-given, minitest-given, and given-core, version 3.8.0.
8
8
 
9
9
  rspec-given and minitest-given are extensions to your favorite testing
10
10
  framework to allow Given/When/Then notation when writing specs.
@@ -347,6 +347,17 @@ should use an empty _Then_ clause, like this:
347
347
  Then { }
348
348
  ```
349
349
 
350
+ A _Then_ clause accepts arguments for user-defined RSpec metadata:
351
+
352
+ ```ruby
353
+ Then(:zippy, :foo => 17) { ... }
354
+ ```
355
+
356
+ Metadata on _Then_ clauses is an RSpec-only feature. You can read more about
357
+ metadata [in RSpec's
358
+ documentation](https://www.relishapp.com/rspec/rspec-core/docs/metadata/user-defined-metadata).
359
+
360
+
350
361
  #### Then examples:
351
362
 
352
363
  ```ruby
@@ -760,12 +771,13 @@ _expect_.
760
771
 
761
772
  Given uses the Ripper library to parse the source lines and failing
762
773
  conditions to find all the sub-expression values upon a failure.
763
- Currently Ripper is not supported on Rubinius and versions of JRuby
764
- prior to JRuby-1.7.5.
765
774
 
766
- If you want to use a version of Ruby that does not support Ripper,
767
- then natural assertions will disabled. In addition, you should also
768
- disable source caching in the configuration (see the configuration
775
+ If Ripper is not available, like on Rubinius and versions of JRuby prior to
776
+ JRuby-1.7.5, detailed explanations of failures for natural assertions won't be
777
+ available. Natural assertions will still work, though.
778
+
779
+ If you want to use a version of Ruby that does not support Ripper, then you
780
+ should disable source caching in the configuration (see the configuration
769
781
  section below).
770
782
 
771
783
  ### Non-Spec Assertions
@@ -870,6 +882,14 @@ License. See the MIT-LICENSE file in the source distribution.
870
882
 
871
883
  # History
872
884
 
885
+ * Version 3.8.0
886
+
887
+ * RSpec metadata can now be added to _Then_ clauses (see [#11](https://github.com/rspec-given/rspec-given/pull/11))
888
+ * Natural assertions now run on Rubinius and older versions of JRuby (see [#15](https://github.com/rspec-given/rspec-given/issues/15))
889
+ * WARNING: On these platforms, detailed failure explanations aren't available and source code snippets of Then clauses will only show the first line.
890
+ * WARNING: Assertions of void statements (e.g. `Then { }`) will fail only under runtimes lacking Ripper support
891
+ * `Given.ok_to_use_natural_assertions` was removed; the method was never properly supported as public, but it was publicly reachable
892
+
873
893
  * Version 3.7.1
874
894
 
875
895
  * Mixin Minitest extensions for both ActiveSupport::TestCase (when present) as well as for MiniTest::Spec (see [#8](https://github.com/rspec-given/rspec-given/pulls/8))
data/Rakefile CHANGED
@@ -67,10 +67,6 @@ EXAMPLES = FileList['examples/**/*_spec.rb', 'examples/use_assertions.rb'].
67
67
 
68
68
  MT_EXAMPLES = FileList['examples/minitest-rails/**/*_spec.rb', 'examples/minitest/**/*_spec.rb']
69
69
 
70
- unless Given::NATURAL_ASSERTIONS_SUPPORTED
71
- EXAMPLES.exclude("examples/stack/*.rb")
72
- end
73
-
74
70
  FAILING_EXAMPLES = FileList['examples/failing/**/*_spec.rb']
75
71
 
76
72
  desc "Run the RSpec specs and examples"
@@ -247,11 +247,13 @@ module Given
247
247
  # :call-seq:
248
248
  # Then { ... assertion ... }
249
249
  #
250
- def Then(opts={}, &block)
251
- on_eval = opts.fetch(:on_eval, "_gvn_then")
250
+ def Then(*metadata, &block)
251
+ opts = metadata.last
252
+ opts = {} unless opts.is_a? Hash
253
+ on_eval = opts.delete(:on_eval) || "_gvn_then"
252
254
  file, line = Given.location_of(block)
253
255
  description = _Gvn_lines.line(file, line) unless Given.source_caching_disabled
254
- cmd = description ? "it(description)" : "specify"
256
+ cmd = description ? "it(description, *metadata)" : "specify(*metadata)"
255
257
  eval %{#{cmd} do #{on_eval}(&block) end}, binding, file, line
256
258
  _Gvn_context_info[:then_defined] = true
257
259
  end
@@ -270,7 +272,6 @@ module Given
270
272
 
271
273
  # Configure the use of natural assertions in this context.
272
274
  def use_natural_assertions(enabled=true)
273
- Given.ok_to_use_natural_assertions(enabled)
274
275
  _Gvn_context_info[:natural_assertions_enabled] = enabled
275
276
  end
276
277
  end
@@ -1,5 +1,4 @@
1
- require 'ripper'
2
- require 'sorcerer'
1
+ require 'given/natural_assertion'
3
2
  require 'given/file_cache'
4
3
 
5
4
  module Given
@@ -20,6 +19,7 @@ module Given
20
19
  private
21
20
 
22
21
  def extract_lines_from(lines, line_index)
22
+ return lines[line_index] unless NATURAL_ASSERTIONS_SUPPORTED
23
23
  result = lines[line_index]
24
24
  while result && incomplete?(result)
25
25
  line_index += 1
@@ -29,13 +29,13 @@ module Given
29
29
  end
30
30
 
31
31
  def incomplete?(string)
32
- ! complete_sexp?(parse(string))
32
+ !complete_sexp?(parse(string))
33
33
  end
34
34
 
35
35
  def complete_sexp?(sexp)
36
36
  Sorcerer.source(sexp)
37
37
  true
38
- rescue Sorcerer::Resource::NotSexpError => ex
38
+ rescue Sorcerer::Resource::NotSexpError
39
39
  false
40
40
  end
41
41
 
@@ -12,4 +12,4 @@ Minitest::Spec.send(:extend, Given::MiniTest::ClassExtensions)
12
12
  Minitest::Spec.send(:include, Given::FailureMethod)
13
13
  Minitest::Spec.send(:include, Given::InstanceExtensions)
14
14
  Minitest::Spec.send(:include, Given::MiniTest::InstanceExtensions)
15
- Given.use_natural_assertions if Given::NATURAL_ASSERTIONS_SUPPORTED
15
+ Given.use_natural_assertions
@@ -1,11 +1,5 @@
1
1
 
2
2
  module Given
3
- # Does this platform support natural assertions?
4
- RBX_IN_USE = (defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx')
5
- JRUBY_IN_USE = defined?(JRUBY_VERSION)
6
- OLD_JRUBY_IN_USE = JRUBY_IN_USE && (JRUBY_VERSION < '1.7.5')
7
-
8
- NATURAL_ASSERTIONS_SUPPORTED = ! (OLD_JRUBY_IN_USE || RBX_IN_USE)
9
3
 
10
4
  def self.framework
11
5
  @_gvn_framework
@@ -28,7 +22,6 @@ module Given
28
22
  # There is a similar function in Extensions that works at a
29
23
  # describe or context scope.
30
24
  def self.use_natural_assertions(enabled=true)
31
- ok_to_use_natural_assertions(enabled)
32
25
  @natural_assertions_enabled = enabled
33
26
  end
34
27
 
@@ -37,16 +30,6 @@ module Given
37
30
  @natural_assertions_enabled
38
31
  end
39
32
 
40
- # Is is OK to use natural assertions on this platform.
41
- #
42
- # An error is raised if the the platform does not support natural
43
- # assertions and the flag is attempting to enable them.
44
- def self.ok_to_use_natural_assertions(enabled)
45
- if enabled && ! NATURAL_ASSERTIONS_SUPPORTED
46
- fail ArgumentError, "Natural Assertions are disabled for JRuby"
47
- end
48
- end
49
-
50
33
  # Return file and line number where the block is defined.
51
34
  def self.location_of(block)
52
35
  eval "[__FILE__, __LINE__]", block.binding
@@ -2,12 +2,22 @@ require 'given/module_methods'
2
2
  require 'given/evaluator'
3
3
  require 'given/binary_operation'
4
4
 
5
- if Given::NATURAL_ASSERTIONS_SUPPORTED
6
- require 'ripper'
7
- require 'sorcerer'
8
- end
9
-
10
5
  module Given
6
+ NATURAL_ASSERTIONS_SUPPORTED = begin
7
+ require 'ripper'
8
+ require 'sorcerer'
9
+ true
10
+ rescue LoadError
11
+ # Expected on Rubinius & old JRuby
12
+ warn <<-WARNING.gsub(/^\s+/,'')
13
+ rspec-given: WARNING: Ripper is not available, so multi-line Then
14
+ statements will not be printed correctly and detailed failure
15
+ explanations of natural assertions WILL NOT be printed. Additionally,
16
+ assertions containing void statements (e.g. `Then { }`) will fail
17
+ in this runtime.
18
+ WARNING
19
+ false
20
+ end
11
21
 
12
22
  InvalidThenError = Class.new(StandardError)
13
23
 
@@ -23,15 +33,20 @@ module Given
23
33
  VOID_SEXP = [:void_stmt]
24
34
 
25
35
  def has_content?
36
+ return true unless NATURAL_ASSERTIONS_SUPPORTED
26
37
  assertion_sexp != VOID_SEXP
27
38
  end
28
39
 
29
40
  def message
30
41
  @output = "#{@clause_type} expression failed at #{source_line}\n"
31
- @output << "Failing expression: #{source.strip}\n" if @clause_type != "Then"
32
- explain_failure
33
- display_pairs(expression_value_pairs)
34
- @output << "\n"
42
+ if NATURAL_ASSERTIONS_SUPPORTED
43
+ @output << "Failing expression: #{source.strip}\n" if @clause_type != "Then"
44
+ explain_failure
45
+ display_pairs(expression_value_pairs)
46
+ @output << "\n"
47
+ else
48
+ @output << "Failing expression (possibly truncated): #{source.strip}\n"
49
+ end
35
50
  @output
36
51
  end
37
52
 
@@ -174,5 +189,4 @@ module Given
174
189
  "#{@code_file}:#{@code_line}"
175
190
  end
176
191
  end
177
-
178
192
  end
@@ -6,10 +6,8 @@ module RSpec
6
6
  end
7
7
  end
8
8
 
9
- if Given::NATURAL_ASSERTIONS_SUPPORTED
10
- require 'given/rspec/monkey'
11
- raise "Unsupported version of RSpec (#{RSpec::Version::STRING}), unable to detect assertions" unless RSpec::Given::MONKEY
12
- end
9
+ require 'given/rspec/monkey'
10
+ raise "Unsupported version of RSpec (#{RSpec::Version::STRING}), unable to detect assertions" unless RSpec::Given::MONKEY
13
11
 
14
12
  require 'given/rspec/have_failed'
15
13
  require 'given/rspec/before_extensions'
@@ -15,6 +15,6 @@ RSpec.configure do |c|
15
15
  c.backtrace_clean_patterns << /lib\/rspec\/given/
16
16
  end
17
17
 
18
- Given.use_natural_assertions if Given::NATURAL_ASSERTIONS_SUPPORTED
18
+ Given.use_natural_assertions
19
19
  Given.source_caching_disabled = false
20
20
  end
@@ -2,8 +2,8 @@
2
2
  module Given
3
3
  VERSION_NUMBERS = [
4
4
  VERSION_MAJOR = 3,
5
- VERSION_MINOR = 7,
6
- VERSION_BUILD = 1,
5
+ VERSION_MINOR = 8,
6
+ VERSION_BUILD = 0,
7
7
  ]
8
8
  VERSION = VERSION_NUMBERS.join(".")
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: given_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.1
4
+ version: 3.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Weirich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-08 00:00:00.000000000 Z
11
+ date: 2016-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sorcerer
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  version: '0'
104
104
  requirements: []
105
105
  rubyforge_project: given
106
- rubygems_version: 2.2.3
106
+ rubygems_version: 2.4.5
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: Core engine for RSpec::Given and Minitest::Given.