beaker 3.5.0 → 3.6.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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZjA4NTNhN2IzZmUxODliZjcwOGEwNzQ1ZTZiZDBmMDg0ZTY3ZTMxMg==
4
+ YmVmMDI1YTVjZDNjZmM4ODI2MGUzOTBiNDg2YmVlMDMwZGQyY2M2Mg==
5
5
  data.tar.gz: !binary |-
6
- NjUyZWJiNmU3MDkyYjNmMjIyMjg4MWU3MjE5ZmQxZDZlMTM0MmYxOA==
6
+ OWExZDNiOGU2NmRkNGJjYTM3MjlhZGRlODk3M2NiYzBjYTE3NmZkZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YzEzYTAxMDk1NjcyM2FlMDY0MWVlYTQ2ZjY4Njk0YTU2NWU1NDBlZGE0YmQ2
10
- M2RkNjkxMDlhMDI2YjJmNzdhM2Y1MjhmNTlmZjczYjUzOGFkY2E2OGI0N2U1
11
- ZmNkNDU5N2MzOTE5NWNiZTU0N2QyZDc3ZGFmZTYyODJkMjA0MmQ=
9
+ YmRmNjhhMWYzZTEzZTk3ZDRiNTEzMzkwYjE3NzBmZDgzOGQzY2I0NTI4OGUy
10
+ ZjNmN2ZhNjM5ZDI0ZDY3YTRjOGJhMWRmMjViZWM3YzY0Y2QzNTE4ZjIxYzI4
11
+ NTQ1ZjU4YzVhMjAwMjUxMjY1Y2VlZmFmZDUzMjU1MGNiZGIwYzY=
12
12
  data.tar.gz: !binary |-
13
- ZWVjZGY0YjBiYmQ3Y2RlMTljOGVlNjM3NGFkZTBmOGZiNGE4ZWFhMmVhZmFi
14
- MTI2ZTUxNzUwNGQ2ODNhNWU2NGEyZGYzNTc1MjdjNWExZTBmNjE4YmRjMzIy
15
- NTA1Nzc4MGY5NjIzZDQ5YWRmZThlYzBiODIxOWVlMTZjYTI2YzU=
13
+ YjA4NjRjYjVjMzEyMzg1ZTk2YWEwMDdhYzU1NTU2NjdlZjY1ZjNlN2EwMzc3
14
+ MWJlMzE4MGQ5Mzc1N2QxZDQ3YjU0M2U5Nzk3MjE1YWI5YWZhMmE4MzA5MjI2
15
+ ZjhlYTJjNGRiMTc4YTQzOTlmOTE4N2NhYTQwMjFjNzUxMDQwMGE=
@@ -0,0 +1,18 @@
1
+ test_name 'Group Test' do
2
+ step "#group_get: has an Administrators group on Windows" do
3
+ hosts.select { |h| h['platform'] =~ /windows/ }.each do |host|
4
+ host.group_get('Administrators') do |result|
5
+ refute_match(result.stdout, '1376', 'Output indicates Administrators not found')
6
+ end
7
+ end
8
+ end
9
+
10
+ step "#group_get: should not have CroMags group on Windows" do
11
+ hosts.select { |h| h['platform'] =~ /windows/ }.each do |host|
12
+ assert_raises Beaker::Host::CommandFailure do
13
+ host.group_get('CroMags') { |result| }
14
+ end
15
+ end
16
+ end
17
+
18
+ end
@@ -60,7 +60,11 @@ hosts.each do |host|
60
60
 
61
61
  assert_equal(false, host.check_for_package(package), "'#{package}' not should be installed")
62
62
  logger.debug("#{package} should be installed on #{host}")
63
- host.install_package(package)
63
+ cmdline_args = ''
64
+ # Newer vmpooler hosts created by Packer templates, and running Cygwin 2.4,
65
+ # must have these switches passed
66
+ cmdline_args = '--local-install --download' if (host['platform'] =~ /windows/ and host.is_cygwin?)
67
+ host.install_package(package, cmdline_args)
64
68
  assert(host.check_for_package(package), "'#{package}' should be installed")
65
69
 
66
70
  # windows does not support uninstall_package
@@ -74,4 +78,4 @@ hosts.each do |host|
74
78
  end
75
79
  end
76
80
 
