rspec-given 3.6.0 → 3.8.2

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
- SHA1:
3
- metadata.gz: d872a7809f8688b6230b2a8ac6b7cca50622a978
4
- data.tar.gz: a88c87f059ad11d074cbe40b16f1ae510ff4bbf9
2
+ SHA256:
3
+ metadata.gz: c14e0d966163124122b49ab58ec062223f6c53baadd5cfeb0252ac8ff746b606
4
+ data.tar.gz: c154feb3b2348b611a73955c077a3fcecc710885d3d3eaeb3728942456e1ea27
5
5
  SHA512:
6
- metadata.gz: 88d676b267090b08f04808a4dff5c0568cee871bac4f90b7f4df13c24262a217faccd6384d00abf713b241f0c440bf554229152d28ae45a11233b702e902673c
7
- data.tar.gz: 029f199720799adea25e22848b5ae7dceea5774cf428ade72ef85d2b6bbf2a54466ee52e57d4e5891258f15e4a229d9ec2f12dc9e78b1036358825c7fcaa7f16
6
+ metadata.gz: d346f728c2e31626fc5bfb9e00fc6a997cf453545829c264bd9975cbd7dedb2736b6a3a4460495f195d019ce879b23207f6dc24dec46ae9f73849d9bf63ec54e
7
+ data.tar.gz: bd22999d6ffd7fcead5890060d8e8423c32b3f71177461f52a57cb11415401558146b383cc1aa7adc89da4adc30b57c2f03c5203556a507c289f681f29ca9ba4
@@ -1,25 +1,25 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- diff-lcs (1.2.5)
5
- minitest (5.5.0)
6
- rake (10.4.2)
7
- rspec (3.1.0)
8
- rspec-core (~> 3.1.0)
9
- rspec-expectations (~> 3.1.0)
10
- rspec-mocks (~> 3.1.0)
11
- rspec-core (3.1.7)
12
- rspec-support (~> 3.1.0)
13
- rspec-expectations (3.1.2)
4
+ diff-lcs (1.4.4)
5
+ minitest (5.14.3)
6
+ rake (13.0.3)
7
+ rspec (3.10.0)
8
+ rspec-core (~> 3.10.0)
9
+ rspec-expectations (~> 3.10.0)
10
+ rspec-mocks (~> 3.10.0)
11
+ rspec-core (3.10.1)
12
+ rspec-support (~> 3.10.0)
13
+ rspec-expectations (3.10.1)
14
14
  diff-lcs (>= 1.2.0, < 2.0)
15
- rspec-support (~> 3.1.0)
16
- rspec-mocks (3.1.3)
17
- rspec-support (~> 3.1.0)
18
- rspec-support (3.1.2)
19
- sorcerer (1.0.2)
15
+ rspec-support (~> 3.10.0)
16
+ rspec-mocks (3.10.2)
17
+ diff-lcs (>= 1.2.0, < 2.0)
18
+ rspec-support (~> 3.10.0)
19
+ rspec-support (3.10.2)
20
+ sorcerer (2.0.1)
20
21
 
21
22
  PLATFORMS
22
- java
23
23
  ruby
24
24
 
25
25
  DEPENDENCIES
@@ -27,3 +27,6 @@ DEPENDENCIES
27
27
  rake
28
28
  rspec (>= 2.14.0)
29
29
  sorcerer (>= 0.3.7)
30
+
31
+ BUNDLED WITH
32
+ 2.1.4
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.6.0.
7
+ Covering rspec-given, minitest-given, and given-core, version 3.8.2.
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.
@@ -53,7 +53,7 @@ things to watch out for:
53
53
 
54
54
  * Only one before block is allowed in any given Minitest::Spec
55
55
  describe block. This doesn't effect the number of Givens you are
56
- allowed to use, but it may surprise if you are use to RSpec.
56
+ allowed to use, but it may surprise you if you are used to RSpec.
57
57
 
58
58
  ### Auto Selecting
59
59
 
@@ -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,26 @@ License. See the MIT-LICENSE file in the source distribution.
870
882
 
871
883
  # History
872
884
 
