beaker-vmpooler 1.2.0 → 1.4.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 +5 -13
- data/.github/dependabot.yml +8 -0
- data/.github/workflows/test.yml +26 -0
- data/CODEOWNERS +1 -0
- data/Gemfile +3 -3
- data/README.md +21 -2
- data/beaker-vmpooler.gemspec +7 -2
- data/lib/beaker-vmpooler/version.rb +1 -1
- data/lib/beaker/hypervisor/vmpooler.rb +14 -21
- data/spec/beaker/hypervisor/vmpooler_spec.rb +24 -93
- metadata +33 -31
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZjI4NTIxYzg4ZmVhYzE3ZTc4NjcxOGUwMDdiMjBhOWNlMjE1MTUyMA==
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6d1691a4a15f960385c5d8041e285b4fc23f45f33996e8bf71d165f066256e68
|
4
|
+
data.tar.gz: cf3cc37f0a2cb87cc8b1df85dafde1a5ac0e64de4fec80ebbe00d7be96e6afae
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
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,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'] || '~>
|
22
|
-
gem "beaker-abs"
|
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).
|
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
|
|
data/beaker-vmpooler.gemspec
CHANGED
@@ -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
|
-
|
24
|
-
|
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
|
|
@@ -27,33 +27,21 @@ module Beaker
|
|
27
27
|
|
28
28
|
def load_credentials(dot_fog = '.fog')
|
29
29
|
creds = {}
|
30
|
-
|
31
|
-
|
32
|
-
if fog[:
|
33
|
-
creds[:vmpooler_token] = fog[:
|
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 "
|
35
|
+
@logger.warn "vmpooler_token not found in credentials file (#{dot_fog})\nProceeding without authentication"
|
36
36
|
end
|
37
|
-
|
38
|
-
@logger.warn "
|
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
|
-
[
|
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
|
-
|
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.
|
150
|
+
vm_count = vmpooler.instance_variable_get( :@hosts ).count
|
157
151
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
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 '
|
185
|
-
|
186
|
-
|
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
|
-
|
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
|
211
|
-
|
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
|
-
|
214
|
-
|
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(
|
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 '
|
236
|
-
|
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
|
-
|
239
|
-
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.
|
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:
|
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: '
|
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: '
|
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
|
-
- .
|
162
|
-
- .
|
163
|
-
- .
|
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
|
-
|
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!
|