beaker-vmpooler 1.2.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NGM3ODk5NTJiZTVlNWUwZjliMjAxMTgyNmM0NWZkYjEzNmUzYmJlNw==
5
- data.tar.gz: !binary |-
6
- ZjI4NTIxYzg4ZmVhYzE3ZTc4NjcxOGUwMDdiMjBhOWNlMjE1MTUyMA==
2
+ SHA256:
3
+ metadata.gz: 6d1691a4a15f960385c5d8041e285b4fc23f45f33996e8bf71d165f066256e68
4
+ data.tar.gz: cf3cc37f0a2cb87cc8b1df85dafde1a5ac0e64de4fec80ebbe00d7be96e6afae
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YzM3NjEyMzAwM2YxN2RhM2Y2MWNiNmIwYjYxNmVhOGFjYWE1NWY2OGI2ZTBh
10
- NmZjMTQ3ZDZiMjk5NDU3NWRiNTk1ZTQ0MmQ4OGQzNDE1ZGVhMGIyNzhiODEx
11
- NDliZWY3N2FkMzRkMDc2ZDIzODQyMTYwMDUyZDZlZTNiOGI0MTI=
12
- data.tar.gz: !binary |-
13
- NmUyYTc2ZDg2YmM4MmI5YzI0NTE1Yjc5YTlhZjFkNDk1NGM4MDIzMzBmNDIx
14
- MzRjMTI3ZDhkMmYwOTQ5NTkwZWMwNjU5OWIyYWMwYmY5YTEzODZlMDBkZjll
15
- YWEzZTI0YWVmM2M0NGFmZjYzNWI1MzJiNDBlMTQ2YzNhZmIwM2I=
6
+ metadata.gz: 2e4dc2ae575c94cdacc891ceefdff027d7e6524bb209475e8b802adfbbcf266f856cc76b60ed9b8b305dcbecbe33c25679b17d8b9a792015f37b2b0dc7989f4d
7
+ data.tar.gz: 26d647464683ff718032126a19b50c7d072c0c6a34771b9237cb9ae543929ac42f8cc81cd02ba8aee6155eeaff56ec98dc48d07b7e2649b21b6b8b60dae6481b
@@ -0,0 +1,8 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ time: "13:00"
8
+ open-pull-requests-limit: 10
@@ -0,0 +1,26 @@
1
+ name: Test
2
+
3
+ on:
4
+ - pull_request
5
+ - push
6
+
7
+ jobs:
8
+ test:
9
+ runs-on: ubuntu-latest
10
+ strategy:
11
+ fail-fast: false
12
+ matrix:
13
+ ruby:
14
+ - "2.5"
15
+ - "2.6"
16
+ - "2.7"
17
+ name: Ruby ${{ matrix.ruby }}
18
+ steps:
19
+ - uses: actions/checkout@v2
20
+ - name: Install Ruby ${{ matrix.ruby }}
21
+ uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: ${{ matrix.ruby }}
24
+ bundler-cache: true
25
+ - name: Run tests
26
+ run: bundle exec rake test:spec
data/CODEOWNERS ADDED
@@ -0,0 +1 @@
1
+ * @puppetlabs/beaker
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source ENV['GEM_SOURCE'] || "https://rubygems.org"
2
2
 
3
- gemspec
3
+ gemspec :development_group => :acceptance_testing
4
4
 
5
5
 
6
6
 
@@ -18,8 +18,8 @@ end
18
18
  # We don't put beaker in as a test dependency because we
19
19
  # don't want to create a transitive dependency
20
20
  group :acceptance_testing do
21
- gem "beaker", *location_for(ENV['BEAKER_VERSION'] || '~> 3.0')
22
- gem "beaker-abs", *location_for(ENV['ABS_VERSION'] || '~> 0.3.0')
21
+ gem "beaker", *location_for(ENV['BEAKER_VERSION'] || '~> 4.0')
22
+ gem "beaker-abs"
23
23
  end
24
24
 
25
25
 
data/README.md CHANGED
@@ -3,8 +3,27 @@
3
3
  Beaker library to use vmpooler hypervisor
4
4
 
5
5
  # How to use this wizardry
