beaker-vagrant 0.6.4 → 0.7.1

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.
@@ -63,15 +63,15 @@ class Beaker::VagrantVirtualbox < Beaker::Vagrant
63
63
  end
64
64
  end
65
65
 
66
- provider_section << " vb.customize [\"modifyvm\", :id, \"--ioapic\", \"on\"]\n" unless host['ioapic'].nil?
66
+ provider_section << " vb.customize ['modifyvm', :id, '--ioapic', 'on']\n" unless host['ioapic'].nil?
67
67
 
68
- provider_section << " vb.customize [\"modifyvm\", :id, \"--natdnshostresolver1\", \"#{host['natdns']}\"]\n" unless host['natdns'].nil?
68
+ provider_section << " vb.customize ['modifyvm', :id, '--natdnshostresolver1', 'on']\n" unless host['natdns'].nil?
69
69
 
70
- provider_section << " vb.customize [\"modifyvm\", :id, \"--natdnsproxy1\", \"#{host['natdns']}\"]\n" unless host['natdns'].nil?
70
+ provider_section << " vb.customize ['modifyvm', :id, '--natdnsproxy1', 'on']\n" unless host['natdns'].nil?
71
71
 
72
72
  provider_section << " vb.gui = true\n" unless host['vb_gui'].nil?
73
73
 
74
- provider_section << " [\"modifyvm\", :id, \"--cpuidset\", \"1\",\"000206a7\",\"02100800\",\"1fbae3bf\",\"bfebfbff\"\]" if /osx/i.match(host['platform'])
74
+ provider_section << " vb.customize ['modifyvm', :id, '--cpuidset', '1','000206a7','02100800','1fbae3bf','bfebfbff']\n" if /osx/i.match(host['platform'])
75
75
 
76
76
  if host['disk_path']
77
77
  unless File.exist?(host['disk_path'])
@@ -19,9 +19,10 @@ describe Beaker::VagrantCustom do
19
19
  expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
20
20
  end
21
21
  expect( vagrant ).to receive( :hack_etc_hosts ).with( @hosts, options ).once
22
- FakeFS.activate!
23
22
  expect( vagrant ).to receive( :vagrant_cmd ).with( "up" ).once
24
- vagrant.provision
23
+ FakeFS do
24
+ vagrant.provision
25
+ end
25
26
  end
26
27
 
27
28
  context 'takes vagrant configuration from existing file' do
@@ -2,71 +2,57 @@ require 'spec_helper'
2
2
 
3
3
  describe Beaker::VagrantDesktop do
4
4
  let( :options ) { make_opts.merge({ :hosts_file => 'sample.cfg', 'logger' => double().as_null_object }) }
5
- let( :vagrant ) { Beaker::VagrantDesktop.new( @hosts, options ) }
6
-
7
- before :each do
8
- @hosts = make_hosts()
9
- end
5
+ let( :vagrant ) { described_class.new( hosts, options ) }
6
+ let( :hosts ) { make_hosts }
10
7
 
11
8
  it "uses the vmware_desktop provider for provisioning" do
12
- @hosts.each do |host|
9
+ hosts.each do |host|
13
10
  host_prev_name = host['user']
14
11
  expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
15
12
  expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
16
13
  expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
17
14
  end
18
- expect( vagrant ).to receive( :hack_etc_hosts ).with( @hosts, options ).once
15
+ expect( vagrant ).to receive( :hack_etc_hosts ).with( hosts, options ).once
19
16
  expect( vagrant ).to receive( :vagrant_cmd ).with( "up --provider vmware_desktop" ).once
20
- vagrant.provision
21
- end
22
-
23
- it "can make a Vagranfile for a set of hosts" do
24
- path = vagrant.instance_variable_get( :@vagrant_path )
25
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
26
-
27
- vagrant.make_vfile( @hosts )
28
-
29
- vagrantfile = File.read( File.expand_path( File.join( path, "Vagrantfile")))
30
- expect( vagrantfile ).to include( %Q{ v.vm.provider :vmware_desktop do |v|\n v.vmx['memsize'] = '1024'\n end})
17
+ FakeFS do
18
+ vagrant.provision
19
+ end
31
20
  end
32
21
 