77
- end
81
+ end
@@ -0,0 +1,18 @@
1
+ test_name 'User Test' do
2
+ step "#user_get: has an Administrator user on Windows" do
3
+ hosts.select { |h| h['platform'] =~ /windows/ }.each do |host|
4
+ host.user_get('Administrator') do |result|
5
+ refute_match(result.stdout, 'NET HELPMSG', 'Output indicates Administrator not found')
6
+ end
7
+ end
8
+ end
9
+
10
+ step "#user_get: should not have CaptainCaveman user on Windows" do
11
+ hosts.select { |h| h['platform'] =~ /windows/ }.each do |host|
12
+ assert_raises Beaker::Host::CommandFailure do
13
+ host.user_get('CaptainCaveman') { |result| }
14
+ end
15
+ end
16
+ end
17
+
18
+ end
data/lib/beaker/cli.rb CHANGED
@@ -13,11 +13,12 @@ module Beaker
13
13
  @timestamp = Time.now
14
14
  @options_parser = Beaker::Options::Parser.new
15
15
  @options = @options_parser.parse_args
16
+ @attribution = @options_parser.attribution
16
17
  @logger = Beaker::Logger.new(@options)
17
18
  InParallel::InParallelExecutor.logger = @logger
18
- @options[:logger] = @logger
19
- @options[:timestamp] = @timestamp
20
- @options[:beaker_version] = Beaker::Version::STRING
19
+ @options_parser.update_option(:logger, @logger, 'runtime')
20
+ @options_parser.update_option(:timestamp, @timestamp, 'runtime')
21
+ @options_parser.update_option(:beaker_version, Beaker::Version::STRING, 'runtime')
21
22
  beaker_version_string = VERSION_STRING % @options[:beaker_version]
22
23
  @execute = true
23
24
 
data/lib/beaker/host.rb CHANGED
@@ -340,6 +340,13 @@ module Beaker
340
340
  @logger.debug "\n#{log_prefix} executed in %0.2f seconds" % seconds
341
341
  end
342
342
 
343
+ if options[:reset_connection]
344
+ # Expect the connection to fail hard and possibly take a long time timeout.
345
+ # Pre-emptively reset it so we don't wait forever.
346
+ close
347
+ return result
348
+ end
349
+
343
350
  unless options[:silent]
344
351
  # What?
345
352
  result.log(@logger)
@@ -42,13 +42,23 @@ module PSWindows::Exec
42
42
  end
43
43
 
44
44
  def get_ip
