gruf-rspec 0.5.0 → 1.0.0
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/CHANGELOG.md +11 -1
- data/README.md +17 -24
- data/gruf-rspec.gemspec +6 -11
- data/lib/gruf/rspec/configuration.rb +0 -3
- data/lib/gruf/rspec/helpers.rb +0 -2
- data/lib/gruf/rspec/railtie.rb +31 -0
- data/lib/gruf/rspec/version.rb +1 -1
- data/lib/gruf/rspec.rb +17 -4
- metadata +28 -65
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6291a6cf9290f5a961f9fe4aaa14cab581d4e6f8496165d9d615554c31aadf2a
|
4
|
+
data.tar.gz: eed0811eb88ff1a57d02b6c03e523eef23859b69b1d9cff9362cdd08c6175d78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 235f0f22e3bfde97bb808c683848c5a5ec396c9d4b194b2aa6071c0a251903365344ba0e6d9de05614ebbed9dc634172dd0b7484f88bce2966eb523bf15487ec
|
7
|
+
data.tar.gz: 7cb35d4584731c5f733de85260feb13154cb9f85b714ce6e19e88054d002f83fc0a20dcb7d696b37b54e56759d013ce30419ab4028ce0a0589b69e7b0e3e2859
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,16 @@ Changelog for the gruf-rspec gem.
|
|
2
2
|
|
3
3
|
### Pending release
|
4
4
|
|
5
|
+
### 1.0.0
|
6
|
+
|
7
|
+
- Add support for Ruby 3.2, 3.3
|
8
|
+
- Drop support for Ruby 2.7 (EOL March 2023)
|
9
|
+
|
10
|
+
### 0.6.0
|
11
|
+
|
12
|
+
- Add better support for Gruf 2.15+ autoloading in a Rails test environment
|
13
|
+
- Use zeitwerk for autoloading in this library
|
14
|
+
|
5
15
|
### 0.5.0
|
6
16
|
|
7
17
|
- Add support for Ruby 3.1
|
@@ -14,7 +24,7 @@ Changelog for the gruf-rspec gem.
|
|
14
24
|
|
15
25
|
### 0.3.0
|
16
26
|
|
17
|
-
- [#7] Fix issue where RPC_SPEC_PATH defaulting is hardcoded
|
27
|
+
- [#7] Fix issue where RPC_SPEC_PATH defaulting is hardcoded
|
18
28
|
- Drop support for Ruby < 2.6, add 2.7 tests
|
19
29
|
- Update rubocop to 1.0
|
20
30
|
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://circleci.com/gh/bigcommerce/gruf-rspec/tree/main) [](https://badge.fury.io/rb/gruf-rspec) [](https://inch-ci.org/github/bigcommerce/gruf-rspec?branch=main) [](https://codeclimate.com/github/bigcommerce/gruf-rspec/maintainability) [](https://codeclimate.com/github/bigcommerce/gruf-rspec/test_coverage)
|
4
4
|
|
5
|
-
Assistance helpers and custom type for easy testing [Gruf](https://github.com/bigcommerce/gruf) controllers with
|
5
|
+
Assistance helpers and custom type for easy testing [Gruf](https://github.com/bigcommerce/gruf) controllers with
|
6
6
|
[RSpec](https://github.com/rspec/rspec).
|
7
7
|
|
8
8
|
## Installation
|
@@ -10,14 +10,8 @@ Assistance helpers and custom type for easy testing [Gruf](https://github.com/bi
|
|
10
10
|
```ruby
|
11
11
|
gem 'gruf-rspec'
|
12
12
|
```
|
13
|
-
|
14
|
-
Then add the following code to your `spec_helper.rb`:
|
15
13
|
|
16
|
-
|
17
|
-
require 'gruf/rspec'
|
18
|
-
```
|
19
|
-
|
20
|
-
Note that this gem requires at least Ruby 2.7+, Gruf 2.5.1+, and RSpec 3.8+.
|
14
|
+
Note that this gem requires at least Ruby 3.0+, Gruf 2.5.1+, and RSpec 3.8+.
|
21
15
|
|
22
16
|
## Usage
|
23
17
|
|
@@ -28,13 +22,13 @@ and the active_call_options. The third argument is optional.
|
|
28
22
|
|
29
23
|
## Example
|
30
24
|
|
31
|
-
Let's assume you have a gruf controller named `ThingController` that is bound to the gRPC
|
25
|
+
Let's assume you have a gruf controller named `ThingController` that is bound to the gRPC
|
32
26
|
service `Rpc::Things::Service`. That has a method `GetThing`:
|
33
27
|
|
34
28
|
```ruby
|
35
29
|
class ThingController < Gruf::Controllers::Base
|
36
30
|
bind ::Rpc::Things::Service
|
37
|
-
|
31
|
+
|
38
32
|
def get_thing
|
39
33
|
Rpc::GetThingResponse.new(id: request.message.id)
|
40
34
|
end
|
@@ -45,7 +39,7 @@ To test it, you'd create `spec/rpc/thing_controller_spec.rb`:
|
|
45
39
|
|
46
40
|
```ruby
|
47
41
|
describe ThingController do
|
48
|
-
describe '
|
42
|
+
describe '#get_thing' do
|
49
43
|
let(:request_proto) { Rpc::GetThingRequest.new(id: rand(1..100)) }
|
50
44
|
let(:metadata) {
|
51
45
|
{ 'user_id' => 'axj42i' }
|
@@ -53,8 +47,8 @@ describe ThingController do
|
|
53
47
|
|
54
48
|
subject { run_rpc(:GetThing, request_proto, active_call_options: { metadata: metadata }) }
|
55
49
|
|
56
|
-
it '
|
57
|
-
expect(subject).to
|
50
|
+
it 'returns the thing' do
|
51
|
+
expect(subject).to be_a_successful_rpc
|
58
52
|
expect(subject.id).to eq request_proto.id
|
59
53
|
end
|
60
54
|
end
|
@@ -64,9 +58,9 @@ end
|
|
64
58
|
Alternatively, you can pass a block:
|
65
59
|
|
66
60
|
```ruby
|
67
|
-
it '
|
61
|
+
it 'returns the thing' do
|
68
62
|
run_rpc(:GetThing, request_proto) do |resp|
|
69
|
-
expect(resp).to
|
63
|
+
expect(resp).to be_a_successful_rpc
|
70
64
|
expect(resp.id).to eq request_proto.id
|
71
65
|
end
|
72
66
|
end
|
@@ -80,7 +74,7 @@ Note that you can also access the bound gRPC service class:
|
|
80
74
|
it 'binds the service correctly' do
|
81
75
|
expect(grpc_bound_service).to eq Rpc::Things::Service
|
82
76
|
end
|
83
|
-
```
|
77
|
+
```
|
84
78
|
|
85
79
|
### Matching Errors
|
86
80
|
|
@@ -89,10 +83,10 @@ You can match against errors as well:
|
|
89
83
|
```ruby
|
90
84
|
describe 'testing an error' do
|
91
85
|
let(:request_proto) { Rpc::GetThingRequest.new(id: rand(1..100)) }
|
92
|
-
|
86
|
+
|
93
87
|
subject { run_rpc(:GetThing, request_proto) }
|
94
|
-
|
95
|
-
it '
|
88
|
+
|
89
|
+
it 'fails with the appropriate error' do
|
96
90
|
expect { subject }.to raise_rpc_error(GRPC::InvalidArgument)
|
97
91
|
end
|
98
92
|
end
|
@@ -101,15 +95,15 @@ end
|
|
101
95
|
Or further, even check your serialized error that is passed in metadata:
|
102
96
|
|
103
97
|
```ruby
|
104
|
-
it '
|
98
|
+
it 'fails with the appropriate error code' do
|
105
99
|
expect { subject }.to raise_rpc_error(GRPC::InvalidArgument).with_serialized { |err|
|
106
100
|
expect(err).to be_a(MyCustomErrorClass)
|
107
101
|
expect(err.error_code).to eq 'invalid_request'
|
108
|
-
|
102
|
+
|
109
103
|
fe = err.field_errors.first
|
110
104
|
expect(fe.field_name).to eq 'name'
|
111
105
|
expect(fe.error_code).to eq 'invalid_name'
|
112
|
-
expect(fe.error_message).to eq
|
106
|
+
expect(fe.error_message).to eq 'That name is already taken!'
|
113
107
|
}
|
114
108
|
end
|
115
109
|
```
|
@@ -117,7 +111,6 @@ end
|
|
117
111
|
Note that when using `with_serialized`, you _must_ pass the block with `{ }`, not using
|
118
112
|
`do` and `end`.
|
119
113
|
|
120
|
-
|
121
114
|
### RSpec Controller Matcher Configuration
|
122
115
|
|
123
116
|
By default, the type matcher for Gruf controllers matches in `/spec/rpc`. You can customize this by configuring it
|
@@ -129,7 +122,7 @@ Gruf::Rspec.configure do |c|
|
|
129
122
|
end
|
130
123
|
```
|
131
124
|
|
132
|
-
Alternatively, you can pass configuration of the path via ENV. For example, where
|
125
|
+
Alternatively, you can pass configuration of the path via ENV. For example, where
|
133
126
|
`RPC_SPEC_PATH="/spec/rpc_controllers"` is set in a `.env` file:
|
134
127
|
|
135
128
|
```bash
|
data/gruf-rspec.gemspec
CHANGED
@@ -15,9 +15,7 @@
|
|
15
15
|
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
16
16
|
# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
17
17
|
#
|
18
|
-
|
19
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
20
|
-
require 'gruf/rspec/version'
|
18
|
+
require_relative 'lib/gruf/rspec/version'
|
21
19
|
|
22
20
|
Gem::Specification.new do |spec|
|
23
21
|
spec.name = 'gruf-rspec'
|
@@ -30,17 +28,14 @@ Gem::Specification.new do |spec|
|
|
30
28
|
spec.description = 'RSpec assistance library for gruf, including testing helpers'
|
31
29
|
spec.homepage = 'https://github.com/bigcommerce/gruf-rspec'
|
32
30
|
|
33
|
-
spec.required_ruby_version = '>=
|
31
|
+
spec.required_ruby_version = '>= 3.0', '< 4'
|
32
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
34
33
|
|
35
34
|
spec.files = Dir['README.md', 'CHANGELOG.md', 'CODE_OF_CONDUCT.md', 'lib/**/*', 'gruf-rspec.gemspec']
|
36
|
-
spec.require_paths = [
|
37
|
-
|
38
|
-
spec.add_development_dependency 'bundler-audit', '>= 0.6'
|
39
|
-
spec.add_development_dependency 'pry', '>= 0.13'
|
40
|
-
spec.add_development_dependency 'rspec_junit_formatter', '>= 0.4'
|
41
|
-
spec.add_development_dependency 'rubocop', '>= 0.82'
|
42
|
-
spec.add_development_dependency 'simplecov', '>= 0.15'
|
35
|
+
spec.require_paths = %w[lib]
|
43
36
|
|
44
37
|
spec.add_runtime_dependency 'gruf', '~> 2.5', '>= 2.5.1'
|
38
|
+
spec.add_runtime_dependency 'rake', '>= 12.3'
|
45
39
|
spec.add_runtime_dependency 'rspec', '>= 3.8'
|
40
|
+
spec.add_runtime_dependency 'zeitwerk', '>= 2'
|
46
41
|
end
|
@@ -15,9 +15,6 @@
|
|
15
15
|
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
16
16
|
# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
17
17
|
#
|
18
|
-
require_relative 'authentication_hydrators/base'
|
19
|
-
require_relative 'authentication_hydrators/basic'
|
20
|
-
|
21
18
|
module Gruf
|
22
19
|
module Rspec
|
23
20
|
##
|
data/lib/gruf/rspec/helpers.rb
CHANGED
@@ -15,8 +15,6 @@
|
|
15
15
|
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
16
16
|
# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
17
17
|
#
|
18
|
-
require_relative 'metadata_factory'
|
19
|
-
|
20
18
|
module Gruf
|
21
19
|
module Rspec
|
22
20
|
##
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright (c) 2022-present, BigCommerce Pty. Ltd. All rights reserved
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
6
|
+
# documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
|
7
|
+
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
8
|
+
# persons to whom the Software is furnished to do so, subject to the following conditions:
|
9
|
+
#
|
10
|
+
# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
11
|
+
# Software.
|
12
|
+
#
|
13
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
14
|
+
# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
15
|
+
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
16
|
+
# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
17
|
+
#
|
18
|
+
module Gruf
|
19
|
+
module Rspec
|
20
|
+
##
|
21
|
+
# Rails integration for gruf-rspec
|
22
|
+
#
|
23
|
+
class Railtie < ::Rails::Railtie
|
24
|
+
initializer 'gruf-rspec.initializer' do |_app|
|
25
|
+
config.after_initialize do
|
26
|
+
::Gruf.autoloaders.load!(controllers_path: ::Gruf.controllers_path) if ::Gruf.respond_to?(:autoloaders)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/gruf/rspec/version.rb
CHANGED
data/lib/gruf/rspec.rb
CHANGED
@@ -26,10 +26,15 @@ rescue LoadError # old rspec compat
|
|
26
26
|
GRUF_RSPEC_RUNNER = Spec::Runner
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
# use Zeitwerk to lazily autoload all the files in the lib directory
|
30
|
+
require 'zeitwerk'
|
31
|
+
lib_path = File.dirname(__dir__)
|
32
|
+
loader = ::Zeitwerk::Loader.new
|
33
|
+
loader.tag = 'gruf-rspec'
|
34
|
+
loader.inflector = ::Zeitwerk::GemInflector.new(__FILE__)
|
35
|
+
loader.ignore("#{lib_path}/gruf/rspec/railtie.rb")
|
36
|
+
loader.push_dir(lib_path)
|
37
|
+
loader.setup
|
33
38
|
|
34
39
|
##
|
35
40
|
# Base gruf module
|
@@ -45,6 +50,14 @@ end
|
|
45
50
|
|
46
51
|
Gruf::Rspec.reset # initial reset
|
47
52
|
|
53
|
+
# Attempt to load railtie if we're in a rails environment. This assists with autoloading in a rails rspec context
|
54
|
+
begin
|
55
|
+
require 'rails'
|
56
|
+
rescue LoadError
|
57
|
+
nil
|
58
|
+
end
|
59
|
+
require_relative 'rspec/railtie' if defined?(::Rails::Railtie)
|
60
|
+
|
48
61
|
GRUF_RSPEC_RUNNER.configure do |config|
|
49
62
|
config.include Gruf::Rspec::Helpers
|
50
63
|
|
metadata
CHANGED
@@ -1,119 +1,77 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gruf-rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shaun McCormick
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.6'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0.6'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: pry
|
14
|
+
name: gruf
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
|
-
- - "
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0.13'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
17
|
+
- - "~>"
|
39
18
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec_junit_formatter
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
19
|
+
version: '2.5'
|
45
20
|
- - ">="
|
46
21
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
22
|
+
version: 2.5.1
|
23
|
+
type: :runtime
|
49
24
|
prerelease: false
|
50
25
|
version_requirements: !ruby/object:Gem::Requirement
|
51
26
|
requirements:
|
52
|
-
- - "
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0.4'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rubocop
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
27
|
+
- - "~>"
|
60
28
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
29
|
+
version: '2.5'
|
66
30
|
- - ">="
|
67
31
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
32
|
+
version: 2.5.1
|
69
33
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
34
|
+
name: rake
|
71
35
|
requirement: !ruby/object:Gem::Requirement
|
72
36
|
requirements:
|
73
37
|
- - ">="
|
74
38
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
76
|
-
type: :
|
39
|
+
version: '12.3'
|
40
|
+
type: :runtime
|
77
41
|
prerelease: false
|
78
42
|
version_requirements: !ruby/object:Gem::Requirement
|
79
43
|
requirements:
|
80
44
|
- - ">="
|
81
45
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
46
|
+
version: '12.3'
|
83
47
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
48
|
+
name: rspec
|
85
49
|
requirement: !ruby/object:Gem::Requirement
|
86
50
|
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '2.5'
|
90
51
|
- - ">="
|
91
52
|
- !ruby/object:Gem::Version
|
92
|
-
version:
|
53
|
+
version: '3.8'
|
93
54
|
type: :runtime
|
94
55
|
prerelease: false
|
95
56
|
version_requirements: !ruby/object:Gem::Requirement
|
96
57
|
requirements:
|
97
|
-
- - "~>"
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: '2.5'
|
100
58
|
- - ">="
|
101
59
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
60
|
+
version: '3.8'
|
103
61
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
62
|
+
name: zeitwerk
|
105
63
|
requirement: !ruby/object:Gem::Requirement
|
106
64
|
requirements:
|
107
65
|
- - ">="
|
108
66
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
67
|
+
version: '2'
|
110
68
|
type: :runtime
|
111
69
|
prerelease: false
|
112
70
|
version_requirements: !ruby/object:Gem::Requirement
|
113
71
|
requirements:
|
114
72
|
- - ">="
|
115
73
|
- !ruby/object:Gem::Version
|
116
|
-
version: '
|
74
|
+
version: '2'
|
117
75
|
description: RSpec assistance library for gruf, including testing helpers
|
118
76
|
email:
|
119
77
|
- splittingred@gmail.com
|
@@ -132,11 +90,13 @@ files:
|
|
132
90
|
- lib/gruf/rspec/error_matcher.rb
|
133
91
|
- lib/gruf/rspec/helpers.rb
|
134
92
|
- lib/gruf/rspec/metadata_factory.rb
|
93
|
+
- lib/gruf/rspec/railtie.rb
|
135
94
|
- lib/gruf/rspec/version.rb
|
136
95
|
homepage: https://github.com/bigcommerce/gruf-rspec
|
137
96
|
licenses:
|
138
97
|
- MIT
|
139
|
-
metadata:
|
98
|
+
metadata:
|
99
|
+
rubygems_mfa_required: 'true'
|
140
100
|
post_install_message:
|
141
101
|
rdoc_options: []
|
142
102
|
require_paths:
|
@@ -145,14 +105,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
145
105
|
requirements:
|
146
106
|
- - ">="
|
147
107
|
- !ruby/object:Gem::Version
|
148
|
-
version: '
|
108
|
+
version: '3.0'
|
109
|
+
- - "<"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '4'
|
149
112
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
113
|
requirements:
|
151
114
|
- - ">="
|
152
115
|
- !ruby/object:Gem::Version
|
153
116
|
version: '0'
|
154
117
|
requirements: []
|
155
|
-
rubygems_version: 3.
|
118
|
+
rubygems_version: 3.5.3
|
156
119
|
signing_key:
|
157
120
|
specification_version: 4
|
158
121
|
summary: RSpec assistance library for gruf
|