33
- it "can enable whitelist_verified on hosts" do
34
- path = vagrant.instance_variable_get( :@vagrant_path )
35
- hosts = make_hosts({:whitelist_verified => true},1)
36
-
37
- vagrant.make_vfile( hosts )
38
-
39
- vagrantfile = File.read( File.expand_path( File.join( path, 'Vagrantfile' )))
40
- expect( vagrantfile ).to include( %Q{ v.vmx['whitelist_verified'] = 'true'})
41
- end
22
+ context 'can make a Vagrantfile' do
23
+ subject do
24
+ FakeFS do
25
+ vagrant.make_vfile(hosts)
26
+ File.read(vagrant.instance_variable_get(:@vagrant_file))
27
+ end
28
+ end
42
29
 
43
- it "can enable functional_hgfs on hosts" do
44
- path = vagrant.instance_variable_get( :@vagrant_path )
45
- hosts = make_hosts({:functional_hgfs => true},1)
30
+ it "for a set of hosts" do
31
+ is_expected.to include( %Q{ v.vm.provider :vmware_desktop do |v|\n v.vmx['memsize'] = '1024'\n end})
32
+ end
46
33
 
47
- vagrant.make_vfile( hosts )
34
+ context 'with whitelist_verified' do
35
+ let(:hosts) { make_hosts({:whitelist_verified => true}, 1) }
48
36
 
49
- vagrantfile = File.read( File.expand_path( File.join( path, 'Vagrantfile' )))
50
- expect( vagrantfile ).to include( %Q{ v.vmx['functional_hgfs'] = 'true'})
51
- end
37
+ it { is_expected.to include( %Q{ v.vmx['whitelist_verified'] = 'true'}) }
38
+ end
52
39
 
53
- it "can enable unmount_default_hgfs on hosts" do
54
- path = vagrant.instance_variable_get( :@vagrant_path )
55
- hosts = make_hosts({:unmount_default_hgfs => true},1)
40
+ context 'with functional_hgfs' do
41
+ let(:hosts) { make_hosts({:functional_hgfs => true}, 1) }
56
42
 
57
- vagrant.make_vfile( hosts )
43
+ it { is_expected.to include( %Q{ v.vmx['functional_hgfs'] = 'true'}) }
44
+ end
58
45
 
59
- vagrantfile = File.read( File.expand_path( File.join( path, 'Vagrantfile' )))
60
- expect( vagrantfile ).to include( %Q{ v.vmx['unmount_default_hgfs'] = 'true'})
61
- end
46
+ context 'with unmount_default_hgfs' do
47
+ let(:hosts) { make_hosts({:unmount_default_hgfs => true}, 1) }
62
48
 
63
- it "can enable gui on hosts" do
64
- path = vagrant.instance_variable_get( :@vagrant_path )
65
- hosts = make_hosts({:gui => true},1)
49
+ it { is_expected.to include( %Q{ v.vmx['unmount_default_hgfs'] = 'true'}) }
50
+ end
66
51
 
67
- vagrant.make_vfile( hosts )
52
+ context "with gui" do
53
+ let(:hosts) { make_hosts({:gui => true},1) }
68
54
 
69
- vagrantfile = File.read( File.expand_path( File.join( path, 'Vagrantfile' )))
70
- expect( vagrantfile ).to include( %Q{ v.vmx['gui'] = true})
55
+ it { is_expected.to include( %Q{ v.vmx['gui'] = true}) }
56
+ end
71
57
  end
72
58
  end
@@ -2,31 +2,31 @@ require 'spec_helper'
2
2
 
3
3
  describe Beaker::VagrantFusion do
4
4
  let( :options ) { make_opts.merge({ :hosts_file => 'sample.cfg', 'logger' => double().as_null_object }) }
5
- let( :vagrant ) { Beaker::VagrantFusion.new( @hosts, options ) }
6
-
7
- before :each do
8
- @hosts = make_hosts()
9
- end
5
+ let( :vagrant ) { described_class.new( hosts, options ) }
6
+ let( :hosts ) { make_hosts() }
10
7
 
11
8
  it "uses the vmware_fusion provider for provisioning" do
12
- @hosts.each do |host|
9
+ hosts.each do |host|
13
10
  host_prev_name = host['user']
14
11
  expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
