r_spec 0.3.2 → 1.0.0.beta4

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.
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RSpec
4
+ # Namespace for `it` and `its` helper modules.
5
+ module ExpectationHelper
6
+ end
7
+ end
8
+
9
+ require_relative File.join("expectation_helper", "it")
10
+ require_relative File.join("expectation_helper", "its")
@@ -0,0 +1,96 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "matchi/rspec"
4
+
5
+ require_relative File.join("..", "pending")
6
+
7
+ module RSpec
8
+ module ExpectationHelper
9
+ # Abstract expectation helper base module.
10
+ #
11
+ # This module defines a number of methods to create expectations, which are
12
+ # automatically included into example namespaces.
13
+ #
14
+ # It also includes a collection of expectation matchers 🤹
15
+ #
16
+ # @example Equivalence matcher
17
+ # matcher = eql("foo") # => Matchi::Matcher::Eql.new("foo")
18
+ # matcher.matches? { "foo" } # => true
19
+ # matcher.matches? { "bar" } # => false
20
+ #
21
+ # matcher = eq("foo") # => Matchi::Matcher::Eq.new("foo")
22
+ # matcher.matches? { "foo" } # => true
23
+ # matcher.matches? { "bar" } # => false
24
+ #
25
+ # @example Identity matcher
26
+ # object = "foo"
27
+ #
28
+ # matcher = equal(object) # => Matchi::Matcher::Equal.new(object)
29
+ # matcher.matches? { object } # => true
30
+ # matcher.matches? { "foo" } # => false
31
+ #
32
+ # matcher = be(object) # => Matchi::Matcher::Be.new(object)
33
+ # matcher.matches? { object } # => true
34
+ # matcher.matches? { "foo" } # => false
35
+ #
36
+ # @example Regular expressions matcher
37
+ # matcher = match(/^foo$/) # => Matchi::Matcher::Match.new(/^foo$/)
38
+ # matcher.matches? { "foo" } # => true
39
+ # matcher.matches? { "bar" } # => false
40
+ #
41
+ # @example Expecting errors matcher
42
+ # matcher = raise_exception(NameError) # => Matchi::Matcher::RaiseException.new(NameError)
43
+ # matcher.matches? { Boom } # => true
44
+ # matcher.matches? { true } # => false
45
+ #
46
+ # @example Truth matcher
47
+ # matcher = be_true # => Matchi::Matcher::BeTrue.new
48
+ # matcher.matches? { true } # => true
49
+ # matcher.matches? { false } # => false
50
+ # matcher.matches? { nil } # => false
51
+ # matcher.matches? { 4 } # => false
52
+ #
53
+ # @example Untruth matcher
54
+ # matcher = be_false # => Matchi::Matcher::BeFalse.new
55
+ # matcher.matches? { false } # => true
56
+ # matcher.matches? { true } # => false
57
+ # matcher.matches? { nil } # => false
58
+ # matcher.matches? { 4 } # => false
59
+ #
60
+ # @example Nil matcher
61
+ # matcher = be_nil # => Matchi::Matcher::BeNil.new
62
+ # matcher.matches? { nil } # => true
63
+ # matcher.matches? { false } # => false
64
+ # matcher.matches? { true } # => false
65
+ # matcher.matches? { 4 } # => false
66
+ #
67
+ # @example Type/class matcher
68
+ # matcher = be_instance_of(String) # => Matchi::Matcher::BeInstanceOf.new(String)
69
+ # matcher.matches? { "foo" } # => true
70
+ # matcher.matches? { 4 } # => false
71
+ #
72
+ # matcher = be_an_instance_of(String) # => Matchi::Matcher::BeAnInstanceOf.new(String)
73
+ # matcher.matches? { "foo" } # => true
74
+ # matcher.matches? { 4 } # => false
75
+ #
76
+ # @see https://github.com/fixrb/matchi
77
+ # @see https://github.com/fixrb/matchi-rspec
78
+ module Base
79
+ include ::Matchi::Helper
80
+
81
+ # Mark a spec as pending, expectation results will be ignored.
82
+ #
83
+ # @param description [String] The reason why the example is pending.
84
+ #
85
+ # @return [nil] Write a message to STDOUT.
86
+ #
87
+ # @example Output a message to the console and return nil
88
+ # pending("something else getting finished") # => nil
89
+ #
90
+ # @api public
91
+ def pending(description)
92
+ Pending.result(description)
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base"
4
+ require_relative File.join("..", "expectation_target")
5
+
6
+ module RSpec
7
+ module ExpectationHelper
8
+ # `it` expectation helper module.
9
+ module It
10
+ include Base
11
+
12
+ # Create an expectation for a spec.
13
+ #
14
+ # @param value [#object_id, nil] An actual value.
15
+ # @param block [#call, nil] A code to evaluate.
16
+ #
17
+ # @return [Block, Value] The wrapped target of an expectation.
18
+ #
19
+ # @example
20
+ # expect("foo") # => #<RSpec::ExpectationTarget::Value:0x00007fb6b82311a0 @actual="foo">
21
+ # expect { Boom } # => #<RSpec::ExpectationTarget::Block:0x00007fb6b8263df8 @callable=#<Proc:0x00007fb6b8263e20>>
22
+ #
23
+ # @api public
24
+ def expect(value = self.class.superclass, &block)
25
+ ExpectationTarget.call(self.class.superclass, value, block)
26
+ end
27
+
28
+ # Wraps the target of an expectation with the subject as actual value.
29
+ #
30
+ # @return (see #expect)
31
+ #
32
+ # @example
33
+ # is_expected # => #<RSpec::ExpectationTarget::Block:0x00007fb6b8263df8 @callable=#<Proc:0x00007fb6b8263e20>>
34
+ #
35
+ # @api public
36
+ def is_expected
37
+ expect { subject }
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base"
4
+ require_relative File.join("..", "expectation_target", "block")
5
+
6
+ module RSpec
7
+ module ExpectationHelper
8
+ # `its` expectation helper module.
9
+ module Its
10
+ include Base
11
+
12
+ # Wraps the target of an expectation with the actual value.
13
+ #
14
+ # @return [Block] The wrapped target of an expectation.
15
+ #
16
+ # @example
17
+ # is_expected # => #<RSpec::ExpectationTarget::Block:0x00007fb6b8263df8 @callable=#<Proc:0x00007fb6b8263e20>>
18
+ #
19
+ # @api public
20
+ def is_expected
21
+ ExpectationTarget::Block.new(method(:actual))
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RSpec
4
+ # Wraps the target of an expectation.
5
+ #
6
+ # @api private
7
+ module ExpectationTarget
8
+ # @param undefined_value A sentinel value to be able to tell when the user
9
+ # did not pass an argument. We can't use `nil` for that because `nil` is a
10
+ # valid value to pass.
11
+ # @param value [#object_id, nil] An actual value.
12
+ # @param block [#call, nil] A code to evaluate.
13
+ #
14
+ # @return [Block, Value] The wrapped target of an expectation.
15
+ def self.call(undefined_value, value, block)
16
+ if undefined_value.equal?(value)
17
+ raise ::ArgumentError, "Pass either an argument or a block" unless block
18
+
19
+ Block.new(block)
20
+ else
21
+ raise ::ArgumentError, "Can't pass both an argument and a block" if block
22
+
23
+ Value.new(value)
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ require_relative File.join("expectation_target", "block")
30
+ require_relative File.join("expectation_target", "value")
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "expresenter"
4
+
5
+ module RSpec
6
+ module ExpectationTarget
7
+ # Abstract expectation target base class.
8
+ #
9
+ # @note `RSpec::ExpectationTarget::Base` is not intended to be instantiated
10
+ # directly by users. Use `expect` instead.
11
+ class Base
12
+ # Runs the given expectation, passing if `matcher` returns true.
13
+ #
14
+ # @example _Absolute requirement_ definition
15
+ # expect { "foo".upcase }.to eq("foo")
16
+ #
17
+ # @param matcher [#matches?] The matcher.
18
+ #
19
+ # @raise (see #result)
20
+ # @return (see #result)
21
+ #
22
+ # @api public
23
+ def to(matcher)
24
+ absolute_requirement(matcher: matcher, negate: false)
25
+ end
26
+
27
+ # Runs the given expectation, passing if `matcher` returns false.
28
+ #
29
+ # @example _Absolute prohibition_ definition
30
+ # expect { "foo".size }.not_to be(4)
31
+ #
32
+ # @param (see #to)
33
+ #
34
+ # @raise (see #result)
35
+ # @return (see #result)
36
+ #
37
+ # @api public
38
+ def not_to(matcher)
39
+ absolute_requirement(matcher: matcher, negate: true)
40
+ end
41
+
42
+ protected
43
+
44
+ # @param actual [#object_id] The actual value.
45
+ # @param error [Exception, nil] Any raised exception.
46
+ # @param got [Boolean, nil] Any returned value.
47
+ # @param matcher [#matches?] The matcher.
48
+ # @param negate [Boolean] The assertion is positive or negative.
49
+ # @param valid [Boolean] The result of an expectation.
50
+ #
51
+ # @return [nil] Write a message to STDOUT.
52
+ #
53
+ # @raise [SystemExit] Terminate execution immediately by calling
54
+ # `Kernel.exit(false)` with a failure message written to STDERR.
55
+ #
56
+ # @api private
57
+ def result(actual:, error:, got:, matcher:, negate:, valid:)
58
+ puts " " + ::Expresenter.call(valid).with(
59
+ actual: actual,
60
+ error: error,
61
+ expected: matcher.expected,
62
+ got: got,
63
+ negate: negate,
64
+ valid: valid,
65
+ matcher: matcher.class.to_sym,
66
+ level: :MUST
67
+ ).colored_string
68
+ rescue ::Expresenter::Fail => e
69
+ abort " #{e.colored_string}"
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spectus/exam"
4
+
5
+ require_relative "base"
6
+
7
+ module RSpec
8
+ module ExpectationTarget
9
+ # Wraps the target of an expectation with a block.
10
+ #
11
+ # @example
12
+ # expect { something } # => ExpectationTarget::Block wrapping something
13
+ #
14
+ # # used with `to`
15
+ # expect { actual }.to be(42)
16
+ #
17
+ # # with `not_to`
18
+ # expect { actual }.not_to be(4)
19
+ #
20
+ # @note `RSpec::ExpectationTarget::Block` is not intended to be instantiated
21
+ # directly by users. Use `expect` instead.
22
+ class Block < Base
23
+ # Instantiate a new expectation target.
24
+ #
25
+ # @param block [#call] The code to evaluate.
26
+ def initialize(block)
27
+ super()
28
+
29
+ @callable = block
30
+ end
31
+
32
+ protected
33
+
34
+ # @param matcher [#matches?] The matcher.
35
+ # @param negate [Boolean] The assertion is positive or negative.
36
+ #
37
+ # @return [nil] Write a message to STDOUT.
38
+ #
39
+ # @raise [SystemExit] Terminate execution immediately by calling
40
+ # `Kernel.exit(false)` with a failure message written to STDERR.
41
+ def absolute_requirement(matcher:, negate:)
42
+ exam = ::Spectus::Exam.new(
43
+ callable: @callable,
44
+ isolation: false,
45
+ negate: negate,
46
+ matcher: matcher
47
+ )
48
+
49
+ result(
50
+ actual: exam.actual,
51
+ error: exam.exception,
52
+ got: exam.got,
53
+ matcher: matcher,
54
+ negate: negate,
55
+ valid: exam.valid?
56
+ )
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base"
4
+
5
+ module RSpec
6
+ module ExpectationTarget
7
+ # Wraps the target of an expectation with a value.
8
+ #
9
+ # @example
10
+ # expect(something) # => ExpectationTarget::Value wrapping something
11
+ #
12
+ # # used with `to`
13
+ # expect(actual).to be(42)
14
+ #
15
+ # # with `not_to`
16
+ # expect(actual).not_to be(4)
17
+ #
18
+ # @note `RSpec::ExpectationTarget::Value` is not intended to be instantiated
19
+ # directly by users. Use `expect` instead.
20
+ class Value < Base
21
+ # Instantiate a new expectation target.
22
+ #
23
+ # @param actual [#object_id] The actual value.
24
+ def initialize(actual)
25
+ super()
26
+
27
+ @actual = actual
28
+ end
29
+
30
+ protected
31
+
32
+ # @param matcher [#matches?] The matcher.
33
+ # @param negate [Boolean] The assertion is positive or negative.
34
+ #
35
+ # @return [nil] Write a message to STDOUT.
36
+ #
37
+ # @raise [SystemExit] Terminate execution immediately by calling
38
+ # `Kernel.exit(false)` with a failure message written to STDERR.
39
+ def absolute_requirement(matcher:, negate:)
40
+ valid = negate ^ matcher.matches? { @actual }
41
+
42
+ result(
43
+ actual: @actual,
44
+ error: nil,
45
+ got: valid,
46
+ matcher: matcher,
47
+ negate: negate,
48
+ valid: valid
49
+ )
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "expresenter"
4
+
5
+ module RSpec
6
+ # Exception for pending expectations.
7
+ #
8
+ # @api private
9
+ class Pending < ::NotImplementedError
10
+ # @param message [String] The not implemented expectation description.
11
+ #
12
+ # @return [nil] Write a pending expectation to STDOUT.
13
+ def self.result(message)
14
+ warn " " + ::Expresenter.call(true).with(
15
+ actual: new(message),
16
+ error: nil,
17
+ expected: self,
18
+ got: false,
19
+ matcher: :raise_exception,
20
+ negate: true,
21
+ level: :SHOULD,
22
+ valid: false
23
+ ).colored_string
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RSpec
4
+ # Namespace to collect test classes.
5
+ #
6
+ # @api private
7
+ module Sandbox
8
+ end
9
+ end
metadata CHANGED
@@ -1,175 +1,211 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r_spec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 1.0.0.beta4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril Kato
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-12 00:00:00.000000000 Z
11
+ date: 2021-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: fix-expect
14
+ name: expresenter
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.3.5
19
+ version: 1.2.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: 0.3.5
26
+ version: 1.2.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: fix-its
28
+ name: matchi-rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.5.4
33
+ version: 1.1.1
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: 0.5.4
40
+ version: 1.1.1
41
41
  - !ruby/object:Gem::Dependency
