rspec-given 3.6.0 → 3.8.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile.lock +19 -16
- data/README.md +39 -7
- data/Rakefile +2 -5
- data/examples/active_support_helper.rb +10 -0
- data/examples/example_helper.rb +1 -0
- data/examples/integration/failing_messages_spec.rb +20 -5
- data/examples/integration/given_spec.rb +2 -2
- data/examples/integration/then_spec.rb +1 -2
- data/examples/minitest-rails/test_case_spec.rb +33 -0
- data/examples/minitest_helper.rb +4 -8
- data/examples/use_assertions.rb +33 -36
- data/rakelib/gemspec.rake +0 -3
- data/spec/lib/given/assertions_spec.rb +0 -2
- data/spec/lib/given/ext/numeric_spec.rb +0 -1
- data/spec/lib/given/ext/numeric_specifications.rb +0 -1
- data/spec/lib/given/extensions_spec.rb +16 -9
- data/spec/lib/given/failure_matcher_spec.rb +0 -1
- data/spec/lib/given/failure_spec.rb +0 -3
- data/spec/lib/given/fuzzy_number_spec.rb +0 -1
- data/spec/lib/given/have_failed_spec.rb +0 -1
- data/spec/lib/given/lexical_purity_spec.rb +0 -1
- data/spec/lib/given/line_extractor_spec.rb +4 -0
- data/spec/lib/given/module_methods_spec.rb +2 -8
- data/spec/lib/given/natural_assertion_spec.rb +16 -5
- data/spec/lib/given/options_spec.rb +2 -8
- data/spec/spec_helper.rb +12 -0
- data/spec/support/natural_assertion_control.rb +4 -10
- metadata +10 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c14e0d966163124122b49ab58ec062223f6c53baadd5cfeb0252ac8ff746b606
|
4
|
+
data.tar.gz: c154feb3b2348b611a73955c077a3fcecc710885d3d3eaeb3728942456e1ea27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d346f728c2e31626fc5bfb9e00fc6a997cf453545829c264bd9975cbd7dedb2736b6a3a4460495f195d019ce879b23207f6dc24dec46ae9f73849d9bf63ec54e
|
7
|
+
data.tar.gz: bd22999d6ffd7fcead5890060d8e8423c32b3f71177461f52a57cb11415401558146b383cc1aa7adc89da4adc30b57c2f03c5203556a507c289f681f29ca9ba4
|
data/Gemfile.lock
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
GEM
|
2
2
|
remote: https://rubygems.org/
|
3
3
|
specs:
|
4
|
-
diff-lcs (1.
|
5
|
-
minitest (5.
|
6
|
-
rake (
|
7
|
-
rspec (3.
|
8
|
-
rspec-core (~> 3.
|
9
|
-
rspec-expectations (~> 3.
|
10
|
-
rspec-mocks (~> 3.
|
11
|
-
rspec-core (3.1
|
12
|
-
rspec-support (~> 3.
|
13
|
-
rspec-expectations (3.1
|
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.
|
16
|
-
rspec-mocks (3.
|
17
|
-
|
18
|
-
|
19
|
-
|
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.
|
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
|
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
|
767
|
-
|
768
|
-
|
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
|
|
data/examples/example_helper.rb
CHANGED
@@ -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
|
-
|
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
|
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
|
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
|
@@ -11,11 +11,10 @@ end
|
|
11
11
|
|
12
12
|
describe "Then" do
|
13
13
|
context "empty thens with natural assertions" do
|
14
|
-
|
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
|
+
|
data/examples/minitest_helper.rb
CHANGED
@@ -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
|
27
|
-
if
|
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
|
data/examples/use_assertions.rb
CHANGED
@@ -1,47 +1,44 @@
|
|
1
1
|
require 'given/module_methods'
|
2
2
|
|
3
|
-
|
3
|
+
require 'given/assertions'
|
4
|
+
require 'given/fuzzy_number'
|
4
5
|
|
5
|
-
|
6
|
-
|
6
|
+
include Given::Assertions
|
7
|
+
include Given::Fuzzy
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
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
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
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
|
-
|
26
|
-
|
27
|
-
|
23
|
+
def use_assert(n)
|
24
|
+
Assert { n == 1 }
|
25
|
+
end
|
28
26
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
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
|
-
|
39
|
-
|
40
|
-
|
36
|
+
sqrt(1)
|
37
|
+
sqrt(2)
|
38
|
+
sqrt(0)
|
41
39
|
|
42
|
-
|
43
|
-
|
40
|
+
should_fail { sqrt(-1) }
|
41
|
+
should_fail { sqrt_bad_postcondition(1) }
|
44
42
|
|
45
|
-
|
46
|
-
|
47
|
-
end
|
43
|
+
use_assert(1)
|
44
|
+
should_fail { use_assert(0) }
|
data/rakelib/gemspec.rake
CHANGED
@@ -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|
|
@@ -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
|
-
|
194
|
-
CONTEXT = self
|
206
|
+
CONTEXT = self
|
195
207
|
|
196
|
-
|
208
|
+
When(:result) { CONTEXT.use_natural_assertions }
|
197
209
|
|
198
|
-
|
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
|
@@ -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
|
@@ -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
|
-
|
5
|
-
When(:result) { ::Given.use_natural_assertions }
|
4
|
+
When(:result) { ::Given.use_natural_assertions }
|
6
5
|
|
7
|
-
|
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::
|
5
|
-
|
6
|
-
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
117
|
+
use_natural_assertions
|
124
118
|
Then { expect(_gvn_need_na_message?(nassert)).to be_truthy }
|
125
119
|
end
|
126
120
|
|
data/spec/spec_helper.rb
CHANGED
@@ -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
|
3
|
-
if
|
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
|
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.
|
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:
|
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.
|
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.
|
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
|
-
|
134
|
-
|
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: []
|