15
12
  expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
16
13
  expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
17
14
  end
18
- expect( vagrant ).to receive( :hack_etc_hosts ).with( @hosts, options ).once
15
+ expect( vagrant ).to receive( :hack_etc_hosts ).with( hosts, options ).once
19
16
  expect( vagrant ).to receive( :vagrant_cmd ).with( "up --provider vmware_fusion" ).once
20
17
  vagrant.provision
21
18
  end
22
19
 
23
- it "can make a Vagranfile for a set of hosts" do
24
- path = vagrant.instance_variable_get( :@vagrant_path )
25
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
26
-
27
- vagrant.make_vfile( @hosts )
20
+ context 'Correct vagrant configuration' do
21
+ subject do
22
+ FakeFS do
23
+ vagrant.make_vfile( hosts, options )
24
+ File.read(vagrant.instance_variable_get(:@vagrant_file))
25
+ end
26
+ end
28
27
 
29
- vagrantfile = File.read( File.expand_path( File.join( path, "Vagrantfile")))
30
- expect( vagrantfile ).to include( %Q{ v.vm.provider :vmware_fusion do |v|\n v.vmx['memsize'] = '1024'\n end})
28
+ it 'has a provider section' do
29
+ is_expected.to include( %Q{ v.vm.provider :vmware_fusion do |v|\n v.vmx['memsize'] = '1024'\n end})
30
+ end
31
31
  end
32
32
  end
@@ -6,56 +6,53 @@ describe Beaker::VagrantLibvirt do
6
6
  'libvirt' => { 'uri' => 'qemu+ssh://root@host/system'},
7
7
  'vagrant_cpus' => 2,
8
8
  }) }
9
- let( :vagrant ) { Beaker::VagrantLibvirt.new( @hosts, options ) }
10
-
11
- before :each do
12
- @hosts = make_hosts()
9
+ let( :vagrant ) { described_class.new( hosts, options ) }
10
+ let( :hosts ) do
11
+ make_hosts().each do |host|
12
+ host.delete('ip')
13
+ end
13
14
  end
14
15
 
15
16
  it "uses the vagrant_libvirt provider for provisioning" do
16
- @hosts.each do |host|
17
+ hosts.each do |host|
17
18
  host_prev_name = host['user']
18
19
  expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
19
20
  expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
20
21
  expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
21
22
  end
22
- expect( vagrant ).to receive( :hack_etc_hosts ).with( @hosts, options ).once
23
- FakeFS.activate!
23
+ expect( vagrant ).to receive( :hack_etc_hosts ).with( hosts, options ).once
24
24
  expect( vagrant ).to receive( :vagrant_cmd ).with( "up --provider libvirt" ).once
25
- vagrant.provision
25
+ FakeFS do
26
+ vagrant.provision
27
+ end
26
28
  end
27
29
 
28
30
  context 'Correct vagrant configuration' do
29
- before(:each) do
30
- FakeFS.activate!
31
- path = vagrant.instance_variable_get( :@vagrant_path )
31
+ subject do
32
+ FakeFS do
33
+ vagrant.make_vfile( hosts, options )
34
+ File.read(vagrant.instance_variable_get(:@vagrant_file))
35
+ end
36
+ end
32
37
 
33
- vagrant.make_vfile( @hosts, options )
34
- @vagrantfile = File.read( File.expand_path( File.join( path, "Vagrantfile")))
38
+ it 'has a provider section' do
39
+ is_expected.to include( %Q{ v.vm.provider :libvirt do |node|})
35
40
  end
36
41
 
37
- it "can make a Vagranfile for a set of hosts" do
38
- expect( @vagrantfile ).to include( %Q{ v.vm.provider :libvirt do |node|})
42
+ it "has no private network" do
43
+ is_expected.to include('v.vm.network :private_network')
39
44
  end
40
45
 
41
46
  it "can specify the memory as an integer" do
42
- expect( @vagrantfile.split("\n").map(&:strip) )
43
- .to include('node.memory = 1024')
47
+ is_expected.to include('node.memory = 1024')
44
48
  end
45
49
 
46
50
  it "can specify the number of cpus" do