42
- name: matchi-rspec
42
+ name: spectus
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.3
47
+ version: 3.3.2
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: 0.1.3
54
+ version: 3.3.2
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '2.0'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '2.0'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '12.3'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '12.3'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rubocop
84
+ name: rubocop-md
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '0.67'
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '0.67'
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: simplecov
98
+ name: rubocop-performance
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: '0.16'
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: '0.16'
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: spectus
112
+ name: rubocop-rake
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: '3.0'
117
+ version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
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
+ - - ">="
123
151
  - !ruby/object:Gem::Version
124
- version: '3.0'
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'
125
167
  - !ruby/object:Gem::Dependency
126
168
  name: yard
127
169
  requirement: !ruby/object:Gem::Requirement
128
170
  requirements:
129
- - - "~>"
171
+ - - ">="
130
172
  - !ruby/object:Gem::Version
131
- version: '0.9'
173
+ version: '0'
132
174
  type: :development
133
175
  prerelease: false
134
176
  version_requirements: !ruby/object:Gem::Requirement
135
177
  requirements:
136
- - - "~>"
178
+ - - ">="
137
179
  - !ruby/object:Gem::Version
138
- version: '0.9'
139
- description: A small Rspec clone based on Fix specing framework.
140
- email:
141
- - contact@cyril.email
180
+ version: '0'
181
+ description: A minimalist RSpec clone with all the essentials.
182
+ email: contact@cyril.email
142
183
  executables: []