6
-
7
- This is a gem that allows you to use hosts with [vmpooler](vmpooler.md) hypervisor with [beaker](https://github.com/puppetlabs/beaker). This gem is already included as [beaker dependency](https://github.com/puppetlabs/beaker/blob/master/beaker.gemspec#L59) for you, so you don't need to do anything special to use this gem's functionality with beaker.
6
+
7
+ This is a gem that allows you to use hosts with [vmpooler](vmpooler.md) hypervisor with [beaker](https://github.com/puppetlabs/beaker).
8
+
9
+ Beaker will automatically load the appropriate hypervisors for any given hosts file, so as long as your project dependencies are satisfied there's nothing else to do. No need to `require` this library in your tests.
10
+
11
+ ## With Beaker 3.x
12
+
13
+ This library is included as a dependency of Beaker 3.x versions, so there's nothing to do.
14
+
15
+ ## With Beaker 4.x
16
+
17
+ As of Beaker 4.0, all hypervisor and DSL extension libraries have been removed and are no longer dependencies. In order to use a specific hypervisor or DSL extension library in your project, you will need to include them alongside Beaker in your Gemfile or project.gemspec. E.g.
18
+
19
+ ~~~ruby
20
+ # Gemfile
21
+ gem 'beaker', '~>4.0'
22
+ gem 'beaker-vmpooler'
23
+ # project.gemspec
24
+ s.add_runtime_dependency 'beaker', '~>4.0'
25
+ s.add_runtime_dependency 'beaker-vmpooler'
26
+ ~~~
8
27
 
9
28
  # Spec tests
10
29
 
@@ -20,8 +20,13 @@ Gem::Specification.new do |s|
20
20
  # Testing dependencies
21
21
  s.add_development_dependency 'rspec', '~> 3.0'
22
22
  s.add_development_dependency 'rspec-its'
23
- s.add_development_dependency 'fakefs', '~> 0.6'
24
- s.add_development_dependency 'rake', '~> 10.1'
23
+ # pin fakefs for Ruby < 2.3
24
+ if RUBY_VERSION < "2.3"
25
+ s.add_development_dependency 'fakefs', '~> 0.6', '< 0.14'
26
+ else
27
+ s.add_development_dependency 'fakefs', '~> 0.6'
28
+ end
29
+ s.add_development_dependency 'rake', '~> 13.0'
25
30
  s.add_development_dependency 'simplecov'
26
31
  s.add_development_dependency 'pry', '~> 0.10'
27
32
 
@@ -1,3 +1,3 @@
1
1
  module BeakerVmpooler
2
- VERSION = '1.2.0'
2
+ VERSION = '1.4.0'
3
3
  end
@@ -27,33 +27,21 @@ module Beaker
27
27
 
28
28
  def load_credentials(dot_fog = '.fog')
29
29
  creds = {}
30
-
31
- if fog = read_fog_file(dot_fog)
32
- if fog[:default] && fog[:default][:vmpooler_token]
33
- creds[:vmpooler_token] = fog[:default][:vmpooler_token]
30
+ begin
31
+ fog = get_fog_credentials(dot_fog)
32
+ if fog[:vmpooler_token]
33
+ creds[:vmpooler_token] = fog[:vmpooler_token]
34
34
  else
35
- @logger.warn "Credentials file (#{dot_fog}) is missing a :default section with a :vmpooler_token value; proceeding without authentication"
35
+ @logger.warn "vmpooler_token not found in credentials file (#{dot_fog})\nProceeding without authentication"
36
36
  end
37
- else
38
- @logger.warn "Credentials file (#{dot_fog}) is empty; proceeding without authentication"
37
+ rescue ArgumentError => e
38
+ @logger.warn "Invalid credentials file:\n(#{e.class}) #{e.message}\nProceeding without authentication"
39
39
  end
40
-
41
40
  creds
42
-
43
- rescue TypeError, Psych::SyntaxError => e
44
- @logger.warn "#{e.class}: Credentials file (#{dot_fog}) has invalid syntax; proceeding without authentication"
45
- creds
46
- rescue Errno::ENOENT
47
- @logger.warn "Credentials file (#{dot_fog}) not found; proceeding without authentication"
48
- creds
49
- end
50
-
51
- def read_fog_file(dot_fog = '.fog')
52
- YAML.load_file(dot_fog)
53
41
  end
54
42
 
55
43
  def connection_preference(host)
56
- ['vmhostname', 'ip', 'hostname']
44
+ [:vmhostname, :ip, :hostname]
57
45
  end
58
46
 
59
47
  def check_url url
@@ -126,6 +114,7 @@ module Beaker
126
114
  uri = URI.parse(@options['pooling_api'] + '/vm/')
127
115
 
128
116
  http = Net::HTTP.new(uri.host, uri.port)
117
+ http.use_ssl = uri.instance_of?(URI::HTTPS)
129
118
  request = Net::HTTP::Post.new(uri.request_uri)
130
119
 
131
120
  if @credentials[:vmpooler_token]
@@ -181,7 +170,7 @@ module Beaker
181
170
  @logger.debug("Retrying provision for vmpooler host after waiting #{wait} second(s)")
182
171
  sleep wait
183
172
  waited += wait
184
- last_wait, wait = wait, last_wait + wait
173
+ last_wait, wait = wait, [last_wait + wait, 15].min + rand(5)
185
174
  retry
186
175
  end
187
176
  report_and_raise(@logger, e, 'Vmpooler.provision')
@@ -197,6 +186,7 @@ module Beaker
197
186
  uri = URI.parse(@options[:pooling_api] + '/vm/' + h['vmhostname'].split('.')[0])
198
187
 
199
188
  http = Net::HTTP.new(uri.host, uri.port)
189
+ http.use_ssl = uri.instance_of?(URI::HTTPS)
200
190
  request = Net::HTTP::Put.new(uri.request_uri)
201
191
 
202
192
  # merge pre-defined tags with host tags
@@ -262,6 +252,7 @@ module Beaker
262
252
  uri = URI.parse(get_template_url(@options['pooling_api'], name))
263
253
 
264
254
  http = Net::HTTP.new( uri.host, uri.port )
255
+ http.use_ssl = uri.instance_of?(URI::HTTPS)
265
256
  request = Net::HTTP::Delete.new(uri.request_uri)
266
257
 
267
258
  if @credentials[:vmpooler_token]
@@ -289,6 +280,7 @@ module Beaker
289
280
  uri = URI.parse(@options[:pooling_api] + '/api/v1/vm/' + hostname + '/disk/' + disk_size.to_s)
290
281
 
291
282
  http = Net::HTTP.new(uri.host, uri.port)
283
+ http.use_ssl = uri.instance_of?(URI::HTTPS)
292
284
  request = Net::HTTP::Post.new(uri.request_uri)
293
285
  request['X-AUTH-TOKEN'] = @credentials[:vmpooler_token]
294
286
 
@@ -321,6 +313,7 @@ module Beaker
321
313
  uri = URI.parse(@options[:pooling_api] + '/vm/' + hostname)
322
314
 
323
315
  http = Net::HTTP.new(uri.host, uri.port)
316
+ http.use_ssl = uri.instance_of?(URI::HTTPS)
324
317
  request = Net::HTTP::Get.new(uri.request_uri)
325
318
 
326
319
  response = http.request(request)
@@ -4,11 +4,8 @@ module Beaker
4
4
  describe Vmpooler do
5
5
 
6
6
  before :each do
7
- vms = make_hosts()
8
- MockVsphereHelper.set_config( fog_file_contents )
9
- MockVsphereHelper.set_vms( vms )
10
- stub_const( "VsphereHelper", MockVsphereHelper )
11
7
  stub_const( "Net", MockNet )
8
+ allow_any_instance_of(MockNet::HTTP).to receive(:use_ssl=)
12
9
  allow( JSON ).to receive( :parse ) do |arg|
13
10
  arg
14
11
  end
@@ -147,20 +144,15 @@ module Beaker
147
144
  describe "#cleanup" do
148
145
 
149
146
  it "cleans up hosts in the pool" do
150
- MockVsphereHelper.powerOn
151
-
147
+ mock_http = MockNet::HTTP.new( "host", "port" )
152
148
  vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts )
153
- allow( vmpooler ).to receive( :require ).and_return( true )
154
- allow( vmpooler ).to receive( :sleep ).and_return( true )
155
149
  vmpooler.provision
156
- vmpooler.cleanup
150
+ vm_count = vmpooler.instance_variable_get( :@hosts ).count
157
151
 
158
- hosts = vmpooler.instance_variable_get( :@hosts )
159
- hosts.each do | host |
160
- name = host.name
161
- vm = MockVsphereHelper.find_vm( name )
162
- expect( vm.runtime.powerState ).to be === "poweredOn" #handed back to the pool, stays on
163
- end
152
+ expect( Net::HTTP ).to receive( :new ).exactly( vm_count ).times.and_return( mock_http )
153
+ expect( mock_http ).to receive( :request ).exactly( vm_count ).times
154
+ expect( Net::HTTP::Delete ).to receive( :new ).exactly( vm_count ).times
155
+ expect{ vmpooler.cleanup }.to_not raise_error
164
156
  end
165
157
  end
166
158
  end
@@ -168,10 +160,6 @@ module Beaker
168
160
  describe Vmpooler do
169
161
 
170
162
  before :each do
171
- vms = make_hosts()
172
- MockVsphereHelper.set_config( fog_file_contents )
173
- MockVsphereHelper.set_vms( vms )
174
- stub_const( "VsphereHelper", MockVsphereHelper )
175
163
  stub_const( "Net", MockNet )
176
164
  allow( JSON ).to receive( :parse ) do |arg|
177
165
  arg
@@ -181,95 +169,38 @@ module Beaker
181
169
 
182
170
  describe "#load_credentials" do
183
171
 
184
- it 'continues without credentials when fog file is missing' do
185
- allow_any_instance_of( Beaker::Vmpooler ).to \
186
- receive(:read_fog_file).and_raise(Errno::ENOENT.new)
187
-
188
- vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts )
189
- expect( vmpooler.credentials ).to be == {}
190
- end
191
-
192
- it 'continues without credentials when fog file is empty' do
193
- allow_any_instance_of( Beaker::Vmpooler ).to \
194
- receive(:read_fog_file).and_return(false)
195
-
196
- vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts )
197
- expect( vmpooler.credentials ).to be == {}
198
- end
199
-
200
- it 'continues without credentials when fog file contains no :default section' do
201
- data = { :some => { :other => :data } }
172
+ it 'loads credentials from a fog file' do
173
+ credentials = { :vmpooler_token => "example_token" }
174
+ make_opts = { :dot_fog => '.fog' }
202
175
 
