beaker 2.34.0 → 2.35.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 +8 -8
- data/HISTORY.md +95 -2
- data/README.md +1 -1
- data/lib/beaker/dsl/install_utils/foss_utils.rb +15 -62
- data/lib/beaker/host.rb +36 -7
- data/lib/beaker/host/mac.rb +0 -42
- data/lib/beaker/host/mac/pkg.rb +80 -0
- data/lib/beaker/host/unix.rb +0 -95
- data/lib/beaker/host/unix/pkg.rb +212 -0
- data/lib/beaker/host/windows.rb +0 -22
- data/lib/beaker/host/windows/pkg.rb +44 -0
- data/lib/beaker/hypervisor.rb +4 -2
- data/lib/beaker/hypervisor/docker.rb +1 -1
- data/lib/beaker/network_manager.rb +1 -0
- data/lib/beaker/options/command_line_parser.rb +0 -1
- data/lib/beaker/result.rb +7 -0
- data/lib/beaker/ssh_connection.rb +4 -11
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/dsl/install_utils/foss_utils_spec.rb +1 -36
- data/spec/beaker/host/unix/pkg_spec.rb +87 -0
- data/spec/beaker/host/unix_spec.rb +20 -0
- data/spec/beaker/host_spec.rb +18 -19
- data/spec/beaker/hypervisor/docker_spec.rb +10 -0
- data/spec/beaker/hypervisor/hypervisor_spec.rb +19 -0
- metadata +2 -2
@@ -162,11 +162,6 @@ module Beaker
|
|
162
162
|
stderr_callback = stdout_callback
|
163
163
|
|
164
164
|
result = Result.new(@hostname, command)
|
165
|
-
# why are we getting to this point on a dry run anyways?
|
166
|
-
# also... the host creates connections through the class method,
|
167
|
-
# which automatically connects, so you can't do a dry run unless you also
|
168
|
-
# can connect to your hosts?
|
169
|
-
return result if options[:dry_run]
|
170
165
|
|
171
166
|
@ssh.open_channel do |channel|
|
172
167
|
request_terminal_for( channel, command ) if options[:pty]
|
@@ -267,8 +262,7 @@ module Beaker
|
|
267
262
|
channel.eof!
|
268
263
|
end
|
269
264
|
|
270
|
-
def scp_to source, target, options = {}
|
271
|
-
return if dry_run
|
265
|
+
def scp_to source, target, options = {}
|
272
266
|
|
273
267
|
local_opts = options.dup
|
274
268
|
if local_opts[:recursive].nil?
|
@@ -278,10 +272,10 @@ module Beaker
|
|
278
272
|
|
279
273
|
result = Result.new(@hostname, [source, target])
|
280
274
|
result.stdout = "\n"
|
275
|
+
|
281
276
|
@ssh.scp.upload! source, target, local_opts do |ch, name, sent, total|
|
282
277
|
result.stdout << "\tcopying %s: %10d/%d\n" % [name, sent, total]
|
283
278
|
end
|
284
|
-
|
285
279
|
# Setting these values allows reporting via result.log(test_name)
|
286
280
|
result.stdout << " SCP'ed file #{source} to #{@hostname}:#{target}"
|
287
281
|
|
@@ -292,8 +286,7 @@ module Beaker
|
|
292
286
|
return result
|
293
287
|
end
|
294
288
|
|
295
|
-
def scp_from source, target, options = {}
|
296
|
-
return if dry_run
|
289
|
+
def scp_from source, target, options = {}
|
297
290
|
|
298
291
|
local_opts = options.dup
|
299
292
|
if local_opts[:recursive].nil?
|
@@ -303,10 +296,10 @@ module Beaker
|
|
303
296
|
|
304
297
|
result = Result.new(@hostname, [source, target])
|
305
298
|
result.stdout = "\n"
|
299
|
+
|
306
300
|
@ssh.scp.download! source, target, local_opts do |ch, name, sent, total|
|
307
301
|
result.stdout << "\tcopying %s: %10d/%d\n" % [name, sent, total]
|
308
302
|
end
|
309
|
-
|
310
303
|
# Setting these values allows reporting via result.log(test_name)
|
311
304
|
result.stdout << " SCP'ed file #{@hostname}:#{source} to #{target}"
|
312
305
|
|
data/lib/beaker/version.rb
CHANGED
@@ -805,35 +805,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
805
805
|
|
806
806
|
describe '#install_puppet_agent_pe_promoted_repo_on' do
|
807
807
|
|
808
|
-
it 'splits the platform string version correctly to get ubuntu puppet-agent packages (format 9999)' do
|
809
|
-
platform = Object.new()
|
810
|
-
allow(platform).to receive(:to_array) { ['ubuntu', '9999', 'x42']}
|
811
|
-
host = basic_hosts.first
|
812
|
-
host['platform'] = platform
|
813
|
-
|
814
|
-
expect(subject).to receive(:fetch_http_file).once.with(/\/puppet-agent\//, "puppet-agent-ubuntu-99.99-x42.tar.gz", /ubuntu/)
|
815
|
-
expect(subject).to receive(:scp_to).once.with(host, /-ubuntu-99.99-x42\./, "/root")
|
816
|
-
expect(subject).to receive(:on).ordered.with(host, /^tar.*-ubuntu-99.99-x42/)
|
817
|
-
expect(subject).to receive(:on).ordered.with(host, /dpkg\ -i\ --force-all/)
|
818
|
-
expect(subject).to receive(:on).ordered.with(host, /apt-get\ update/)
|
819
|
-
|
820
|
-
subject.install_puppet_agent_pe_promoted_repo_on( host, {} )
|
821
|
-
end
|
822
|
-
|
823
|
-
it 'doesn\'t split the platform string version correctly to get ubuntu puppet-agent packages when unnecessary (format 99.99)' do
|
824
|
-
platform = Object.new()
|
825
|
-
allow(platform).to receive(:to_array) { ['ubuntu', '99.99', 'x42']}
|
826
|
-
host = basic_hosts.first
|
827
|
-
host['platform'] = platform
|
828
808
|
|
829
|
-
expect(subject).to receive(:fetch_http_file).once.with(/\/puppet-agent\//, "puppet-agent-ubuntu-99.99-x42.tar.gz", /ubuntu/)
|
830
|
-
expect(subject).to receive(:scp_to).once.with(host, /-ubuntu-99.99-x42\./, "/root")
|
831
|
-
expect(subject).to receive(:on).ordered.with(host, /^tar.*-ubuntu-99.99-x42/)
|
832
|
-
expect(subject).to receive(:on).ordered.with(host, /dpkg\ -i\ --force-all/)
|
833
|
-
expect(subject).to receive(:on).ordered.with(host, /apt-get\ update/)
|
834
|
-
|
835
|
-
subject.install_puppet_agent_pe_promoted_repo_on( host, {} )
|
836
|
-
end
|
837
809
|
|
838
810
|
end
|
839
811
|
|
@@ -1003,12 +975,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
1003
975
|
expect( subject ).to receive( :scp_to ).once.with(
|
1004
976
|
host, /#{release_file}$/, anything )
|
1005
977
|
|
1006
|
-
|
1007
|
-
allow( host ).to receive( :noask_file_text ).and_return( noask_text )
|
1008
|
-
expect( subject ).to receive( :create_remote_file ).with(
|
1009
|
-
host, /noask$/, noask_text )
|
1010
|
-
expect( subject ).to receive( :on ).with(
|
1011
|
-
host, /^gunzip.*#{release_file}.*pkgadd.*noask.*all$/ )
|
978
|
+
expect( host ).to receive( :solaris_install_local_package )
|
1012
979
|
|
1013
980
|
allow( subject ).to receive( :configure_type_defaults_on )
|
1014
981
|
subject.install_puppet_agent_dev_repo_on( host, opts )
|
@@ -1098,13 +1065,11 @@ describe ClassMixedWithDSLInstallUtils do
|
|
1098
1065
|
it 'calls fetch_http_file with no ending slash' do
|
1099
1066
|
test_fetch_http_file_no_ending_slash( 'windows-7-x86_64' )
|
1100
1067
|
end
|
1101
|
-
|
1102
1068
|
end
|
1103
1069
|
|
1104
1070
|
it 'calls fetch_http_file with no ending slash' do
|
1105
1071
|
test_fetch_http_file_no_ending_slash( 'debian-5-x86_64' )
|
1106
1072
|
end
|
1107
|
-
|
1108
1073
|
end
|
1109
1074
|
|
1110
1075
|
describe '#remove_puppet_on' do
|
@@ -186,6 +186,93 @@ module Beaker
|
|
186
186
|
|
187
187
|
end
|
188
188
|
|
189
|
+
context '#pe_puppet_agent_promoted_package_install' do
|
190
|
+
context 'on solaris platforms' do
|
191
|
+
before :each do
|
192
|
+
allow( subject ).to receive( :fetch_http_file )
|
193
|
+
allow( subject ).to receive( :scp_to )
|
194
|
+
allow( subject ).to receive( :configure_type_defaults_on )
|
195
|
+
end
|
196
|
+
|
197
|
+
context 'version support' do
|
198
|
+
(7..17).each do |version|
|
199
|
+
supported_version = version == 10 || version == 11
|
200
|
+
supported_str = ( supported_version ? '' : 'not ')
|
201
|
+
test_title = "does #{supported_str}support version #{version}"
|
202
|
+
|
203
|
+
it "#{test_title}" do
|
204
|
+
solaris_platform = Beaker::Platform.new("solaris-#{version}-x86_64")
|
205
|
+
@opts = {'platform' => solaris_platform}
|
206
|
+
allow( instance ).to receive( :execute )
|
207
|
+
allow( instance ).to receive( :exec )
|
208
|
+
if supported_version
|
209
|
+
if version == 10
|
210
|
+
allow( instance ).to receive( :noask_file_text )
|
211
|
+
allow( instance ).to receive( :create_remote_file )
|
212
|
+
end
|
213
|
+
# only expect diff in the last line: .not_to vs .to raise_error
|
214
|
+
expect{
|
215
|
+
instance.pe_puppet_agent_promoted_package_install(
|
216
|
+
'oh_cp_base', 'oh_cp_dl', 'oh_cp_fl', 'dl_fl', {}
|
217
|
+
)
|
218
|
+
}.not_to raise_error
|
219
|
+
else
|
220
|
+
expect{
|
221
|
+
instance.pe_puppet_agent_promoted_package_install(
|
222
|
+
'oh_cp_base', 'oh_cp_dl', 'oh_cp_fl', 'dl_fl', {}
|
223
|
+
)
|
224
|
+
}.to raise_error(ArgumentError, /^Solaris #{version} is not supported/ )
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
end
|
230
|
+
|
231
|
+
context 'on solaris 10' do
|
232
|
+
before :each do
|
233
|
+
solaris_platform = Beaker::Platform.new('solaris-10-x86_64')
|
234
|
+
@opts = {'platform' => solaris_platform}
|
235
|
+
end
|
236
|
+
|
237
|
+
it 'sets a noask file' do
|
238
|
+
allow( instance ).to receive( :execute )
|
239
|
+
allow( instance ).to receive( :exec )
|
240
|
+
expect( instance ).to receive( :noask_file_text )
|
241
|
+
expect( instance ).to receive( :create_remote_file )
|
242
|
+
instance.pe_puppet_agent_promoted_package_install('', '', '', '', {})
|
243
|
+
end
|
244
|
+
|
245
|
+
it 'calls the correct install command' do
|
246
|
+
allow( instance ).to receive( :noask_file_text )
|
247
|
+
allow( instance ).to receive( :create_remote_file )
|
248
|
+
# a number of `execute` calls before the one we're looking for
|
249
|
+
allow( instance ).to receive( :execute )
|
250
|
+
allow( instance ).to receive( :exec )
|
251
|
+
# actual gunzip call to
|
252
|
+
expect( Beaker::Command ).to receive( :new ).with( /^gunzip\ \-c\ / )
|
253
|
+
instance.pe_puppet_agent_promoted_package_install(
|
254
|
+
'oh_cp_base', 'oh_cp_dl', 'oh_cp_fl', 'dl_fl', {}
|
255
|
+
)
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
context 'on solaris 11' do
|
260
|
+
before :each do
|
261
|
+
solaris_platform = Beaker::Platform.new('solaris-11-x86_64')
|
262
|
+
@opts = {'platform' => solaris_platform}
|
263
|
+
end
|
264
|
+
|
265
|
+
it 'calls the correct install command' do
|
266
|
+
allow( instance ).to receive( :execute )
|
267
|
+
allow( instance ).to receive( :exec )
|
268
|
+
expect( Beaker::Command ).to receive( :new ).with( /^pkg\ install\ \-g / )
|
269
|
+
instance.pe_puppet_agent_promoted_package_install(
|
270
|
+
'oh_cp_base', 'oh_cp_dl', 'oh_cp_fl', 'dl_fl', {}
|
271
|
+
)
|
272
|
+
end
|
273
|
+
end
|
274
|
+
end
|
275
|
+
end
|
189
276
|
end
|
190
277
|
end
|
191
278
|
|
@@ -179,6 +179,26 @@ module Unix
|
|
179
179
|
end
|
180
180
|
end
|
181
181
|
|
182
|
+
describe '#pe_puppet_agent_promoted_package_info' do
|
183
|
+
context 'on ubuntu platforms' do
|
184
|
+
it 'splits the platform string version to get puppet-agent packages (format 9999)' do
|
185
|
+
@platform = 'ubuntu-9999-x42'
|
186
|
+
_, _, download_file = host.pe_puppet_agent_promoted_package_info(
|
187
|
+
'pa_collection'
|
188
|
+
)
|
189
|
+
expect( download_file ).to match( /-ubuntu-99\.99-x42/ )
|
190
|
+
end
|
191
|
+
|
192
|
+
it 'skips splitting the platform string version to get puppet-agent packages when unnecessary (format 99.99)' do
|
193
|
+
@platform = 'ubuntu-88.88-x63'
|
194
|
+
_, _, download_file = host.pe_puppet_agent_promoted_package_info(
|
195
|
+
'pa_collection'
|
196
|
+
)
|
197
|
+
expect( download_file ).to match( /-ubuntu-88\.88-x63/ )
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
182
202
|
describe '#external_copy_base' do
|
183
203
|
|
184
204
|
it 'returns /root in general' do
|
data/spec/beaker/host_spec.rb
CHANGED
@@ -412,7 +412,7 @@ module Beaker
|
|
412
412
|
@options = { :logger => logger }
|
413
413
|
host.instance_variable_set :@connection, conn
|
414
414
|
args = [ '/source', 'target', {} ]
|
415
|
-
conn_args = args
|
415
|
+
conn_args = args
|
416
416
|
|
417
417
|
expect( logger ).to receive(:trace)
|
418
418
|
expect( conn ).to receive(:scp_to).with( *conn_args ).and_return(Beaker::Result.new(host, 'output!'))
|
@@ -430,7 +430,7 @@ module Beaker
|
|
430
430
|
@options = { :logger => logger }
|
431
431
|
host.instance_variable_set :@connection, conn
|
432
432
|
args = [ '/source', 'target', {} ]
|
433
|
-
conn_args = args
|
433
|
+
conn_args = args
|
434
434
|
|
435
435
|
allow( logger ).to receive(:trace)
|
436
436
|
expect( conn ).to receive(:scp_to).ordered.with(
|
@@ -488,7 +488,7 @@ module Beaker
|
|
488
488
|
conn = double(:connection)
|
489
489
|
@options = { :logger => logger }
|
490
490
|
host.instance_variable_set :@connection, conn
|
491
|
-
args = [ source_path, target_path, {:ignore => [exclude_file]} ]
|
491
|
+
args = [ source_path, target_path, {:ignore => [exclude_file], :dry_run => false} ]
|
492
492
|
|
493
493
|
allow( Dir ).to receive( :glob ).and_return( @fileset1 + @fileset2 )
|
494
494
|
|
@@ -498,12 +498,12 @@ module Beaker
|
|
498
498
|
|
499
499
|
(@fileset1 + @fileset2).each do |file|
|
500
500
|
if file !~ /#{exclude_file}/
|
501
|
-
file_args = [ file, File.join(created_target_path, File.dirname(file).gsub(source_path,'')), {:ignore => [exclude_file]} ]
|
502
|
-
conn_args = file_args
|
501
|
+
file_args = [ file, File.join(created_target_path, File.dirname(file).gsub(source_path,'')), {:ignore => [exclude_file], :dry_run => false} ]
|
502
|
+
conn_args = file_args
|
503
503
|
expect( conn ).to receive(:scp_to).with( *conn_args ).and_return(Beaker::Result.new(host, 'output!'))
|
504
504
|
else
|
505
|
-
file_args = [ file, File.join(created_target_path, File.dirname(file).gsub(source_path,'')), {:ignore => [exclude_file]} ]
|
506
|
-
conn_args = file_args
|
505
|
+
file_args = [ file, File.join(created_target_path, File.dirname(file).gsub(source_path,'')), {:ignore => [exclude_file], :dry_run => false} ]
|
506
|
+
conn_args = file_args
|
507
507
|
expect( conn ).to_not receive(:scp_to).with( *conn_args )
|
508
508
|
end
|
509
509
|
end
|
@@ -553,7 +553,7 @@ module Beaker
|
|
553
553
|
conn = double(:connection)
|
554
554
|
@options = { :logger => logger }
|
555
555
|
host.instance_variable_set :@connection, conn
|
556
|
-
args = [ 'tmp', 'target', {:ignore => [exclude_file]} ]
|
556
|
+
args = [ 'tmp', 'target', {:ignore => [exclude_file], :dry_run => false} ]
|
557
557
|
|
558
558
|
allow( Dir ).to receive( :glob ).and_return( @fileset1 + @fileset2 )
|
559
559
|
|
@@ -562,19 +562,18 @@ module Beaker
|
|
562
562
|
expect( host ).to receive( :mkdir_p ).with('target/tmp/tests2')
|
563
563
|
(@fileset1 + @fileset2).each do |file|
|
564
564
|
if file !~ /#{exclude_file}/
|
565
|
-
file_args = [ file, File.join('target', File.dirname(file)), {:ignore => [exclude_file]} ]
|
566
|
-
conn_args = file_args
|
565
|
+
file_args = [ file, File.join('target', File.dirname(file)), {:ignore => [exclude_file], :dry_run => false} ]
|
566
|
+
conn_args = file_args
|
567
567
|
expect( conn ).to receive(:scp_to).with( *conn_args ).and_return(Beaker::Result.new(host, 'output!'))
|
568
568
|
else
|
569
|
-
file_args = [ file, File.join('target', File.dirname(file)), {:ignore => [exclude_file]} ]
|
570
|
-
conn_args = file_args
|
569
|
+
file_args = [ file, File.join('target', File.dirname(file)), {:ignore => [exclude_file], :dry_run => false} ]
|
570
|
+
conn_args = file_args
|
571
571
|
expect( conn ).to_not receive(:scp_to).with( *conn_args )
|
572
572
|
end
|
573
573
|
end
|
574
574
|
allow( conn ).to receive(:ip).and_return(host['ip'])
|
575
575
|
allow( conn ).to receive(:vmhostname).and_return(host['vmhostname'])
|
576
576
|
allow( conn ).to receive(:hostname).and_return(host.name)
|
577
|
-
|
578
577
|
host.do_scp_to *args
|
579
578
|
end
|
580
579
|
|
@@ -584,7 +583,7 @@ module Beaker
|
|
584
583
|
conn = double(:connection)
|
585
584
|
@options = { :logger => logger }
|
586
585
|
host.instance_variable_set :@connection, conn
|
587
|
-
args = [ 'tmp', 'target', {:ignore => [exclude_file]} ]
|
586
|
+
args = [ 'tmp', 'target', {:ignore => [exclude_file], :dry_run => false} ]
|
588
587
|
|
589
588
|
allow( Dir ).to receive( :glob ).and_return( @fileset1 + @fileset2 )
|
590
589
|
|
@@ -592,13 +591,13 @@ module Beaker
|
|
592
591
|
expect( host ).to_not receive( :mkdir_p ).with('target/tmp/tests')
|
593
592
|
expect( host ).to receive( :mkdir_p ).with('target/tmp/tests2')
|
594
593
|
(@fileset1).each do |file|
|
595
|
-
file_args = [ file, File.join('target', File.dirname(file)), {:ignore => [exclude_file]} ]
|
596
|
-
conn_args = file_args
|
594
|
+
file_args = [ file, File.join('target', File.dirname(file)), {:ignore => [exclude_file], :dry_run => false} ]
|
595
|
+
conn_args = file_args
|
597
596
|
expect( conn ).to_not receive(:scp_to).with( *conn_args )
|
598
597
|
end
|
599
598
|
(@fileset2).each do |file|
|
600
|
-
file_args = [ file, File.join('target', File.dirname(file)), {:ignore => [exclude_file]} ]
|
601
|
-
conn_args = file_args
|
599
|
+
file_args = [ file, File.join('target', File.dirname(file)), {:ignore => [exclude_file], :dry_run => false} ]
|
600
|
+
conn_args = file_args
|
602
601
|
expect( conn ).to receive(:scp_to).with( *conn_args ).and_return(Beaker::Result.new(host, 'output!'))
|
603
602
|
end
|
604
603
|
|
@@ -617,7 +616,7 @@ module Beaker
|
|
617
616
|
@options = { :logger => logger }
|
618
617
|
host.instance_variable_set :@connection, conn
|
619
618
|
args = [ 'source', 'target', {} ]
|
620
|
-
conn_args = args
|
619
|
+
conn_args = args
|
621
620
|
|
622
621
|
expect( logger ).to receive(:debug)
|
623
622
|
expect( conn ).to receive(:scp_from).with( *conn_args ).and_return(Beaker::Result.new(host, 'output!'))
|
@@ -220,6 +220,14 @@ module Beaker
|
|
220
220
|
'container_path' => '/different_mount',
|
221
221
|
'opts' => 'rw',
|
222
222
|
},
|
223
|
+
'mount4' => {
|
224
|
+
'host_path' => './',
|
225
|
+
'container_path' => '/relative_mount',
|
226
|
+
},
|
227
|
+
'mount5' => {
|
228
|
+
'host_path' => 'local_folder',
|
229
|
+
'container_path' => '/another_relative_mount',
|
230
|
+
}
|
223
231
|
}
|
224
232
|
|
225
233
|
expect( ::Docker::Container ).to receive(:create).with({
|
@@ -230,6 +238,8 @@ module Beaker
|
|
230
238
|
'/source_folder:/mount_point',
|
231
239
|
'/another_folder:/another_mount:ro',
|
232
240
|
'/different_folder:/different_mount:rw',
|
241
|
+
"#{File.expand_path('./')}:/relative_mount",
|
242
|
+
"#{File.expand_path('local_folder')}:/another_relative_mount",
|
233
243
|
]
|
234
244
|
}
|
235
245
|
})
|
@@ -73,6 +73,25 @@ module Beaker
|
|
73
73
|
let( :hosts ) { make_hosts( { :platform => 'el-5' } ) }
|
74
74
|
let( :hypervisor ) { Beaker::Hypervisor.new( hosts, options ) }
|
75
75
|
|
76
|
+
context 'if :timesync option set true on host' do
|
77
|
+
it 'does call timesync for host' do
|
78
|
+
hosts[0][:timesync] = true
|
79
|
+
allow( hypervisor ).to receive( :set_env )
|
80
|
+
expect( hypervisor ).to receive( :timesync ).once
|
81
|
+
hypervisor.configure
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'if :timesync option set true but false on host' do
|
86
|
+
it 'does not call timesync for host' do
|
87
|
+
options[:timesync] = true
|
88
|
+
hosts[0][:timesync] = false
|
89
|
+
allow( hypervisor ).to receive( :set_env )
|
90
|
+
expect( hypervisor ).to_not receive( :timesync )
|
91
|
+
hypervisor.configure
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
76
95
|
context "if :disable_iptables option set false" do
|
77
96
|
it "does not call disable_iptables" do
|
78
97
|
options[:disable_iptables] = false
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.35.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppetlabs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|