r_spec-clone 1.7.0 → 1.7.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 +4 -4
- data/LICENSE.md +1 -1
- data/README.md +26 -24
- data/lib/r_spec/clone/dsl.rb +9 -9
- data/lib/r_spec/clone/error/pending_expectation.rb +0 -1
- data/lib/r_spec/clone/expectation_helper/shared.rb +49 -49
- data/lib/r_spec/clone/expectation_target/base.rb +11 -12
- data/lib/r_spec/clone/expectation_target/block.rb +4 -4
- data/lib/r_spec/clone/expectation_target/value.rb +4 -4
- data/lib/r_spec.rb +6 -6
- metadata +13 -139
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7312f229f5e837553c3bf3b36cb833f8ce1b2182f669e66b4c89bd0f38cd40ed
|
4
|
+
data.tar.gz: c3fdc659bb67d21bf34e0d1e3e6c8bc7a0a277ffb7217c53e6762a2580863420
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4ebb556448f5bbed16b44a8c2ff643991dd36abf65540349a1b8159ceb6b5c97b2f1081a63f23a47627ccb02f83be45e9155dd5d2199a037372ea1f0516ebcc
|
7
|
+
data.tar.gz: f9afb6e9aa7078f8e50ff715d5bc7eb5ac67b24e1038874dc453bd148f30a75581938fbec3a6cd3c8a809ac6b13cdd70ca91368f8208d02735a42a0ce353a8cf
|
data/LICENSE.md
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# RSpec clone
|
1
|
+
# RSpec clone <img src="https://github.com/cyril/r_spec-clone.rb/raw/main/img/logo.svg" style="height: 1em; width: 1em" />
|
2
2
|
|
3
3
|
A minimalist __RSpec clone__ with all the essentials.
|
4
4
|
|
@@ -7,33 +7,35 @@ A minimalist __RSpec clone__ with all the essentials.
|
|
7
7
|
## Status
|
8
8
|
|
9
9
|
[](https://r-spec.dev/)
|
10
|
-
[](https://github.com/cyril/r_spec-clone.rb/
|
10
|
+
[](https://github.com/cyril/r_spec-clone.rb/tags)
|
11
11
|
[](https://rubydoc.info/github/cyril/r_spec-clone.rb/main)
|
12
|
-
[](https://github.com/cyril/r_spec-clone.rb/actions?query=workflow%3Aruby+branch%3Amain)
|
13
13
|
[](https://github.com/cyril/r_spec-clone.rb/actions?query=workflow%3Arubocop+branch%3Amain)
|
14
14
|
[](https://github.com/cyril/r_spec-clone.rb/raw/main/LICENSE.md)
|
15
15
|
|
16
|
-
## Project
|
16
|
+
## Project Goals
|
17
17
|
|
18
|
-
1.
|
19
|
-
2.
|
20
|
-
3. Avoid
|
21
|
-
4. Provide the basics of
|
18
|
+
1. Maintain low code complexity to avoid false negatives and false positives.
|
19
|
+
2. Implement the loading of specifications using simple, atomic, and thread-safe Ruby primitives.
|
20
|
+
3. Avoid cluttering the interface with unnecessary alternative syntaxes.
|
21
|
+
4. Provide the basics of the RSpec DSL for writing tests.
|
22
22
|
|
23
|
-
## Some
|
23
|
+
## Some Differences
|
24
24
|
|
25
|
-
*
|
26
|
-
*
|
27
|
-
* Malicious _actual values_ cannot [
|
28
|
-
* If no `subject`
|
29
|
-
* If no described class is set, `described_class` is undefined
|
25
|
+
* Monkey-patching is not an available option.
|
26
|
+
* The framework does not use [hacks such as the `at_exit` hook](https://blog.arkency.com/2013/06/are-we-abusing-at-exit/) to trigger tests.
|
27
|
+
* Malicious _actual values_ cannot [compromise results](https://asciinema.org/a/423547?autoplay=1&speed=2).
|
28
|
+
* If no `subject` is explicitly determined, it remains undefined.
|
29
|
+
* If no described class is set, `described_class` is undefined rather than `nil`.
|
30
30
|
* Expectations cannot be added inside a `before` block.
|
31
|
-
* [Arbitrary helper methods](https://relishapp.com/rspec/rspec-core/v/3-10/docs/helper-methods/arbitrary-helper-methods) are not
|
31
|
+
* [Arbitrary helper methods](https://relishapp.com/rspec/rspec-core/v/3-10/docs/helper-methods/arbitrary-helper-methods) are not accessible within examples.
|
32
32
|
* The `let` method defines a helper method rather than a memoized helper method.
|
33
|
-
* The one-liner `is_expected` syntax
|
34
|
-
* `subject`, `before
|
35
|
-
* The
|
36
|
-
*
|
33
|
+
* The one-liner `is_expected` syntax is compatible with block expectations.
|
34
|
+
* Definitions of `subject`, `before`, and `let` must precede examples.
|
35
|
+
* The `after` hook is unsupported.
|
36
|
+
* The execution of the test suite halts immediately when an error is detected.
|
37
|
+
* Each `context` block isolates its tests and any potential side effects.
|
38
|
+
* The `its` method is available without the need for external dependencies.
|
37
39
|
|
38
40
|
## Installation
|
39
41
|
|
@@ -46,7 +48,7 @@ gem "r_spec-clone"
|
|
46
48
|
And then execute:
|
47
49
|
|
48
50
|
```sh
|
49
|
-
bundle
|
51
|
+
bundle install
|
50
52
|
```
|
51
53
|
|
52
54
|
Or install it yourself as:
|
@@ -59,7 +61,7 @@ gem install r_spec-clone
|
|
59
61
|
|
60
62
|
__RSpec clone__ provides a structure for writing executable examples of how your code should behave.
|
61
63
|
|
62
|
-
Inspired by RSpec, it includes a domain
|
64
|
+
Inspired by RSpec, it includes a domain-specific language (DSL) that allows you to write examples in a way similar to plain english.
|
63
65
|
|
64
66
|
A basic spec looks something like this:
|
65
67
|
|
@@ -67,10 +69,10 @@ A basic spec looks something like this:
|
|
67
69
|
|
68
70
|
## Usage
|
69
71
|
|
70
|
-
### Anatomy of a
|
72
|
+
### Anatomy of a Spec File
|
71
73
|
|
72
|
-
To
|
73
|
-
Many projects
|
74
|
+
To utilize the `RSpec` module and its DSL, include `require "r_spec"` in your spec files.
|
75
|
+
Many projects organize these includes through a custom spec helper.
|
74
76
|
|
75
77
|
Concrete test cases are defined in `it` blocks.
|
76
78
|
An optional (but recommended) descriptive string or module indicates the purpose of the test and a block contains the main logic of the test.
|
data/lib/r_spec/clone/dsl.rb
CHANGED
@@ -79,10 +79,10 @@ module RSpec
|
|
79
79
|
# @return [Symbol] A private method that define the block content.
|
80
80
|
#
|
81
81
|
# @api public
|
82
|
-
def self.let(name,
|
82
|
+
def self.let(name, ...)
|
83
83
|
raise Error::ReservedMethod if BEFORE_METHOD.equal?(name.to_sym)
|
84
84
|
|
85
|
-
private define_method(name,
|
85
|
+
private define_method(name, ...)
|
86
86
|
end
|
87
87
|
|
88
88
|
# Sets a user-defined property named {#subject}.
|
@@ -113,8 +113,8 @@ module RSpec
|
|
113
113
|
# @return [Symbol] A {#subject} method that define the block content.
|
114
114
|
#
|
115
115
|
# @api public
|
116
|
-
def self.subject(&
|
117
|
-
let(__method__, &
|
116
|
+
def self.subject(&)
|
117
|
+
let(__method__, &)
|
118
118
|
end
|
119
119
|
|
120
120
|
# Defines an example group that describes a unit to be tested.
|
@@ -135,10 +135,10 @@ module RSpec
|
|
135
135
|
# @param block [Proc] The block to define the specs.
|
136
136
|
#
|
137
137
|
# @api public
|
138
|
-
def self.describe(const, &
|
138
|
+
def self.describe(const, &)
|
139
139
|
desc = ::Class.new(self)
|
140
140
|
desc.let(:described_class) { const } if const.is_a?(::Module)
|
141
|
-
desc.instance_eval(&
|
141
|
+
desc.instance_eval(&)
|
142
142
|
end
|
143
143
|
|
144
144
|
# :nocov:
|
@@ -273,10 +273,10 @@ module RSpec
|
|
273
273
|
# @return (see ExpectationTarget::Base#result)
|
274
274
|
#
|
275
275
|
# @api public
|
276
|
-
def self.its(attribute,
|
276
|
+
def self.its(attribute, *, **, &block)
|
277
277
|
Logger.source(*block.source_location)
|
278
|
-
example_with_attribute(attribute,
|
279
|
-
|
278
|
+
example_with_attribute(attribute, *, **).new
|
279
|
+
.instance_eval(&block)
|
280
280
|
end
|
281
281
|
|
282
282
|
# :nocov:
|
@@ -18,12 +18,12 @@ module RSpec
|
|
18
18
|
#
|
19
19
|
# @example
|
20
20
|
# matcher = eq("foo")
|
21
|
-
# matcher.
|
22
|
-
# matcher.
|
21
|
+
# matcher.match? { "foo" } # => true
|
22
|
+
# matcher.match? { "bar" } # => false
|
23
23
|
#
|
24
24
|
# @param expected [#eql?] An expected equivalent object.
|
25
25
|
#
|
26
|
-
# @return [#
|
26
|
+
# @return [#match?] An equivalence matcher.
|
27
27
|
#
|
28
28
|
# @api public
|
29
29
|
def eq(expected)
|
@@ -37,12 +37,12 @@ module RSpec
|
|
37
37
|
# @example
|
38
38
|
# object = "foo"
|
39
39
|
# matcher = be(object)
|
40
|
-
# matcher.
|
41
|
-
# matcher.
|
40
|
+
# matcher.match? { object } # => true
|
41
|
+
# matcher.match? { "foo" } # => false
|
42
42
|
#
|
43
43
|
# @param expected [#equal?] The expected identical object.
|
44
44
|
#
|
45
|
-
# @return [#
|
45
|
+
# @return [#match?] An identity matcher.
|
46
46
|
#
|
47
47
|
# @api public
|
48
48
|
def be(expected)
|
@@ -55,12 +55,12 @@ module RSpec
|
|
55
55
|
#
|
56
56
|
# @example
|
57
57
|
# matcher = be_within(1).of(41)
|
58
|
-
# matcher.
|
59
|
-
# matcher.
|
58
|
+
# matcher.match? { 42 } # => true
|
59
|
+
# matcher.match? { 43 } # => false
|
60
60
|
#
|
61
61
|
# @param delta [Numeric] A numeric value.
|
62
62
|
#
|
63
|
-
# @return [#
|
63
|
+
# @return [#match?] A comparison matcher.
|
64
64
|
#
|
65
65
|
# @api public
|
66
66
|
def be_within(delta)
|
@@ -71,12 +71,12 @@ module RSpec
|
|
71
71
|
#
|
72
72
|
# @example
|
73
73
|
# matcher = match(/^foo$/)
|
74
|
-
# matcher.
|
75
|
-
# matcher.
|
74
|
+
# matcher.match? { "foo" } # => true
|
75
|
+
# matcher.match? { "bar" } # => false
|
76
76
|
#
|
77
77
|
# @param expected [#match] A regular expression.
|
78
78
|
#
|
79
|
-
# @return [#
|
79
|
+
# @return [#match?] A regular expression matcher.
|
80
80
|
#
|
81
81
|
# @api public
|
82
82
|
def match(expected)
|
@@ -87,12 +87,12 @@ module RSpec
|
|
87
87
|
#
|
88
88
|
# @example
|
89
89
|
# matcher = raise_exception(NameError)
|
90
|
-
# matcher.
|
91
|
-
# matcher.
|
90
|
+
# matcher.match? { RSpec::Clone::Boom! } # => true
|
91
|
+
# matcher.match? { true } # => false
|
92
92
|
#
|
93
93
|
# @param expected [Exception, #to_s] The expected exception name.
|
94
94
|
#
|
95
|
-
# @return [#
|
95
|
+
# @return [#match?] An error matcher.
|
96
96
|
#
|
97
97
|
# @api public
|
98
98
|
def raise_exception(expected)
|
@@ -103,12 +103,12 @@ module RSpec
|
|
103
103
|
#
|
104
104
|
# @example
|
105
105
|
# matcher = be_true
|
106
|
-
# matcher.
|
107
|
-
# matcher.
|
108
|
-
# matcher.
|
109
|
-
# matcher.
|
106
|
+
# matcher.match? { true } # => true
|
107
|
+
# matcher.match? { false } # => false
|
108
|
+
# matcher.match? { nil } # => false
|
109
|
+
# matcher.match? { 4 } # => false
|
110
110
|
#
|
111
|
-
# @return [#
|
111
|
+
# @return [#match?] A `true` matcher.
|
112
112
|
#
|
113
113
|
# @api public
|
114
114
|
def be_true
|
@@ -119,12 +119,12 @@ module RSpec
|
|
119
119
|
#
|
120
120
|
# @example
|
121
121
|
# matcher = be_false
|
122
|
-
# matcher.
|
123
|
-
# matcher.
|
124
|
-
# matcher.
|
125
|
-
# matcher.
|
122
|
+
# matcher.match? { false } # => true
|
123
|
+
# matcher.match? { true } # => false
|
124
|
+
# matcher.match? { nil } # => false
|
125
|
+
# matcher.match? { 4 } # => false
|
126
126
|
#
|
127
|
-
# @return [#
|
127
|
+
# @return [#match?] A `false` matcher.
|
128
128
|
#
|
129
129
|
# @api public
|
130
130
|
def be_false
|
@@ -135,12 +135,12 @@ module RSpec
|
|
135
135
|
#
|
136
136
|
# @example
|
137
137
|
# matcher = be_nil
|
138
|
-
# matcher.
|
139
|
-
# matcher.
|
140
|
-
# matcher.
|
141
|
-
# matcher.
|
138
|
+
# matcher.match? { nil } # => true
|
139
|
+
# matcher.match? { false } # => false
|
140
|
+
# matcher.match? { true } # => false
|
141
|
+
# matcher.match? { 4 } # => false
|
142
142
|
#
|
143
|
-
# @return [#
|
143
|
+
# @return [#match?] A `nil` matcher.
|
144
144
|
#
|
145
145
|
# @api public
|
146
146
|
def be_nil
|
@@ -151,12 +151,12 @@ module RSpec
|
|
151
151
|
#
|
152
152
|
# @example
|
153
153
|
# matcher = be_an_instance_of(String)
|
154
|
-
# matcher.
|
155
|
-
# matcher.
|
154
|
+
# matcher.match? { "foo" } # => true
|
155
|
+
# matcher.match? { 4 } # => false
|
156
156
|
#
|
157
157
|
# @param expected [Class, #to_s] The expected class name.
|
158
158
|
#
|
159
|
-
# @return [#
|
159
|
+
# @return [#match?] A type/class matcher.
|
160
160
|
#
|
161
161
|
# @api public
|
162
162
|
def be_an_instance_of(expected)
|
@@ -168,49 +168,49 @@ module RSpec
|
|
168
168
|
# @example
|
169
169
|
# object = []
|
170
170
|
# matcher = change(object, :length).by(1)
|
171
|
-
# matcher.
|
171
|
+
# matcher.match? { object << 1 } # => true
|
172
172
|
#
|
173
173
|
# object = []
|
174
174
|
# matcher = change(object, :length).by_at_least(1)
|
175
|
-
# matcher.
|
175
|
+
# matcher.match? { object << 1 } # => true
|
176
176
|
#
|
177
177
|
# object = []
|
178
178
|
# matcher = change(object, :length).by_at_most(1)
|
179
|
-
# matcher.
|
179
|
+
# matcher.match? { object << 1 } # => true
|
180
180
|
#
|
181
181
|
# object = "foo"
|
182
182
|
# matcher = change(object, :to_s).from("foo").to("FOO")
|
183
|
-
# matcher.
|
183
|
+
# matcher.match? { object.upcase! } # => true
|
184
184
|
#
|
185
185
|
# object = "foo"
|
186
186
|
# matcher = change(object, :to_s).to("FOO")
|
187
|
-
# matcher.
|
187
|
+
# matcher.match? { object.upcase! } # => true
|
188
188
|
#
|
189
189
|
# @param object [#object_id] An object.
|
190
190
|
# @param method [Symbol] The name of a method.
|
191
191
|
# @param args [Array] A list of arguments.
|
192
192
|
# @param kwargs [Hash] A list of keyword arguments.
|
193
193
|
#
|
194
|
-
# @return [#
|
194
|
+
# @return [#match?] A change matcher.
|
195
195
|
#
|
196
196
|
# @api public
|
197
|
-
def change(object, method,
|
198
|
-
::Matchi::Change.new(object, method,
|
197
|
+
def change(object, method, ...)
|
198
|
+
::Matchi::Change.new(object, method, ...)
|
199
199
|
end
|
200
200
|
|
201
201
|
# Satisfy matcher
|
202
202
|
#
|
203
203
|
# @example
|
204
204
|
# matcher = satisfy { |value| value == 42 }
|
205
|
-
# matcher.
|
205
|
+
# matcher.match? { 42 } # => true
|
206
206
|
#
|
207
207
|
# @param expected [Proc] A block of code.
|
208
208
|
#
|
209
|
-
# @return [#
|
209
|
+
# @return [#match?] A satisfy matcher.
|
210
210
|
#
|
211
211
|
# @api public
|
212
|
-
def satisfy(&
|
213
|
-
::Matchi::Satisfy.new(&
|
212
|
+
def satisfy(&)
|
213
|
+
::Matchi::Satisfy.new(&)
|
214
214
|
end
|
215
215
|
|
216
216
|
private
|
@@ -219,12 +219,12 @@ module RSpec
|
|
219
219
|
#
|
220
220
|
# @example Empty predicate matcher
|
221
221
|
# matcher = be_empty
|
222
|
-
# matcher.
|
223
|
-
# matcher.
|
224
|
-
def method_missing(name,
|
222
|
+
# matcher.match? { [] } # => true
|
223
|
+
# matcher.match? { [4] } # => false
|
224
|
+
def method_missing(name, ...)
|
225
225
|
return super unless predicate_matcher_name?(name)
|
226
226
|
|
227
|
-
::Matchi::Predicate.new(name,
|
227
|
+
::Matchi::Predicate.new(name, ...)
|
228
228
|
end
|
229
229
|
|
230
230
|
# :nocov:
|
@@ -25,14 +25,14 @@ module RSpec
|
|
25
25
|
# @example _Absolute requirement_ definition
|
26
26
|
# expect { "foo".upcase }.to eq("foo")
|
27
27
|
#
|
28
|
-
# @param matcher [#
|
28
|
+
# @param matcher [#match?] The matcher.
|
29
29
|
#
|
30
30
|
# @raise (see #result)
|
31
31
|
# @return (see #result)
|
32
32
|
#
|
33
33
|
# @api public
|
34
34
|
def to(matcher)
|
35
|
-
absolute_requirement(matcher
|
35
|
+
absolute_requirement(matcher:, negate: false)
|
36
36
|
end
|
37
37
|
|
38
38
|
# Runs the given expectation, passing if `matcher` returns false.
|
@@ -47,13 +47,13 @@ module RSpec
|
|
47
47
|
#
|
48
48
|
# @api public
|
49
49
|
def not_to(matcher)
|
50
|
-
absolute_requirement(matcher
|
50
|
+
absolute_requirement(matcher:, negate: true)
|
51
51
|
end
|
52
52
|
|
53
53
|
protected
|
54
54
|
|
55
55
|
# @param test [::TestTube::Base] The state of the experiment.
|
56
|
-
# @param matcher [#
|
56
|
+
# @param matcher [#match?] The matcher.
|
57
57
|
# @param negate [Boolean] The assertion is positive or negative.
|
58
58
|
#
|
59
59
|
# @return [nil] Write a message to STDOUT.
|
@@ -66,8 +66,8 @@ module RSpec
|
|
66
66
|
actual: test.actual,
|
67
67
|
error: test.error,
|
68
68
|
got: test.got,
|
69
|
-
matcher
|
70
|
-
negate:
|
69
|
+
matcher:,
|
70
|
+
negate:
|
71
71
|
)
|
72
72
|
end
|
73
73
|
|
@@ -88,7 +88,7 @@ module RSpec
|
|
88
88
|
# @param actual [#object_id] The actual value.
|
89
89
|
# @param error [Exception, nil] Any raised exception.
|
90
90
|
# @param got [Boolean, nil] Any returned value.
|
91
|
-
# @param matcher [#
|
91
|
+
# @param matcher [#match?] The matcher.
|
92
92
|
# @param negate [Boolean] The assertion is positive or negative.
|
93
93
|
#
|
94
94
|
# @return [nil] Write a message to STDOUT.
|
@@ -97,12 +97,11 @@ module RSpec
|
|
97
97
|
# `Kernel.exit(false)` with a failure message written to STDERR.
|
98
98
|
def result(passed, actual:, error:, got:, matcher:, negate:)
|
99
99
|
Logger.passed_spec ::Expresenter.call(passed).with(
|
100
|
-
actual
|
100
|
+
actual:,
|
101
101
|
definition: matcher.to_s,
|
102
|
-
error
|
103
|
-
|
104
|
-
|
105
|
-
negate: negate,
|
102
|
+
error:,
|
103
|
+
got:,
|
104
|
+
negate:,
|
106
105
|
level: :MUST
|
107
106
|
)
|
108
107
|
rescue ::Expresenter::Fail => e
|
@@ -21,7 +21,7 @@ module RSpec
|
|
21
21
|
class Block < Base
|
22
22
|
protected
|
23
23
|
|
24
|
-
# @param matcher [#
|
24
|
+
# @param matcher [#match?] The matcher.
|
25
25
|
# @param negate [Boolean] The assertion is positive or negative.
|
26
26
|
#
|
27
27
|
# @return (see Base#absolute_requirement)
|
@@ -29,9 +29,9 @@ module RSpec
|
|
29
29
|
# @raise (see Base#absolute_requirement)
|
30
30
|
def absolute_requirement(matcher:, negate:)
|
31
31
|
super(
|
32
|
-
::TestTube.invoke(
|
33
|
-
matcher
|
34
|
-
negate:
|
32
|
+
::TestTube.invoke(matcher:, negate:, &@input),
|
33
|
+
matcher:,
|
34
|
+
negate:
|
35
35
|
)
|
36
36
|
end
|
37
37
|
end
|
@@ -21,7 +21,7 @@ module RSpec
|
|
21
21
|
class Value < Base
|
22
22
|
protected
|
23
23
|
|
24
|
-
# @param matcher [#
|
24
|
+
# @param matcher [#match?] The matcher.
|
25
25
|
# @param negate [Boolean] The assertion is positive or negative.
|
26
26
|
#
|
27
27
|
# @return (see Base#absolute_requirement)
|
@@ -29,9 +29,9 @@ module RSpec
|
|
29
29
|
# @raise (see Base#absolute_requirement)
|
30
30
|
def absolute_requirement(matcher:, negate:)
|
31
31
|
super(
|
32
|
-
::TestTube.pass(@input, matcher
|
33
|
-
matcher
|
34
|
-
negate:
|
32
|
+
::TestTube.pass(@input, matcher:, negate:),
|
33
|
+
matcher:,
|
34
|
+
negate:
|
35
35
|
)
|
36
36
|
end
|
37
37
|
end
|
data/lib/r_spec.rb
CHANGED
@@ -83,8 +83,8 @@ module RSpec
|
|
83
83
|
# @param description [String] A description that usually begins with "when",
|
84
84
|
# "with" or "without".
|
85
85
|
# @param block [Proc] The block to define the specs.
|
86
|
-
def self.context(description, &
|
87
|
-
Clone::Dsl.context(description, &
|
86
|
+
def self.context(description, &)
|
87
|
+
Clone::Dsl.context(description, &)
|
88
88
|
end
|
89
89
|
|
90
90
|
# :nocov:
|
@@ -117,8 +117,8 @@ module RSpec
|
|
117
117
|
#
|
118
118
|
# @param const [Module, String] A module to include in block context.
|
119
119
|
# @param block [Proc] The block to define the specs.
|
120
|
-
def self.describe(const, &
|
121
|
-
Clone::Dsl.describe(const, &
|
120
|
+
def self.describe(const, &)
|
121
|
+
Clone::Dsl.describe(const, &)
|
122
122
|
end
|
123
123
|
|
124
124
|
# :nocov:
|
@@ -143,8 +143,8 @@ module RSpec
|
|
143
143
|
#
|
144
144
|
# @raise (see RSpec::Clone::ExpectationTarget::Base#result)
|
145
145
|
# @return (see RSpec::Clone::ExpectationTarget::Base#result)
|
146
|
-
def self.it(name = nil, &
|
147
|
-
Clone::Dsl.it(name, &
|
146
|
+
def self.it(name = nil, &)
|
147
|
+
Clone::Dsl.it(name, &)
|
148
148
|
end
|
149
149
|
|
150
150
|
# :nocov:
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: r_spec-clone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cyril Kato
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: expresenter
|
@@ -16,168 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.5.0
|
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: 1.
|
26
|
+
version: 1.5.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: matchi
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 4.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 4.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: test_tube
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 4.0.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: bundler
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rake
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rubocop-md
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rubocop-performance
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rubocop-rake
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rubocop-rspec
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: rubocop-thread_safety
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - ">="
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: simplecov
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: yard
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ">="
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ">="
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0'
|
54
|
+
version: 4.0.0
|
181
55
|
description: A minimalist RSpec clone with all the essentials.
|
182
56
|
email: contact@cyril.email
|
183
57
|
executables: []
|
@@ -212,7 +86,7 @@ metadata:
|
|
212
86
|
source_code_uri: https://github.com/cyril/r_spec-clone.rb
|
213
87
|
wiki_uri: https://github.com/cyril/r_spec-clone.rb/wiki
|
214
88
|
rubygems_mfa_required: 'true'
|
215
|
-
post_install_message:
|
89
|
+
post_install_message:
|
216
90
|
rdoc_options: []
|
217
91
|
require_paths:
|
218
92
|
- lib
|
@@ -220,15 +94,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
220
94
|
requirements:
|
221
95
|
- - ">="
|
222
96
|
- !ruby/object:Gem::Version
|
223
|
-
version: 3.
|
97
|
+
version: 3.2.4
|
224
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
225
99
|
requirements:
|
226
100
|
- - ">="
|
227
101
|
- !ruby/object:Gem::Version
|
228
102
|
version: '0'
|
229
103
|
requirements: []
|
230
|
-
rubygems_version: 3.
|
231
|
-
signing_key:
|
104
|
+
rubygems_version: 3.4.19
|
105
|
+
signing_key:
|
232
106
|
specification_version: 4
|
233
107
|
summary: A minimalist RSpec clone
|
234
108
|
test_files: []
|