143
184
  extensions: []
144
185
  extra_rdoc_files: []
145
186
  files:
146
- - ".gitignore"
147
- - ".rubocop.yml"
148
- - ".rubocop_todo.yml"
149
- - ".travis.yml"
150
- - ".yardopts"
151
- - CODE_OF_CONDUCT.md
152
- - Gemfile
153
187
  - LICENSE.md
154
188
  - README.md
155
- - Rakefile
156
- - VERSION.semver
157
- - bin/console
158
- - bin/setup
159
- - checksum/r_spec-0.1.0.gem.sha512
160
- - checksum/r_spec-0.1.1.gem.sha512
161
- - checksum/r_spec-0.2.0.gem.sha512
162
- - checksum/r_spec-0.3.0.gem.sha512
163
- - checksum/r_spec-0.3.1.gem.sha512
164
- - lib/fix/it.rb
165
- - lib/fix/on.rb
166
189
  - lib/r_spec.rb
167
- - pkg_checksum
168
- - r_spec.gemspec
169
- homepage: https://github.com/cyril/r_spec
190
+ - lib/r_spec/dsl.rb
191
+ - lib/r_spec/expectation_helper.rb
192
+ - lib/r_spec/expectation_helper/base.rb
193
+ - lib/r_spec/expectation_helper/it.rb
194
+ - lib/r_spec/expectation_helper/its.rb
195
+ - lib/r_spec/expectation_target.rb
196
+ - lib/r_spec/expectation_target/base.rb
197
+ - lib/r_spec/expectation_target/block.rb
198
+ - lib/r_spec/expectation_target/value.rb
199
+ - lib/r_spec/pending.rb
200
+ - lib/r_spec/sandbox.rb
201
+ homepage: https://r-spec.dev/
170
202
  licenses:
171
203
  - MIT
172
- metadata: {}
204
+ metadata:
205
+ bug_tracker_uri: https://github.com/cyril/r_spec.rb/issues
206
+ documentation_uri: https://rubydoc.info/gems/r_spec
207
+ source_code_uri: https://github.com/cyril/r_spec.rb
208
+ wiki_uri: https://github.com/cyril/r_spec.rb/wiki
173
209
  post_install_message:
174
210
  rdoc_options: []
175
211
  require_paths:
@@ -178,15 +214,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
178
214
  requirements:
179
215
  - - ">="
180
216
  - !ruby/object:Gem::Version
181
- version: '0'
217
+ version: 2.7.0
182
218
  required_rubygems_version: !ruby/object:Gem::Requirement
183
219
  requirements:
184
- - - ">="
220
+ - - ">"
185
221
  - !ruby/object:Gem::Version
186
- version: '0'
222
+ version: 1.3.1
187
223
  requirements: []
188
- rubygems_version: 3.0.3
224
+ rubygems_version: 3.1.6
189
225
  signing_key:
190
226
  specification_version: 4
191
- summary: Rspec clone with Fix.
227
+ summary: A minimalist RSpec clone
192
228
  test_files: []