47
- expect( @vagrantfile.split("\n").map(&:strip) )
48
- .to include("node.cpus = 2")
51
+ is_expected.to include("node.cpus = 2")
49
52
  end
50
53
 
51
54
  it "can specify any libvirt option" do
52
- expect( @vagrantfile.split("\n").map(&:strip) )
53
- .to include("node.uri = 'qemu+ssh://root@host/system'")
54
- end
55
-
56
- it "has a mac address in the proper format" do
57
- expect( @vagrantfile.split("\n").map(&:strip) )
58
- .to include(/:mac => "08:00:27:\h{2}:\h{2}:\h{2}"/)
55
+ is_expected.to include("node.uri = 'qemu+ssh://root@host/system'")
59
56
  end
60
57
  end
61
58
  end
@@ -2,43 +2,40 @@ require 'spec_helper'
2
2
 
3
3
  describe Beaker::VagrantParallels do
4
4
  let( :options ) { make_opts.merge({ :hosts_file => 'sample.cfg', 'logger' => double().as_null_object }) }
5
- let( :vagrant ) { Beaker::VagrantParallels.new( @hosts, options ) }
6
-
7
- before :each do
8
- @hosts = make_hosts()
9
- end
5
+ let( :vagrant ) { Beaker::VagrantParallels.new( hosts, options ) }
6
+ let( :hosts ) { make_hosts }
10
7
 
11
8
  it "uses the parallels provider for provisioning" do
12
- @hosts.each do |host|
9
+ hosts.each do |host|
13
10
  host_prev_name = host['user']
14
11
  expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
15
12
  expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
16
13
  expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
17
14
  end
18
- expect( vagrant ).to receive( :hack_etc_hosts ).with( @hosts, options ).once
15
+ expect( vagrant ).to receive( :hack_etc_hosts ).with( hosts, options ).once
19
16
  expect( vagrant ).to receive( :vagrant_cmd ).with( "up --provider parallels" ).once
20
17
  vagrant.provision
21
18
  end
22
19
 
23
- it "can make a Vagranfile for a set of hosts" do
24
- path = vagrant.instance_variable_get( :@vagrant_path )
25
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
26
-
27
- vagrant.make_vfile( @hosts )
20
+ context 'Correct vagrant configuration' do
21
+ subject do
22
+ FakeFS do
23
+ vagrant.make_vfile( hosts, options )
24
+ File.read(vagrant.instance_variable_get(:@vagrant_file))
25
+ end
26
+ end
28
27
 
29
- vagrantfile = File.read( File.expand_path( File.join( path, 'Vagrantfile' )))
30
- expect( vagrantfile ).to include( %Q{ v.vm.provider :parallels do |prl|\n prl.optimize_power_consumption = false\n prl.memory = '1024'\n end})
28
+ it "can make a Vagrantfile for a set of hosts" do
29
+ is_expected.to include( %Q{ v.vm.provider :parallels do |prl|\n prl.optimize_power_consumption = false\n prl.memory = '1024'\n end})
30
+ end
31
31
  end
32
32
 
33
- it "can disable the auto-update functionality of the Parallels Guest Tools" do
34
- options.merge!({ :prl_update_guest_tools => 'disable' })
35
-
36
- vfile_section = vagrant.class.provider_vfile_section( @hosts.first, options )
37
-
38
- match = vfile_section.match(/prl.update_guest_tools = false/)
39
-
40
- expect( match ).to_not be nil
33
+ context 'disabled guest tools' do
34
+ let(:options) { super().merge({ :prl_update_guest_tools => 'disable' }) }
35
+ subject { vagrant.class.provider_vfile_section( hosts.first, options ) }
41
36
 
37
+ it "can disable the auto-update functionality of the Parallels Guest Tools" do
38
+ is_expected.to match(/prl.update_guest_tools = false/)
39
+ end
42
40
  end
43
-
44
41
  end
@@ -29,17 +29,15 @@ module Beaker
29
29
  })
30
30
  end
31
31
 
32
- it "stores the vagrant file in $WORKINGDIR/.vagrant/beaker_vagrant_files/sample.cfg" do
33
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
32
+ it "stores the vagrant file in $WORKINGDIR/.vagrant/beaker_vagrant_files/beaker_sample.cfg" do
34
33
  path = vagrant.instance_variable_get( :@vagrant_path )
