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 +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
|
| [](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: []
|