45
- ip = execute("for /f \"tokens=14\" %f in ('ipconfig ^| find \"IP Address\"') do @echo %f", :accept_all_exit_codes => true).strip
46
- if ip == ''
47
- ip = execute("for /f \"tokens=14\" %f in ('ipconfig ^| find \"IPv4 Address\"') do @echo %f", :accept_all_exit_codes => true).strip
48
- end
49
- if ip == ''
50
- ip = execute("for /f \"tokens=14\" %f in ('ipconfig ^| find \"IPv6 Address\"') do @echo %f").strip
45
+ # when querying for an IP this way the return value can be formatted like:
46
+ # IPAddress=
47
+ # IPAddress={"129.168.0.1"}
48
+ # IPAddress={"192.168.0.1","2001:db8:aaaa:bbbb:cccc:dddd:eeee:0001"}
49
+
50
+ ips = execute("wmic nicconfig where ipenabled=true GET IPAddress /format:list")
51
+
52
+ ip = ''
53
+ ips.each_line do |line|
54
+ matches = line.split('=')
55
+ next if matches.length <= 1
56
+ matches = matches[1].match(/^{"(.*?)"/)
57
+ next if matches.nil? || matches.captures.nil? || matches.captures.empty?
58
+ ip = matches.captures[0] if matches && matches.captures
59
+ break if ip != ''
51
60
  end
61
+
52
62
  ip
53
63
  end
54
64
 
@@ -16,7 +16,7 @@ module PSWindows::Group
16
16
 
17
17
  def group_get(name, &block)
18
18
  execute("net localgroup \"#{name}\"") do |result|
19
- fail_test "failed to get group #{name}" unless result.stdout =~ /^Alias name\s+#{name}/
19
+ fail_test "failed to get group #{name}" if result.exit_code != 0
20
20
 
21
21
  yield result if block_given?
22
22
  end
@@ -16,7 +16,7 @@ module PSWindows::User
16
16
 
17
17
  def user_get(name, &block)
18
18
  execute("net user \"#{name}\"") do |result|
19
- fail_test "failed to get user #{name}" unless result.stdout =~ /^User name\s+#{name}/
19
+ fail_test "failed to get user #{name}" if result.exit_code != 0
20
20
 
21
21
  yield result if block_given?
22
22
  end
@@ -2,7 +2,7 @@ module Windows::Exec
2
2
  include Beaker::CommandFactory
3
3
 
4
4
  def reboot
5
- exec(Beaker::Command.new('shutdown /f /r /t 0 /d p:4:1 /c "Beaker::Host reboot command issued"'), :expect_connection_failure => true)
5
+ exec(Beaker::Command.new('shutdown /f /r /t 0 /d p:4:1 /c "Beaker::Host reboot command issued"'), :reset_connection => true)
6
6
  # rebooting on windows is sloooooow
7
7
  # give it some breathing room before attempting a reconnect
8
8
  sleep(40)
@@ -24,13 +24,23 @@ module Windows::Exec
24
24
  end
25
25
 
26
26
  def get_ip
27
- ip = execute("ipconfig | grep -i 'IP Address' | cut -d: -f2 | head -1").strip
28
- if ip == ''
29
- ip = execute("ipconfig | grep -i 'IPv4 Address' | cut -d: -f2 | head -1").strip
30
- end
31
- if ip == ''
32
- ip = execute("ipconfig | grep -i 'IPv6 Address' | cut -d: -f2 | head -1").strip
27
+ # when querying for an IP this way the return value can be formatted like:
28
+ # IPAddress=
29
+ # IPAddress={"129.168.0.1"}
30
+ # IPAddress={"192.168.0.1","2001:db8:aaaa:bbbb:cccc:dddd:eeee:0001"}
31
+
32
+ ips = execute("wmic nicconfig where ipenabled=true GET IPAddress /format:list")
33
+
34
+ ip = ''
35
+ ips.each_line do |line|
36
+ matches = line.split('=')
37
+ next if matches.length <= 1
38
+ matches = matches[1].match(/^{"(.*?)"/)
39
+ next if matches.nil? || matches.captures.nil? || matches.captures.empty?
40
+ ip = matches.captures[0] if matches && matches.captures
41
+ break if ip != ''
33
42
  end
43
+
34
44
  ip
35
45
  end
36
46
 
@@ -16,7 +16,7 @@ module Windows::Group
16
16
 
17
17
  def group_get(name, &block)
18
18
  execute("net localgroup \"#{name}\"") do |result|
19
- fail_test "failed to get group #{name}" unless result.stdout =~ /^Alias name\s+#{name}/
19
+ fail_test "failed to get group #{name}" if result.exit_code != 0
20
20
 
21
21
  yield result if block_given?
22
22
  end
@@ -34,7 +34,7 @@ module Windows::Pkg
34
34
  execute(command)
35
35
  end
36
36
  end
37
- execute("#{cygwin} -q -n -N -d -R #{cmdline_args} #{rootdir} -s http://cygwin.osuosl.org -P #{name}")
37
+ execute("#{cygwin} -q -n -N -d -R #{rootdir} -s http://cygwin.osuosl.org -P #{name} #{cmdline_args}")
38
38
  end
39
39
 
40
40
  def uninstall_package(name, cmdline_args = '')
@@ -16,7 +16,7 @@ module Windows::User
16
16
 
17
17
  def user_get(name, &block)
18
18
  execute("net user \"#{name}\"") do |result|
19
- fail_test "failed to get user #{name}" unless result.stdout =~ /^User name\s+#{name}/
19
+ fail_test "failed to get user #{name}" if result.exit_code != 0
20
20
 
21
21
  yield result if block_given?
22
22
  end
@@ -147,7 +147,8 @@ module Beaker
147
147
  ip = m[2]
148
148
  @logger.debug("Determined existing vagrant box #{hostname} ip to be: #{ip} ")
149
149
  else
150
- raise("Unable to determine ip for vagrant box #{hostname}")
150
+ ip = nil
151
+ @logger.debug("Unable to determine ip for vagrant box #{hostname}")
151
152
  end
152
153
  else
153
154
  raise("No vagrant file found (should be located at #{@vagrant_file})")
@@ -15,6 +15,7 @@ module Beaker
15
15
 
16
16
  #The OptionsHash of all parsed options
17
17
  attr_accessor :options
18
+ attr_reader :attribution
18
19
 
19
20
  # Returns the git repository used for git installations
20
21
  # @return [String] The git repository
@@ -165,6 +166,34 @@ module Beaker
165
166
  @command_line_parser = Beaker::Options::CommandLineParser.new
166
167
  @presets = Beaker::Options::Presets.new
167
168
  @validator = Beaker::Options::Validator.new
169
+ @attribution = Beaker::Options::OptionsHash.new
170
+ end
171
+
172
+ # Update the @attribution hash with the source of each key in the options_hash
173
+ #
174
+ # @param [Hash] options_hash Options hash
175
+ # @param [String] source Where the options were specified
176
+ # @return [Hash] hash Hash of sources for each key
177
+ def tag_sources(options_hash, source)
178
+ hash = Beaker::Options::OptionsHash.new
179
+ options_hash.each do |key, value|
180
+ if value.is_a?(Hash)
181
+ hash[key] = tag_sources(value, source)
182
+ else
183
+ hash[key] = source
184
+ end
185
+ end
186
+ hash
187
+ end
188
+
189
+ # Update the @option hash with a value and the @attribution hash with a source
190
+ #
191
+ # @param [String] key The key to update in both hashes
192
+ # @param [Object] value The value to set in the @options hash
193
+ # @param [String] source The source to set in the @attribution hash
194
+ def update_option(key, value, source)
195
+ @options[key] = value
196
+ @attribution[key] = source
168
197
  end
169
198
 
170
199
  # Parses ARGV or provided arguments array, file options, hosts options and combines with environment variables and
@@ -181,9 +210,12 @@ module Beaker
181
210
  # @raise [ArgumentError] Raises error on bad input
182
211
  def parse_args(args = ARGV)
183
212
  @options = @presets.presets
213
+ @attribution = @attribution.merge(tag_sources(@presets.presets, "preset"))
184
214
  cmd_line_options = @command_line_parser.parse(args)
185
215
  cmd_line_options[:command_line] = ([$0] + args).join(' ')
216
+ @attribution = @attribution.merge(tag_sources(cmd_line_options, "flag"))
186
217
  file_options = Beaker::Options::OptionsFileParser.parse_options_file(cmd_line_options[:options_file])
218
+ @attribution = @attribution.merge(tag_sources(file_options, "options_file"))
187
219
 
188
220
  # merge together command line and file_options
189
221
  # overwrite file options with command line options
@@ -199,16 +231,19 @@ module Beaker
199
231
  # merge in host file vars
200
232
  # overwrite options (default, file options, command line) with host file options
201
233
  @options = @options.merge(hosts_options)
234
+ @attribution = @attribution.merge(tag_sources(hosts_options, "host_file"))
202
235
 
203
236
  # re-merge the command line options
204
237
  # overwrite options (default, file options, hosts file ) with command line arguments
205
238
  @options = @options.merge(cmd_line_options)
239
+ @attribution = @attribution.merge(tag_sources(cmd_line_options, "cmd"))
206
240
 
207
241
  # merge in env vars
208
242
  # overwrite options (default, file options, command line, hosts file) with env
209
243
  env_vars = @presets.env_vars
210
244
 
211
245
  @options = @options.merge(env_vars)
246
+ @attribution = @attribution.merge(tag_sources(env_vars, "env"))
212
247
 
213
248
  normalize_args
214
249
  end
@@ -280,15 +315,15 @@ module Beaker
280
315
  #will end up being normalized into an array
281
316
  LONG_OPTS.each do |opt|
282
317
  if @options.has_key?(opt)
283
- @options[opt] = split_arg(@options[opt])
318
+ update_option(opt, split_arg(@options[opt]), 'runtime')
284
319
  if RB_FILE_OPTS.include?(opt) && (not @options[opt] == [])
285
- @options[opt] = file_list(@options[opt])
320
+ update_option(opt, file_list(@options[opt]), 'runtime')
286
321
  end
287
322
  if opt == :install
288
- @options[:install] = parse_git_repos(@options[:install])
323
+ update_option(:install, parse_git_repos(@options[:install]), 'runtime')
289
324
  end
290
325
  else
291
- @options[opt] = []
326
+ update_option(opt, [], 'runtime')
292
327
  end
293
328
  end
294
329
 
@@ -1,5 +1,5 @@
1
1
  module Beaker
2
2
  module Version
3
- STRING = '3.5.0'
3
+ STRING = '3.6.0'
4
4
  end
5
5
  end
@@ -35,6 +35,9 @@ module Beaker
35
35
 
36
36
  expect( cli ).to receive(:run_suite).exactly( 2 ).times
37
37
  expect{ cli.execute! }.to raise_error
38
+ expect(cli.instance_variable_get(:@attribution)[:logger]).to be == 'runtime'
39
+ expect(cli.instance_variable_get(:@attribution)[:timestamp]).to be == 'runtime'
40
+ expect(cli.instance_variable_get(:@attribution)[:beaker_version]).to be == 'runtime'
38
41
 
39
42
  end
40
43
 
@@ -51,5 +51,14 @@ module Beaker
51
51
  expect(instance.selinux_enabled?).to be === false
52
52
  end
53
53
  end
54
+
55
+ describe '#reboot' do
56
+ it 'invokes the correct command on the host' do
57
+ expect( Beaker::Command ).to receive( :new ).with( /^shutdown \/f \/r \/t 0 \/d p:4:1 \/c "Beaker::Host reboot command issued"/ ).and_return( :foo )
58
+ expect( instance ).to receive( :exec ).with( :foo, :reset_connection => true )
59
+ expect( instance ).to receive( :sleep )
60
+ instance.reboot
61
+ end
62
+ end
54
63
  end
55
64
  end
@@ -315,6 +315,11 @@ module Beaker
315
315
  expect { host.exec(command, opts) }.to_not raise_error
316
316
  end
317
317
 
318
+ it 'explicitly closes the connection when :reset_connection is set' do
319
+ expect( host ).to receive( :close )
320
+ expect { host.exec(command, :reset_connection => true) }.to_not raise_error
321
+ end
322
+
318
323
  context "controls the result objects logging" do
319
324
  it "and passes a test if the exit_code doesn't match the default :acceptable_exit_codes of 0" do
320
325
  result.exit_code = 0
@@ -375,9 +375,8 @@ EOF
375
375
 
376
376
  end
377
377
 
378
- it "raises an error if it is unable to find an ip" do
379
- expect{ vagrant.get_ip_from_vagrant_file("unknown") }.to raise_error
380
-
378
+ it "returns nil if it is unable to find an ip" do
379
+ expect( vagrant.get_ip_from_vagrant_file("unknown") ).to be_nil
381
380
  end
382
381
 
383
382
  it "raises an error if no Vagrantfile is present" do
@@ -127,16 +127,35 @@ module Beaker
127
127
  before { FakeFS.deactivate! }
128
128
 
129
129
  it 'pulls the args into key called :command_line' do
130
- my_args = ['--log-level', 'debug', '-h', hosts_path]
130
+ my_args = ['--log-level', 'debug', '-h', hosts_path]
131
+
131
132
  expect(parser.parse_args(my_args)[:command_line]).to include(my_args.join(' '))
133
+ expect(parser.attribution[:command_line]).to be == 'cmd'
134
+ expect(parser.attribution[:hosts_file]).to be == 'cmd'
135
+ expect(parser.attribution[:log_level]).to be == 'cmd'
136
+ expect(parser.attribution[:pe_dir]).to be == 'preset'
132
137
  end
133
138
 
134
139
  describe 'does prioritization correctly' do
135
140
  let(:env) { @env || {:level => 'highest'} }
136
141
  let(:argv) { @argv || {:level => 'second'} }
137
142
  let(:host_file) { @host_file || {:level => 'third'} }
138
- let(:opt_file) { @opt_file || {:level => 'fourth'} }
139
- let(:presets) { {:level => 'lowest'} }
143
+ let(:opt_file) { @opt_file || {:level => 'fourth',
144
+ :ssh => {
145
+ :auth_methods => 'auth123',
146
+ :user_known_hosts_file => 'hosts123'
147
+ }
148
+ } }
149
+ let(:presets) { {:level => 'lowest',
150
+ :ssh => {
151
+ :config => 'config123',
152
+ :paranoid => 'paranoid123',
153
+ :port => 'port123',
154
+ :forward_agent => 'forwardagent123',
155
+ :keys => 'keys123',
156
+ :keepalive => 'keepalive123'
157
+ }
158
+ } }
140
159
 
141
160
  before :each do
142
161
  expect(parser).to receive(:normalize_args).and_return(true)
@@ -161,7 +180,9 @@ module Beaker
161
180
  mock_out_parsing
162
181
 
163
182
  opts = parser.parse_args([])
183
+ attribution = parser.attribution
164
184
  expect(opts[:level]).to be == 'lowest'
185
+ expect(attribution[:level]).to be == 'preset'
165
186
  end
166
187
 
167
188
  it 'options file has fourth priority' do
@@ -169,7 +190,18 @@ module Beaker
169
190
  mock_out_parsing
170
191
 
171
192
  opts = parser.parse_args([])
193
+ attribution = parser.attribution
194
+ expect(attribution[:ssh]).to be_a(Hash)
195
+ expect(attribution[:ssh][:auth_methods]).to be == 'options_file'
196
+ expect(attribution[:ssh][:user_known_hosts_file]).to be == 'options_file'
197
+ expect(attribution[:ssh][:config]).to be == 'preset'
198
+ expect(attribution[:ssh][:paranoid]).to be == 'preset'
199
+ expect(attribution[:ssh][:port]).to be == 'preset'
200
+ expect(attribution[:ssh][:forward_agent]).to be == 'preset'
201
+ expect(attribution[:ssh][:keys]).to be == 'preset'
202
+ expect(attribution[:ssh][:keepalive]).to be == 'preset'
172
203
  expect(opts[:level]).to be == 'fourth'
204
+ expect(attribution[:level]).to be == 'options_file'
173
205
  end
174
206
 
175
207
  it 'host file CONFIG section has third priority' do
@@ -177,7 +209,9 @@ module Beaker
177
209
  mock_out_parsing
178
210
 
179
211
  opts = parser.parse_args([])
212
+ attribution = parser.attribution
180
213
  expect(opts[:level]).to be == 'third'
214
+ expect(attribution[:level]).to be == 'host_file'
181
215
  end
182
216
 
183
217
  it 'command line arguments have second priority' do
@@ -185,14 +219,18 @@ module Beaker
185
219
  mock_out_parsing
186
220
 
187
221
  opts = parser.parse_args([])
222
+ attribution = parser.attribution
188
223
  expect(opts[:level]).to be == 'second'
224
+ expect(attribution[:level]).to be == 'cmd'
189
225
  end
190
226
 
191
227
  it 'env vars have highest priority' do
192
228
  mock_out_parsing
193
229
 
194
230
  opts = parser.parse_args([])
231
+ attribution = parser.attribution
195
232
  expect(opts[:level]).to be == 'highest'
233
+ expect(attribution[:level]).to be == 'env'
196
234
  end
197
235
 
198
236
  end
@@ -207,9 +245,13 @@ module Beaker
207
245
 
208
246
  args = ["-h", hosts_path, "--log-level", log_level, "--type", type, "--install", "PUPPET/1.0,HIERA/hello"]
209
247
  output = parser.parse_args(args)
210
- expect(output[:hosts_file]).to be == hosts_path
248
+ attribution = parser.attribution
249
+ expect(output[:hosts_file]).to be == hosts_path
250
+ expect(attribution[:hosts_file]).to be == 'cmd'
211
251
  expect(output[:jenkins_build_url]).to be == build_url
252
+ expect(attribution[:jenkins_build_url]).to be == 'env'
212
253
  expect(output[:install]).to include('git://github.com/puppetlabs/hiera.git#hello')
254
+ expect(attribution[:install]).to be == 'runtime'
213
255
 
214
256
  ENV["BUILD_URL"] = old_build_url
215
257
  end
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: 3.5.0
4
+ version: 3.6.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-11-30 00:00:00.000000000 Z
11
+ date: 2016-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -500,10 +500,12 @@ files:
500
500
  - acceptance/tests/base/dsl/platform_tag_confiner_test.rb
501
501
  - acceptance/tests/base/dsl/structure_test.rb
502
502
  - acceptance/tests/base/external_resources_test.rb
503
+ - acceptance/tests/base/host/group_test.rb
503
504
  - acceptance/tests/base/host/host_test.rb
504
505
  - acceptance/tests/base/host/packages.rb
505
506
  - acceptance/tests/base/host/packages_unix.rb
506
507
  - acceptance/tests/base/host/reboot_test.rb
508
+ - acceptance/tests/base/host/user_test.rb
507
509
  - acceptance/tests/base/host_prebuilt_steps/ssh_environment_test.rb
508
510
  - acceptance/tests/base/test_suite/export.rb
509
511
  - acceptance/tests/hypervisor/communication_test.rb