35
34
 
36
- expect( path ).to be === File.join(Dir.pwd, '.vagrant', 'beaker_vagrant_files', 'sample.cfg')
35
+ expect( path ).to be === File.join(Dir.pwd, '.vagrant', 'beaker_vagrant_files', 'beaker_sample.cfg')
37
36
 
38
37
  end
39
38
 
40
39
  it "can make a Vagrantfile for a set of hosts" do
41
40
  path = vagrant.instance_variable_get( :@vagrant_path )
42
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
43
41
 
44
42
  vagrant.make_vfile( @hosts )
45
43
 
@@ -53,7 +51,7 @@ Vagrant.configure("2") do |c|
53
51
  v.vm.box = 'vm2vm1_of_my_box'
54
52
  v.vm.box_url = 'http://address.for.my.box.vm1'
55
53
  v.vm.box_check_update = 'true'
56
- v.vm.network :private_network, ip: "ip.address.for.vm1", :netmask => "255.255.0.0", :mac => "0123456789"
54
+ v.vm.network :private_network, ip: "ip.address.for.vm1", :netmask => "255.255.0.0"
57
55
  v.vm.synced_folder './', '/temp', create: true
58
56
  v.vm.synced_folder '../', '/tmp', create: true
59
57
  v.vm.network :forwarded_port, guest: 80, host: 10080
@@ -68,7 +66,7 @@ Vagrant.configure("2") do |c|
68
66
  v.vm.box = 'vm2vm2_of_my_box'
69
67
  v.vm.box_url = 'http://address.for.my.box.vm2'
70
68
  v.vm.box_check_update = 'true'
71
- v.vm.network :private_network, ip: "ip.address.for.vm2", :netmask => "255.255.0.0", :mac => "0123456789"
69
+ v.vm.network :private_network, ip: "ip.address.for.vm2", :netmask => "255.255.0.0"
72
70
  v.vm.synced_folder './', '/temp', create: true
73
71
  v.vm.synced_folder '../', '/tmp', create: true
74
72
  v.vm.network :forwarded_port, guest: 80, host: 10080
@@ -83,7 +81,7 @@ Vagrant.configure("2") do |c|
83
81
  v.vm.box = 'vm2vm3_of_my_box'
84
82
  v.vm.box_url = 'http://address.for.my.box.vm3'
85
83
  v.vm.box_check_update = 'true'
86
- v.vm.network :private_network, ip: "ip.address.for.vm3", :netmask => "255.255.0.0", :mac => "0123456789"
84
+ v.vm.network :private_network, ip: "ip.address.for.vm3", :netmask => "255.255.0.0"
87
85
  v.vm.synced_folder './', '/temp', create: true
88
86
  v.vm.synced_folder '../', '/tmp', create: true
89
87
  v.vm.network :forwarded_port, guest: 80, host: 10080
@@ -99,7 +97,6 @@ EOF
99
97
 
100
98
  it "can make a Vagrantfile with ssh agent forwarding enabled" do
101
99
  path = vagrant.instance_variable_get( :@vagrant_path )
102
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
103
100
 
104
101
  hosts = make_hosts({},1)
105
102
  vagrant.make_vfile( hosts, options )
@@ -110,7 +107,6 @@ EOF
110
107
 
111
108
  it "can replace underscores in host.name with hypens" do
112
109
  path = vagrant.instance_variable_get( :@vagrant_path )
113
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
114
110
 
115
111
  host = make_host( 'name-with_underscore', {} )
116
112
  vagrant.make_vfile( [host,], options )
@@ -122,7 +118,6 @@ EOF
122
118
 
123
119
  it "can make a Vagrantfile with synced_folder disabled" do
124
120
  path = vagrant.instance_variable_get( :@vagrant_path )
125
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
126
121
 
127
122
  hosts = make_hosts({:synced_folder => 'disabled'},1)
128
123
  vagrant.make_vfile( hosts, options )
@@ -131,16 +126,6 @@ EOF
131
126
  expect( vagrantfile ).to match(/v.vm.synced_folder .* disabled: true/)
132
127
  end
133
128
 