203
- allow_any_instance_of( Beaker::Vmpooler ).to \
204
- receive(:read_fog_file).and_return(data)
176
+ expect_any_instance_of( Beaker::Vmpooler ).to receive( :get_fog_credentials ).and_return(credentials)
205
177
 
206
178
  vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts )
207
- expect( vmpooler.credentials ).to be == { }
179
+ expect( vmpooler.credentials ).to be == credentials
208
180
  end
209
181
 
210
- it 'continues without credentials when fog file :default section has no :vmpooler_token' do
211
- data = { :default => { :something_else => "TOKEN" } }
182
+ it 'continues without credentials when there are problems loading the fog file' do
183
+ logger = double( 'logger' )
184
+ make_opts = { :logger => logger, :dot_fog => '.fog' }
212
185
 
213
- allow_any_instance_of( Beaker::Vmpooler ).to \
214
- receive(:read_fog_file).and_return(data)
186
+ expect_any_instance_of( Beaker::Vmpooler ).to receive( :get_fog_credentials ).and_raise( ArgumentError, 'something went wrong' )
187
+ expect( logger ).to receive( :warn ).with( /Invalid credentials file.*something went wrong.*Proceeding without authentication/m )
215
188
 
216
189
  vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts )
217
- expect( vmpooler.credentials ).to be == { }
218
- end
219
-
220
- it 'continues without credentials when there are formatting errors in the fog file' do
221
- data = { "'default'" => { :vmpooler_token => "b2wl8prqe6ddoii70md" } }
222
-
223
- allow_any_instance_of( Beaker::Vmpooler ).to \
224
- receive(:read_fog_file).and_return(data)
225
-
226
- logger = double('logger')
227
190
 