885
+ * Version 3.8.1
886
+
887
+ * Fix deprecation warnings fro Ruby 2.6 & up
888
+
889
+ * Version 3.8.0
890
+
891
+ * RSpec metadata can now be added to _Then_ clauses (see [#11](https://github.com/rspec-given/rspec-given/pull/11))
892
+ * Natural assertions now run on Rubinius and older versions of JRuby (see [#15](https://github.com/rspec-given/rspec-given/issues/15))
893
+ * WARNING: On these platforms, detailed failure explanations aren't available and source code snippets of Then clauses will only show the first line.
894
+ * WARNING: Assertions of void statements (e.g. `Then { }`) will fail only under runtimes lacking Ripper support
895
+ * `Given.ok_to_use_natural_assertions` was removed; the method was never properly supported as public, but it was publicly reachable
896
+
897
+ * Version 3.7.1
898
+
899
+ * 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))
900
+
901
+ * Version 3.7.0
902
+
903
+ * Add support for Rails tests when using minitest-given (See [#6](https://github.com/rspec-given/rspec-given/pull/6))
904
+
873
905
  * Version 3.6.0
874
906
 
875
907
  * Various fixes for RSpec 3.0 (See [#1](https://github.com/rspec-given/rspec-given/pull/1))
data/Rakefile CHANGED
@@ -62,13 +62,10 @@ end
62
62
  EXAMPLES = FileList['examples/**/*_spec.rb', 'examples/use_assertions.rb'].
63
63
  exclude('examples/failing/*.rb').
64
64
  exclude('examples/minitest/*.rb').
65
+ exclude('examples/minitest-rails/*.rb').
65
66
  exclude('examples/integration/failing/*.rb')
66
67
 
67
- MT_EXAMPLES = FileList['examples/minitest/**/*_spec.rb']
68
-
69
- unless Given::NATURAL_ASSERTIONS_SUPPORTED
70
- EXAMPLES.exclude("examples/stack/*.rb")
71
- end
68
+ MT_EXAMPLES = FileList['examples/minitest-rails/**/*_spec.rb', 'examples/minitest/**/*_spec.rb']
72
69
 
73
70
  FAILING_EXAMPLES = FileList['examples/failing/**/*_spec.rb']
74
71
 
@@ -0,0 +1,10 @@
1
+ module ActiveSupport
2
+ class TestCase < Minitest::Test
3
+ # Add spec DSL
4
+ extend ::Minitest::Spec::DSL
5
+
6
+ register_spec_type(self) do |desc, *addl|
7
+ addl.include? :model
8
+ end
9
+ end
10
+ end
@@ -5,6 +5,7 @@ if defined?(RSpec)
5
5
  require 'spec_helper'
6
6
  else
7
7
  require 'minitest/autorun'
8
+ require 'active_support_helper'
8
9
  require 'minitest/given'
9
10
  require 'minitest_helper'
10
11
  end
@@ -2,30 +2,44 @@ require 'example_helper'
2
2
  require 'open3'
3
3
 
4
4
  describe "Failing Messages" do
5
- use_natural_assertions_if_supported
6
-
7
5
  IOS = Struct.new(:out, :err)
8
6
 
9
7
  def run_spec(filename)
10
- inn, out, err, wait = Open3.popen3("rspec", "examples/integration/failing/#{filename}")
8
+ _inn, out, err, _wait = Open3.popen3(
9
+ "rspec", "examples/integration/failing/#{filename}",
10
+ # Ensure our `project_source_dirs` config is set when we shell out to RSpec.
11
+ "-rexample_helper"
12
+ )
11
13
  IOS.new(out.read, err.read)
12
14
  end
13
15
 
14
16
  When(:ios) { run_spec(failing_test) }
15
17
 
16
18
  context "when referencing constants from nested modules" do
19
+ skip_natural_assertions_if_not_supported
17
20
  Given(:failing_test) { "module_nesting_spec.rb" }
18
21
  Then { ios.err == "" }
19
22
  And { ios.out !~ /uninitialized constant RSpec::Given::InstanceExtensions::X/ }
20
23
  end
21
24
 
22
25
  context "when referencing undefined methods" do
26
+ skip_natural_assertions_if_not_supported
23
27
  Given(:failing_test) { "undefined_method_spec.rb" }
24
28
  Then { ios.err == "" }
25
- And { ios.out =~ /undefined local variable or method `xyz'/ }
29
+ And { complains_xyz_is_not_in_scope?(ios.out) }
30
+
31
+ def complains_xyz_is_not_in_scope?(out)
32
+ [
33
+ # RSpec <3.2's message:
34
+ "undefined local variable or method `xyz'",
35
+ # RSpec >3.2's message:
36
+ "`xyz` is not available from within an example"
37
+ ].any? { |msg| out.include?(msg) }
38
+ end
26
39
  end
27
40
 
28
41
  context "when breaking down expressions" do
42
+ skip_natural_assertions_if_not_supported
29
43
  Given(:failing_test) { "eval_subexpression_spec.rb" }
30
44
  Then { ios.err == "" }
31
45
  And { ios.out =~ /false *<- array\[index\]\.upcase == value$/ }
@@ -42,8 +56,9 @@ describe "Failing Messages" do
42
56
  end
43
57
 
44
58
  context "with an oddly formatted then" do
59
+ skip_natural_assertions_if_not_supported
45
60
  Given(:failing_test) { "oddly_formatted_then.rb" }
46
- Then { ios.out =~ /Failure\/Error: Then \{ result == \['a',$/ }
61
+ Then { ios.out =~ /Failure\/Error:\s*Then \{ result == \['a',$/ }
47
62
  And { ios.out =~ /expected: "anything"/ }
48
63
  And { ios.out =~ /to equal: \["a", "a"\]/ }
49
64
  end
@@ -55,8 +55,8 @@ describe "Lazy Givens" do
55
55
  end
56
56
 
57
57
  context "when not called" do
58
- Given(:value) { :ok }
59
- Then { given_assert_equal :ok, value }
58
+ Given(:some_value) { :ok }
59
+ Then { given_assert_equal :ok, some_value }
60
60
  end
61
61
  end
62
62
 
@@ -11,11 +11,10 @@ end
11
11
 
12
12
  describe "Then" do
13
13
  context "empty thens with natural assertions" do
14
- use_natural_assertions_if_supported
14
+ skip_natural_assertions_if_not_supported #<--we can't detect void statements
15
15
  Then { }
16
16
  end
17
17
  context "thens to_bool/true will pass" do
18
- use_natural_assertions_if_supported
19
18
  Then { ToBool.new(true) }
20
19
  end
21
20
  end
@@ -0,0 +1,33 @@
1
+ require 'minitest/autorun'
2
+ require 'active_support_helper'
3
+ require 'minitest/given'
4
+ require 'example_helper'
5
+
6
+
7
+ describe ActiveSupport::TestCase, :model do
8
+ Given(:info) { [] }
9
+ Given { info << "outer1" }
10
+ Given { info << "outer2" }
11
+
12
+ context "using a when without result" do
13
+ When { info << "when" }
14
+
15
+ context "inner with When" do
16
+ Given { info << "inner1" }
17
+ Given { info << "inner2" }
18
+ Then { given_assert_equal ["outer1", "outer2", "inner1", "inner2", "when"], info }
19
+
20
+ context "using a nested When" do
21
+ When { info << "when2" }
22
+ Then { given_assert_equal ["outer1", "outer2", "inner1", "inner2", "when", "when2"], info}
23
+ end
24
+
25
+ context "using two nested When" do
26
+ When { info << "when2a" }
27
+ When { info << "when2b" }
28
+ Then { given_assert_equal ["outer1", "outer2", "inner1", "inner2", "when", "when2a", "when2b"], info }
29
+ end
30
+ end
31
+ end
32
+ end
33
+
@@ -1,4 +1,3 @@
1
-
2
1
  module GivenAssertions
3
2
  def given_assert(cond)
4
3
  assert cond
@@ -23,16 +22,13 @@ module GivenAssertions
23
22
  end
24
23
 
25
24
  module NaturalAssertionControl
26
- def use_natural_assertions_if_supported(enabled=true)
27
- if enabled && ! Given::NATURAL_ASSERTIONS_SUPPORTED
28
- Given {
29
- skip "Natural assertions are not supported in JRuby"
30
- }
31
- else
32
- use_natural_assertions(enabled)
25
+ def skip_natural_assertions_if_not_supported
26
+ if !Given::NATURAL_ASSERTIONS_SUPPORTED
27
+ Given { skip "This test requires a Ruby runtime with full natural assertions support." }
33
28
  end
34
29
  end
35
30
  end
36
31
 
37
32
  Minitest::Spec.send(:include, GivenAssertions)
33
+ Minitest::Test.send(:include, GivenAssertions)
38
34
  include NaturalAssertionControl
@@ -1,47 +1,44 @@
1
1
  require 'given/module_methods'
2
2
 
3
- if Given::NATURAL_ASSERTIONS_SUPPORTED
3
+ require 'given/assertions'
4
+ require 'given/fuzzy_number'
4
5
 
5
- require 'given/assertions'
6
- require 'given/fuzzy_number'
6
+ include Given::Assertions
7
+ include Given::Fuzzy
7
8
 
8
- include Given::Assertions
9
- include Given::Fuzzy
10
-
11
- def sqrt(n)
12
- Precondition { n >= 0 }
13
- result = Math.sqrt(n)
14
- Postcondition { result ** 2 == about(n) }
15
- result
16
- end
9
+ def sqrt(n)
10
+ Precondition { n >= 0 }
11
+ result = Math.sqrt(n)
12
+ Postcondition { result ** 2 == about(n) }
13
+ result
14
+ end
17
15
 
18
- def sqrt_bad_postcondition(n)
19
- Precondition { n >= 0 }
20
- result = Math.sqrt(n)
21
- Postcondition { result ** 2 == about(n+1) }
22
- result
23
- end
16
+ def sqrt_bad_postcondition(n)
17
+ Precondition { n >= 0 }
18
+ result = Math.sqrt(n)
19
+ Postcondition { result ** 2 == about(n+1) }
20
+ result
21
+ end
24
22
 
25
- def use_assert(n)
26
- Assert { n == 1 }
27
- end
23
+ def use_assert(n)
24
+ Assert { n == 1 }
25
+ end
28
26
 
29
- def should_fail
30
- begin
31
- yield
32
- fail "Expected error"
33
- rescue Given::Assertions::AssertError => ex
34
- true
35
- end
27
+ def should_fail
28
+ begin
29
+ yield
30
+ fail "Expected error"
31
+ rescue Given::Assertions::AssertError => ex
32
+ true
36
33
  end
34
+ end
37
35
 
38
- sqrt(1)
39
- sqrt(2)
40
- sqrt(0)
36
+ sqrt(1)
37
+ sqrt(2)
38
+ sqrt(0)
41
39
 
42
- should_fail { sqrt(-1) }
43
- should_fail { sqrt_bad_postcondition(1) }
40
+ should_fail { sqrt(-1) }
41
+ should_fail { sqrt_bad_postcondition(1) }
44
42
 
45
- use_assert(1)
46
- should_fail { use_assert(0) }
47
- end
43
+ use_assert(1)
44
+ should_fail { use_assert(0) }
@@ -56,7 +56,6 @@ EOF
56
56
  s.author = "Jim Weirich"
57
57
  s.email = "jim.weirich@gmail.com"
58
58
  s.homepage = "http://github.com/rspec-given/rspec-given"
59
- s.rubyforge_project = "given"
60
59
  end
61
60
 
62
61
  MINITEST_GIVEN_SPEC = Gem::Specification.new do |s|
@@ -84,7 +83,6 @@ EOF
84
83
  s.author = "Jim Weirich"
85
84
  s.email = "jim.weirich@gmail.com"
86
85
  s.homepage = "http://github.com/rspec-given/rspec-given"
87
- s.rubyforge_project = "given"
88
86
  end
89
87
 
90
88
  GIVEN_CORE_SPEC = Gem::Specification.new do |s|
@@ -112,7 +110,6 @@ EOF
112
110
  s.author = "Jim Weirich"
113
111
  s.email = "jim.weirich@gmail.com"
114
112
  s.homepage = "http://github.com/rspec-given/rspec-given"
115
- s.rubyforge_project = "given"
116
113
  end
117
114
 
118
115
  Gem::PackageTask.new(MINITEST_GIVEN_SPEC) do |pkg|
@@ -3,8 +3,6 @@ require 'rspec/given'
3
3
  require 'given/assertions'
4
4
 
5
5
  describe Given::Assertions do
6
- use_natural_assertions_if_supported
7
-
8
6
  Given { extend Given::Assertions }
9
7
 
10
8
  describe "Assert { }" do
@@ -4,7 +4,6 @@ require 'given'
4
4
  require 'given/fuzzy_shortcuts'
5
5
 
6
6
  describe "Numeric Extensions" do
7
- use_natural_assertions_if_supported
8
7
 
9
8
  Given(:n) { 10 }
10
9
  Given(:about_n) { about(n) }
@@ -4,7 +4,6 @@ require 'rspec/given'
4
4
  require 'rspec/given/fuzzy_shortcuts'
5
5
 
6
6
  describe "Numeric Extensions" do
7
- use_natural_assertions_if_supported
8
7
 
9
8
  Given(:n) { 10 }
10
9
  Given(:about_n) { about(n) }
@@ -187,18 +187,25 @@ describe Given::ClassExtensions do
187
187
  And { expect(trace).to eq([:given, :then, :and]) }
188
188
  end
189
189
 
190
+ describe "Adding metadata to Then & And (RSpec 2+)" do
191
+ Given(:test) { RSpec.respond_to?(:current_example) ? RSpec.method(:current_example) : method(:example) }
192
+ Then(:key => :val) { test.call.metadata[:key] == :val }
193
+ And { test.call.metadata[:key] == :val }
194
+
195
+ if rspec_3_or_later?
196
+ describe "Supporting default-to-true metadata symbols (RSpec 3 only)" do
197
+ Then(:magic, :foo => :bar) { test.call.metadata[:magic] == true }
198
+ And { test.call.metadata[:foo] == :bar }
199
+ end
200
+ end
201
+
202
+ end
190
203
  end
191
204
 
192
205
  describe "use_natural_assertions" do
193
- context "when in JRuby" do
194
- CONTEXT = self
206
+ CONTEXT = self
195
207
 
196
- When(:result) { CONTEXT.use_natural_assertions }
208
+ When(:result) { CONTEXT.use_natural_assertions }
197
209
 
198
- if ::Given::NATURAL_ASSERTIONS_SUPPORTED
199
- Then { expect(result).to_not have_failed }
200
- else
201
- Then { expect(result).to have_failed(ArgumentError) }
202
- end
203
- end
210
+ Then { expect(result).to_not have_failed }
204
211
  end
@@ -8,7 +8,6 @@ module FailureMatcherSpec
8
8
  NotMetError = RSpec::Expectations::ExpectationNotMetError
9
9
 
10
10
  describe Given::FailureMatcher do
11
- use_natural_assertions_if_supported
12
11
 
13
12
  Given(:error) { CustomError.new("CUSTOM") }
14
13
 
@@ -27,21 +27,18 @@ describe Given::Failure do
27
27
  end
28
28
 
29
29
  describe "== have_failed" do
30
- use_natural_assertions_if_supported
31
30
  Then { failure == have_failed(StandardError, "Oops") }
32
31
  Then { failure == have_failed(StandardError) }
33
32
  Then { failure == have_failed }
34
33
  end
35
34
 
36
35
  describe "== Failure" do
37
- use_natural_assertions_if_supported
38
36
  Then { failure == Failure(StandardError, "Oops") }
39
37
  Then { failure == Failure(StandardError) }
40
38
  Then { failure == Failure() }
41
39
  end
42
40
 
43
41
  describe "!= Failure" do
44
- use_natural_assertions_if_supported
45
42
  Then { expect { failure != Object.new }.to raise_error(StandardError) }
46
43
  Then { failure != Failure(other_error) }
47
44
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Given::Fuzzy::FuzzyNumber do
4
- use_natural_assertions_if_supported
5
4
  include Given::Fuzzy
6
5
 
7
6
  describe "attributes" do
@@ -61,7 +61,6 @@ module HaveFailedSpec
61
61
  end
62
62
 
63
63
  context "with natural assertions" do
64
- use_natural_assertions_if_supported
65
64
 
66
65
  context "with failure" do
67
66
  When(:result) { fail CustomError, "Ouch" }
@@ -3,7 +3,6 @@ require 'spec_helper'
3
3
  LEXICAL_PURITY_GLOBAL_CONSTANT = 3
4
4
 
5
5
  describe "Lexical Purity" do
6
- use_natural_assertions_if_supported
7
6
 
8
7
  A = 1
9
8
  Given(:avalue) { 1 }
@@ -44,6 +44,7 @@ module Given
44
44
  end
45
45
 
46
46
  context "when the Then is split over several lines with {}" do
47
+ skip_natural_assertions_if_not_supported
47
48
  Given(:input) {
48
49
  "describe 'foobar' do\n" +
49
50
  " Then {\n" +
@@ -55,6 +56,7 @@ module Given
55
56
  end
56
57
 
57
58
  context "when the Then is has blank lines" do
59
+ skip_natural_assertions_if_not_supported
58
60
  Given(:input) {
59
61
  "describe 'foobar' do\n" +
60
62
  " Then {\n\n" +
@@ -66,6 +68,7 @@ module Given
66
68
  end
67
69
 
68
70
  context "when the Then is split over several lines with do/end" do
71
+ skip_natural_assertions_if_not_supported
69
72
  Given(:input) {
70
73
  "describe 'foobar' do\n" +
71
74
  " Then do\n" +
@@ -77,6 +80,7 @@ module Given
77
80
  end
78
81
 
79
82
  context "when the Then is oddly formatted" do
83
+ skip_natural_assertions_if_not_supported
80
84
  Given(:input) {
81
85
  "describe 'foobar' do\n" +
82
86
  " Then { result == ['a',\n" +
@@ -1,13 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe "RSpec::Given.use_natural_assertions" do
4
- context "when in JRuby" do
5
- When(:result) { ::Given.use_natural_assertions }
4
+ When(:result) { ::Given.use_natural_assertions }
6
5
 
7
- if ::Given::NATURAL_ASSERTIONS_SUPPORTED
8
- Then { expect(result).to_not have_failed }
9
- else
10
- Then { expect(result).to have_failed(ArgumentError) }
11
- end
12
- end
6
+ Then { expect(result).to_not have_failed }
13
7
  end
@@ -1,13 +1,19 @@
1
1
  require 'rspec/given'
2
2
  require 'spec_helper'
3
3
 
4
- describe Given::NaturalAssertion do
5
- before do
6
- pending "Natural Assertions disabled for JRuby" unless Given::NATURAL_ASSERTIONS_SUPPORTED
4
+ describe Given::NATURAL_ASSERTIONS_SUPPORTED do
5
+ if (defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx') || (defined?(JRUBY_VERSION) &&
6
+ Gem::Version.new(JRUBY_VERSION) < Gem::Version.new('1.7.5'))
7
+ Then { Given::NATURAL_ASSERTIONS_SUPPORTED == false }
8
+ else
9
+ Then { Given::NATURAL_ASSERTIONS_SUPPORTED == true }
7
10
  end
11
+ end
8
12
 
13
+ describe Given::NaturalAssertion do
9
14
  describe "#content?" do
10
15
  context "with empty block" do
16
+ skip_natural_assertions_if_not_supported
11
17
  FauxThen { }
12
18
  Then { expect(na).to_not have_content }
13
19
  end
@@ -42,6 +48,7 @@ describe Given::NaturalAssertion do
42
48
  end
43
49
 
44
50
  describe "failure messages" do
51
+ skip_natural_assertions_if_not_supported
45
52
  let(:msg) { na.message }
46
53
  Invariant { expect(msg).to match(/^FauxThen expression/) }
47
54
 
@@ -56,7 +63,7 @@ describe Given::NaturalAssertion do
56
63
 
57
64
  context "with equals assertion with do/end" do
58
65
  Given(:a) { 1 }
59
- FauxThen do a == 2 end
66
+ FauxThen { a == 2 }
60
67
  Then { expect(msg).to match(/\bexpected: +1\b/) }
61
68
  Then { expect(msg).to match(/\bto equal: +2\b/) }
62
69
  Then { expect(msg).to match(/\bfalse +<- +a == 2\b/) }
@@ -167,7 +174,11 @@ describe Given::NaturalAssertion do
167
174
  ary[1] == 3
168
175
  }
169
176
  When(:result) { na.message }
170
- Then { expect(result).to have_failed(Given::InvalidThenError, /multiple.*statements/i) }
177
+ if Given::NATURAL_ASSERTIONS_SUPPORTED
178
+ Then { expect(result).to have_failed(Given::InvalidThenError, /multiple.*statements/i) }
179
+ else
180
+ Then { expect(result).to match(/FauxThen expression failed/) }
181
+ end
171
182
  end
172
183
 
173
184
  end
@@ -24,12 +24,6 @@ describe "Configuration Options" do
24
24
  end
25
25
 
26
26
  describe "Global natural assertion configuration" do
27
- unless Given::NATURAL_ASSERTIONS_SUPPORTED
28
- before do
29
- pending "Natural assertions are not supported in JRuby"
30
- end
31
- end
32
-
33
27
  before do
34
28
  Given.use_natural_assertions false
35
29
  end
@@ -46,7 +40,7 @@ describe "Configuration Options" do
46
40
  Then { expect(_gvn_need_na_message?(nassert)).to be_falsy }
47
41
 
48
42
  context "overridden locally" do
49
- use_natural_assertions_if_supported
43
+ use_natural_assertions
50
44
  Then { expect(_gvn_need_na_message?(nassert)).to be_truthy }
51
45
  end
52
46
  end
@@ -120,7 +114,7 @@ describe "Configuration Options" do
120
114
  Then { expect(_gvn_need_na_message?(nassert)).to be_falsy }
121
115
 
122
116
  context "overridden locally" do
123
- use_natural_assertions_if_supported(true)
117
+ use_natural_assertions
124
118
  Then { expect(_gvn_need_na_message?(nassert)).to be_truthy }
125
119
  end
126
120
 
@@ -1,4 +1,12 @@
1
1
  require 'rspec/given'
2
+ RSpec.configure do |config|
3
+ # Before RSpec 3.4, RSpec would only print lines in failures from spec files.
4
+ # Starting in 3.4, it now prints lines from the new `project_source_dirs` config
5
+ # setting. We want it to print lines from our specs instead of printing
6
+ # `::RSpec::Expectations.fail_with(*args)` from within lib/given/rspec/framework.rb,
7
+ # so we remove `lib` from the directories here.
8
+ config.project_source_dirs -= ["lib"] if config.respond_to?(:project_source_dirs)
9
+ end
2
10
 
3
11
  # Load the support modules.
4
12
 
@@ -26,3 +34,7 @@ end
26
34
  def given_assert_raises(error, pattern=nil, &block)
27
35
  expect(&block).to raise_error(error, pattern)
28
36
  end
37
+
38
+ def rspec_3_or_later?
39
+ Gem::Version.new(RSpec::Version::STRING).segments[0] >= 3
40
+ end
@@ -1,15 +1,9 @@
1
1
  module NaturalAssertionControl
2
- def use_natural_assertions_if_supported(enabled=true)
3
- if enabled && ! Given::NATURAL_ASSERTIONS_SUPPORTED
4
- Given {
5
- pending "Natural assertions are not supported in JRuby"
6
- }
7
- else
8
- use_natural_assertions(enabled)
2
+ def skip_natural_assertions_if_not_supported
3
+ if !Given::NATURAL_ASSERTIONS_SUPPORTED
4
+ Given { pending "This test requires a Ruby runtime with full natural assertions support." }
9
5
  end
10
6
  end
11
7
  end
12
8
 
13
- RSpec.configure do |c|
14
- c.extend(NaturalAssertionControl)
15
- end
9
+ RSpec.configure { |c| c.extend(NaturalAssertionControl) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-given
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.6.0
4
+ version: 3.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Weirich
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-09 00:00:00.000000000 Z
11
+ date: 2021-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: given_core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 3.6.0
19
+ version: 3.8.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 3.6.0
26
+ version: 3.8.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -54,6 +54,7 @@ files:
54
54
  - TODO
55
55
  - doc/article/custom_error_messages.md
56
56
  - doc/main.rdoc
57
+ - examples/active_support_helper.rb
57
58
  - examples/example_helper.rb
58
59
  - examples/failing/natural_failing_spec.rb
59
60
  - examples/failing/sample_spec.rb
@@ -69,6 +70,7 @@ files:
69
70
  - examples/integration/invariant_spec.rb
70
71
  - examples/integration/then_spec.rb
71
72
  - examples/loader.rb
73
+ - examples/minitest-rails/test_case_spec.rb
72
74
  - examples/minitest/assert_raises_spec.rb
73
75
  - examples/minitest_helper.rb
74
76
  - examples/other/line_example.rb
@@ -109,7 +111,7 @@ homepage: http://github.com/rspec-given/rspec-given
109
111
  licenses:
110
112
  - MIT
111
113
  metadata: {}
112
- post_install_message:
114
+ post_install_message:
113
115
  rdoc_options:
114
116
  - "--line-numbers"
115
117
  - "--inline-source"
@@ -130,9 +132,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
132
  - !ruby/object:Gem::Version
131
133
  version: '0'
132
134
  requirements: []
133
- rubyforge_project: given
134
- rubygems_version: 2.4.4
135
- signing_key:
135
+ rubygems_version: 3.1.4
136
+ signing_key:
136
137
  specification_version: 4
137
138
  summary: Given/When/Then Specification Extensions for RSpec.
138
139
  test_files: []