Skip to content

Commit f677336

Browse files
committed
(maint) fix spec tests when run sequentially
running `rake spec` (sequential tests) or `pdk test unit -v` resulted in none of the tests in spec/unit being run.
1 parent 0de1c8e commit f677336

File tree

2 files changed

+45
-41
lines changed

2 files changed

+45
-41
lines changed

spec/tasks/vagrant_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
require 'rspec'
33
require 'spec_helper'
44
require 'net/ssh'
5+
require_relative '../../tasks/vagrant'
56

67
describe 'vagrant' do
78
let(:provider) { 'virtualbox' }
@@ -25,12 +26,11 @@
2526
allow(File).to receive(:read).with(%r{#{tmpdir}.*\.vagrant}).and_return('some_unique_id')
2627
allow(Open3).to receive(:capture3).with(%r{vagrant ssh-config}, any_args).and_return(['', '', 0]).once
2728
allow(Net::SSH).to receive(:start).and_return(true)
28-
require_relative '../../tasks/vagrant'
2929
end
3030

3131
it 'provisions a new vagrant box when action is provision' do
32-
expect { vagrant }.to output(%r{"status":"ok"}).to_stdout
33-
expect { vagrant }.to output(%r{"platform":"generic/debian10"}).to_stdout
34-
expect { vagrant }.to output(%r{"role":"worker1"}).to_stdout
32+
expect { vagrant }.to raise_error(SystemExit).and output(
33+
include('"status":"ok"', '"platform":"generic/debian10"', '"role":"worker1"'),
34+
).to_stdout
3535
end
3636
end

tasks/vagrant.rb

Lines changed: 41 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -205,43 +205,47 @@ def tear_down(node_name, inventory)
205205
{ status: 'ok' }
206206
end
207207

208-
params = JSON.parse($stdin.read)
209-
warn params
210-
platform = params['platform']
211-
action = params['action']
212-
node_name = params['node_name']
213-
vars = params['vars']
214-
inventory = InventoryHelper.open(params['inventory'])
215-
enable_synced_folder = params['enable_synced_folder'].nil? ? ENV.fetch('VAGRANT_ENABLE_SYNCED_FOLDER', nil) : params['enable_synced_folder']
216-
enable_synced_folder = enable_synced_folder.casecmp('true').zero? if enable_synced_folder.is_a?(String)
217-
provider = params['provider'].nil? ? ENV.fetch('VAGRANT_PROVIDER', nil) : params['provider']
218-
cpus = params['cpus'].nil? ? ENV.fetch('VAGRANT_CPUS', nil) : params['cpus']
219-
memory = params['memory'].nil? ? ENV.fetch('VAGRANT_MEMORY', nil) : params['memory']
220-
hyperv_vswitch = params['hyperv_vswitch'].nil? ? ENV.fetch('VAGRANT_HYPERV_VSWITCH', nil) : params['hyperv_vswitch']
221-
hyperv_smb_username = params['hyperv_smb_username'].nil? ? ENV.fetch('VAGRANT_HYPERV_SMB_USERNAME', nil) : params['hyperv_smb_username']
222-
hyperv_smb_password = params['hyperv_smb_password'].nil? ? ENV.fetch('VAGRANT_HYPERV_SMB_PASSWORD', nil) : params['hyperv_smb_password']
223-
box_url = params['box_url'].nil? ? ENV.fetch('VAGRANT_BOX_URL', nil) : params['box_url']
224-
password = params['password'].nil? ? ENV.fetch('VAGRANT_PASSWORD', nil) : params['password']
225-
raise 'specify a node_name when tearing down' if action == 'tear_down' && node_name.nil?
226-
raise 'specify a platform when provisioning' if action == 'provision' && platform.nil?
227-
228-
unless node_name.nil? ^ platform.nil?
229-
case action
230-
when 'tear_down'
231-
raise 'specify only a node_name, not platform, when tearing down'
232-
when 'provision'
233-
raise 'specify only a platform, not node_name, when provisioning'
234-
else
235-
raise 'specify only one of: node_name, platform'
208+
def vagrant
209+
params = JSON.parse($stdin.read)
210+
warn params
211+
platform = params['platform']
212+
action = params['action']
213+
node_name = params['node_name']
214+
vars = params['vars']
215+
inventory = InventoryHelper.open(params['inventory'])
216+
enable_synced_folder = params['enable_synced_folder'].nil? ? ENV.fetch('VAGRANT_ENABLE_SYNCED_FOLDER', nil) : params['enable_synced_folder']
217+
enable_synced_folder = enable_synced_folder.casecmp('true').zero? if enable_synced_folder.is_a?(String)
218+
provider = params['provider'].nil? ? ENV.fetch('VAGRANT_PROVIDER', nil) : params['provider']
219+
cpus = params['cpus'].nil? ? ENV.fetch('VAGRANT_CPUS', nil) : params['cpus']
220+
memory = params['memory'].nil? ? ENV.fetch('VAGRANT_MEMORY', nil) : params['memory']
221+
hyperv_vswitch = params['hyperv_vswitch'].nil? ? ENV.fetch('VAGRANT_HYPERV_VSWITCH', nil) : params['hyperv_vswitch']
222+
hyperv_smb_username = params['hyperv_smb_username'].nil? ? ENV.fetch('VAGRANT_HYPERV_SMB_USERNAME', nil) : params['hyperv_smb_username']
223+
hyperv_smb_password = params['hyperv_smb_password'].nil? ? ENV.fetch('VAGRANT_HYPERV_SMB_PASSWORD', nil) : params['hyperv_smb_password']
224+
box_url = params['box_url'].nil? ? ENV.fetch('VAGRANT_BOX_URL', nil) : params['box_url']
225+
password = params['password'].nil? ? ENV.fetch('VAGRANT_PASSWORD', nil) : params['password']
226+
raise 'specify a node_name when tearing down' if action == 'tear_down' && node_name.nil?
227+
raise 'specify a platform when provisioning' if action == 'provision' && platform.nil?
228+
229+
unless node_name.nil? ^ platform.nil?
230+
case action
231+
when 'tear_down'
232+
raise 'specify only a node_name, not platform, when tearing down'
233+
when 'provision'
234+
raise 'specify only a platform, not node_name, when provisioning'
235+
else
236+
raise 'specify only one of: node_name, platform'
237+
end
236238
end
237-
end
238239

239-
begin
240-
result = provision(platform, inventory, enable_synced_folder, provider, cpus, memory, hyperv_vswitch, hyperv_smb_username, hyperv_smb_password, box_url, password, vars) if action == 'provision'
241-
result = tear_down(node_name, inventory) if action == 'tear_down'
242-
puts result.to_json
243-
exit 0
244-
rescue StandardError => e
245-
puts({ _error: { kind: 'provision/vagrant_failure', msg: e.message } }.to_json)
246-
exit 1
240+
begin
241+
result = provision(platform, inventory, enable_synced_folder, provider, cpus, memory, hyperv_vswitch, hyperv_smb_username, hyperv_smb_password, box_url, password, vars) if action == 'provision'
242+
result = tear_down(node_name, inventory) if action == 'tear_down'
243+
puts result.to_json
244+
exit 0
245+
rescue StandardError => e
246+
puts({ _error: { kind: 'provision/vagrant_failure', msg: e.message } }.to_json)
247+
exit 1
248+
end
247249
end
250+
251+
vagrant if __FILE__ == $PROGRAM_NAME

0 commit comments

Comments
 (0)