228
- expect(logger).to receive(:warn).with(/is missing a :default section with a :vmpooler_token value/)
229
- make_opts = {:logger => logger}
230
-
231
- vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts )
232
- expect( vmpooler.credentials ).to be == { }
191
+ expect( vmpooler.credentials ).to be == {}
233
192
  end
234
193
 
235
- it 'throws a TypeError and continues without credentials when there are syntax errors in the fog file' do
236
- data = "'default'\n :vmpooler_token: z2wl8prqe0ddoii70ad"
194
+ it 'continues without credentials when fog file has no vmpooler_token' do
195
+ logger = double( 'logger' )
196
+ make_opts = { :logger => logger, :dot_fog => '.fog' }
237
197
 
238
- allow( File ).to receive( :open ).and_yield( StringIO.new(data) )
239
- logger = double('logger')
240
-
241
- expect(logger).to receive(:warn).with(/TypeError: .* has invalid syntax/)
242
- make_opts = {:logger => logger}
198
+ expect_any_instance_of( Beaker::Vmpooler ).to receive( :get_fog_credentials ).and_return( {} )
199
+ expect( logger ).to receive( :warn ).with( /vmpooler_token not found in credentials file.*Proceeding without authentication/m )
243
200
 
244
201
  vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts )
245
202
 