134
- it "can make a Vagrantfile with network mac autogenerated" do
135
- path = vagrant.instance_variable_get( :@vagrant_path )
136
-
137
- hosts = make_hosts({},1)
138
- vagrant.make_vfile( hosts, options )
139
-
140
- vagrantfile = File.read( File.expand_path( File.join( path, "Vagrantfile")))
141
- expect( vagrantfile ).to match(/v.vm.network :private_network, ip: "ip.address.for.vm1", :netmask => "255.255.0.0", :mac => ".+/)
142
- end
143
-
144
129
  it "can make a Vagrantfile with network mac specified" do
145
130
  path = vagrant.instance_variable_get( :@vagrant_path )
146
131
 
@@ -151,16 +136,6 @@ EOF
151
136
  expect( vagrantfile ).to match(/v.vm.network :private_network, ip: "ip.address.for.vm1", :netmask => "255.255.0.0", :mac => "b6:33:ae:19:48:f9/)
152
137
  end
153
138
 
154
- it "can make a Vagrantfile with network mac disabled" do
155
- path = vagrant.instance_variable_get( :@vagrant_path )
156
-
157
- hosts = make_hosts({:network_mac => 'false'},1)
158
- vagrant.make_vfile( hosts, options )
159
-
160
- vagrantfile = File.read( File.expand_path( File.join( path, "Vagrantfile")))
161
- expect( vagrantfile ).to match(/v.vm.network :private_network, ip: "ip.address.for.vm1", :netmask => "255.255.0.0"/)
162
- end
163
-
164
139
  it "can make a Vagrantfile with improper keys for synced folders" do
165
140
  path = vagrant.instance_variable_get( :@vagrant_path )
166
141
 
@@ -182,7 +157,6 @@ EOF
182
157
 
183
158
  it "can make a Vagrantfile with optional shell provisioner" do
184
159
  path = vagrant.instance_variable_get( :@vagrant_path )
185
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
186
160
 
187
161
  shell_path = '/path/to/shell/script'
188
162
  hosts = make_hosts({
@@ -198,7 +172,6 @@ EOF
198
172
 
199
173
  it "can make a Vagrantfile with optional shell provisioner with args" do
200
174
  path = vagrant.instance_variable_get( :@vagrant_path )
201
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
202
175
 
203
176
  shell_path = '/path/to/shell/script.sh'
204
177
  shell_args = 'arg1 arg2'
@@ -216,7 +189,6 @@ EOF
216
189
 
217
190
  it "raises an error if path is not set on shell_provisioner" do
218
191
  path = vagrant.instance_variable_get( :@vagrant_path )
219
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
220
192
 
221
193
  hosts = make_hosts({:shell_provisioner => {}}, 1)
222
194
  expect{ vagrant.make_vfile( hosts, options ) }.to raise_error RuntimeError, /No path defined for shell_provisioner or path empty/
@@ -224,7 +196,6 @@ EOF
224
196
 
225
197
  it "raises an error if path is EMPTY on shell_provisioner" do
226
198
  path = vagrant.instance_variable_get( :@vagrant_path )
227
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
228
199
 
229
200
  empty_shell_path = ''
230
201
  hosts = make_hosts({
@@ -238,7 +209,6 @@ EOF
238
209
  context "when generating a windows config" do
239
210
  before do
240
211
  path = vagrant.instance_variable_get( :@vagrant_path )
241
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
242
212
  @hosts[0][:platform] = 'windows'
243
213
 
244
214
  vagrant.make_vfile( @hosts )
@@ -270,7 +240,6 @@ EOF
270
240
  context 'when generating a freebsd config' do
271
241
  before do
272
242
  path = vagrant.instance_variable_get( :@vagrant_path )
273
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
274
243
  @hosts[0][:platform] = 'freebsd'
275
244
 
276
245
  vagrant.make_vfile( @hosts )
@@ -285,15 +254,10 @@ EOF
285
254
  it 'has the proper guest setting' do
286
255
  expect( @generated_file ).to match /v.vm.guest = :freebsd\n/
287
256
  end
288
-
289
- it 'sets the vm.base_mac setting' do
290
- expect( @generated_file ).to match /v.vm.base_mac = '0123456789'\n/
291
- end
292
257
  end
293
258
 
294
259
  it "uses the memsize defined per vagrant host" do
295
260
  path = vagrant.instance_variable_get( :@vagrant_path )
296
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
297
261
 
298
262
  vagrant.make_vfile( @hosts, {'vagrant_memsize' => 'hello!'} )
299
263
 
@@ -307,7 +271,6 @@ EOF
307
271
 
308
272
  it "uses the cpus defined per vagrant host" do
309
273
  path = vagrant.instance_variable_get( :@vagrant_path )
310
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
311
274
 
312
275
  vagrant.make_vfile( @hosts, {'vagrant_cpus' => 'goodbye!'} )
313
276
 
@@ -322,7 +285,6 @@ EOF
322
285
  context "port forwarding rules" do
323
286
  it "supports all Vagrant parameters" do
324
287
  path = vagrant.instance_variable_get( :@vagrant_path )
325
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
326
288
 
327
289
  hosts = make_hosts(
328
290
  {
@@ -344,7 +306,6 @@ EOF
344
306
 
345
307
  it "supports supports from_ip" do
346
308
  path = vagrant.instance_variable_get( :@vagrant_path )
347
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
348
309
 
349
310
  hosts = make_hosts(
350
311
  {
@@ -364,7 +325,6 @@ EOF
364
325
 
365
326
  it "supports all to_ip" do
366
327
  path = vagrant.instance_variable_get( :@vagrant_path )
367
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
368
328
 
369
329
  hosts = make_hosts(
370
330
  {
@@ -384,7 +344,6 @@ EOF
384
344
 
385
345
  it "supports all protocol" do
386
346
  path = vagrant.instance_variable_get( :@vagrant_path )
387
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
388
347
 
389
348
  hosts = make_hosts(
390
349
  {
@@ -451,55 +410,57 @@ EOF
451
410
  end
452
411
 
453
412
  describe "set_ssh_config" do
454
- let( :out ) { double( 'stdout' ) }
413
+ let( :out ) do
414
+ <<-CONFIG
415
+ Host #{name}
416
+ HostName 127.0.0.1
417
+ User vagrant
418
+ Port 2222
419
+ UserKnownHostsFile /dev/null
420
+ StrictHostKeyChecking no
421
+ PasswordAuthentication no
422
+ IdentityFile /home/root/.vagrant.d/insecure_private_key
423
+ IdentitiesOnly yes
424
+ CONFIG
425
+ end
455
426
  let( :host ) { @hosts[0] }
456
427
  let( :name ) { host.name }
457
- let( :file ) { double( 'file' ) }
428
+ let( :override_options ) { {} }
458
429
 
459
430
  before :each do
460
- allow( Dir ).to receive( :chdir ).and_yield()
461
- wait_thr = OpenStruct.new
462
- state = double( 'state' )
463
- allow( state ).to receive( :success? ).and_return( true )
464
- wait_thr.value = state
465
-
466
- allow( Open3 ).to receive( :popen3 ).with( {"RUBYLIB"=>"", "RUBYOPT"=>""}, 'vagrant', 'ssh-config', name ).and_return( [ "", out, "", wait_thr ])
431
+ # FakeFS is just broken with Tempfile
432
+ FakeFS.deactivate!
433
+ Dir.mktmpdir do |dir|
434
+ vagrant.instance_variable_get(:@options).merge!(override_options)
435
+ vagrant.instance_variable_set(:@vagrant_path, dir)
436
+ state = double( 'state' )
437
+ allow( state ).to receive( :success? ).and_return( true )
438
+ allow( Open3 ).to receive( :capture3 ).with( {"RUBYLIB"=>"", "RUBYOPT"=>""}, 'vagrant', 'ssh-config', name ).and_return( [ out, "", state ])
467
439
 
468
- allow( file ).to receive( :path ).and_return( '/path/sshconfig' )
469
- allow( file ).to receive( :rewind ).and_return( true )
440
+ vagrant.set_ssh_config( host, 'root' )
441
+ end
442
+ end
470
443
 
471
- allow( out ).to receive( :read ).and_return("Host #{name}
472
- HostName 127.0.0.1
473
- User vagrant
474
- Port 2222
475
- UserKnownHostsFile /dev/null
476
- StrictHostKeyChecking no
477
- PasswordAuthentication no
478
- IdentityFile /home/root/.vagrant.d/insecure_private_key
479
- IdentitiesOnly yes")
444
+ it 'sets the user to root' do
445
+ expect(host['user']).to be === 'root'
480
446
  end
481
447
 
482
- it "can generate a ssh-config file" do
483
- expect( Tempfile ).to receive( :new ).with( "#{host.name}").and_return( file )
484
- expect( file ).to receive( :write ).with("Host ip.address.for.#{name}\n HostName 127.0.0.1\n User root\n Port 2222\n UserKnownHostsFile /dev/null\n StrictHostKeyChecking no\n PasswordAuthentication no\n IdentityFile /home/root/.vagrant.d/insecure_private_key\n IdentitiesOnly no")
448
+ it 'sets the ssh user to root' do
449
+ expect(host['ssh']['user']).to be === 'root'
450
+ end
485
451
 
486
- vagrant.set_ssh_config( host, 'root' )
487
- expect( host['ssh'] ).to be === { :config => file.path }
488
- expect( host['user']).to be === 'root'
452
+ # This is because forward_ssh_agent is true by default
453
+ it 'sets IdentitiesOnly to no' do
454
+ expect(host['ssh'][:keys_only]).to be === false
489
455
  end
490
456
 
491
457
  context "when :forward_ssh_agent is false" do
492
- it "should not change IdentitiesOnly to no" do
493
- options = vagrant.instance_variable_get( :@options )
494
- options['forward_ssh_agent'] = false
495
- options = vagrant.instance_variable_set( :@options, options )
496
-
497
- expect( Tempfile ).to receive( :new ).with( "#{host.name}").and_return( file )
498
- expect( file ).to receive( :write ).with("Host ip.address.for.#{name}\n HostName 127.0.0.1\n User root\n Port 2222\n UserKnownHostsFile /dev/null\n StrictHostKeyChecking no\n PasswordAuthentication no\n IdentityFile /home/root/.vagrant.d/insecure_private_key\n IdentitiesOnly yes")
458
+ let(:override_options) do
459
+ {forward_ssh_agent: false}
460
+ end
499
461
 
500
- vagrant.set_ssh_config( host, 'root' )
501
- expect( host['ssh'] ).to be === { :config => file.path }
502
- expect( host['user']).to be === 'root'
462
+ it "should keep IdentitiesOnly to yes" do
463
+ expect( host['ssh'][:keys_only]).to be === true
503
464
  end
504
465
  end
505
466
  end
@@ -513,17 +474,6 @@ EOF
513
474
  end
514
475
  end
515
476
 
516
- it 'calls #get_ip_from_vagrant_file' do
517
- vagrant.make_vfile(@hosts)
518
-
519
- @hosts.each do |host|
520
- allow(vagrant).to receive(:set_ssh_config).with(host, anything)
521
- expect(vagrant).to receive(:get_ip_from_vagrant_file).with(host.name)
522
- end
523
-
524
- vagrant.configure
525
- end
526
-
527
477
  it 'calls #set_all_ssh_config' do
528
478
  vagrant.make_vfile(@hosts)
529
479
  expect(vagrant).to receive(:set_all_ssh_config)
@@ -567,31 +517,6 @@ EOF
567
517
  end
568
518
  end
569
519
 
570
- describe "get_ip_from_vagrant_file" do
571
- before :each do
572
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
573
- vagrant.make_vfile( @hosts )
574
- end
575
-
576
- it "can find the correct ip for the provided hostname" do
577
- @hosts.each do |host|
578
- expect( vagrant.get_ip_from_vagrant_file(host.name) ).to be === host[:ip]
579
- end
580
-
581
- end
582
-
583
- it "returns nil if it is unable to find an ip" do
584
- expect( vagrant.get_ip_from_vagrant_file("unknown") ).to be_nil
585
- end
586
-
587
- it "raises an error if no Vagrantfile is present" do
588
- File.delete( vagrant.instance_variable_get( :@vagrant_file ) )
589
- @hosts.each do |host|
590
- expect{ vagrant.get_ip_from_vagrant_file(host.name) }.to raise_error RuntimeError, /No vagrant file found/
591
- end
592
- end
593
- end
594
-
595
520
  describe "provisioning and cleanup" do
596
521
 
597
522
  before :each do