246
- expect( vmpooler.credentials ).to be == { }
247
- end
248
-
249
- it 'throws a Psych::SyntaxError and continues without credentials when there are syntax errors in the fog file' do
250
-
251
- data = ";default;\n :vmpooler_token: z2wl8prqe0ddoii707d"
252
-
253
- allow( File ).to receive( :open ).and_yield( StringIO.new(data) )
254
-
255
- logger = double('logger')
256
-
257
- expect(logger).to receive(:warn).with(/Psych::SyntaxError: .* invalid syntax/)
258
- make_opts = {:logger => logger}
259
-
260
- vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts )
261
-
262
- expect( vmpooler.credentials ).to be == { }
263
- end
264
-
265
- it 'stores vmpooler token when found in fog file' do
266
- data = { :default => { :vmpooler_token => "TOKEN" } }
267
-
268
- allow_any_instance_of( Beaker::Vmpooler ).to \
269
- receive(:read_fog_file).and_return(data)
270
-
271
- vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts )
272
- expect( vmpooler.credentials ).to be == { :vmpooler_token => "TOKEN" }
203
+ expect( vmpooler.credentials ).to be == {}
273
204
  end
274
205
  end
275
206
  end
metadata CHANGED
@@ -1,153 +1,153 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker-vmpooler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rishi Javia, Kevin Imber, Tony Vu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-04 00:00:00.000000000 Z
11
+ date: 2021-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec-its
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: fakefs
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0.6'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.6'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '10.1'
61
+ version: '13.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: '10.1'
68
+ version: '13.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ! '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
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
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pry
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0.10'
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
96
  version: '0.10'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: yard
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ! '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
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
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: markdown
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ! '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
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
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: thin
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ! '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ! '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: stringify-hash
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ~>
143
+ - - "~>"
144
144
  - !ruby/object:Gem::Version
145
145
  version: 0.0.0
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ~>
150
+ - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: 0.0.0
153
153
  description: For use for the Beaker acceptance testing tool
@@ -158,9 +158,12 @@ executables:
158
158
  extensions: []
159
159
  extra_rdoc_files: []
160
160
  files:
161
- - .gitignore
162
- - .rspec
163
- - .simplecov
161
+ - ".github/dependabot.yml"
162
+ - ".github/workflows/test.yml"
163
+ - ".gitignore"
164
+ - ".rspec"
165
+ - ".simplecov"
166
+ - CODEOWNERS
164
167
  - Gemfile
165
168
  - LICENSE
166
169
  - README.md
@@ -182,17 +185,16 @@ require_paths:
182
185
  - lib
183
186
  required_ruby_version: !ruby/object:Gem::Requirement
184
187
  requirements:
185
- - - ! '>='
188
+ - - ">="
186
189
  - !ruby/object:Gem::Version
187
190
  version: '0'
188
191
  required_rubygems_version: !ruby/object:Gem::Requirement
189
192
  requirements:
190
- - - ! '>='
193
+ - - ">="
191
194
  - !ruby/object:Gem::Version
192
195
  version: '0'
193
196
  requirements: []
194
- rubyforge_project:
195
- rubygems_version: 2.4.8
197
+ rubygems_version: 3.0.8
196
198
  signing_key:
197
199
  specification_version: 4
198
200
  summary: Beaker DSL Extension Helpers!