vagrantup 0.7.8 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +35 -0
- data/Gemfile +1 -7
- data/Rakefile +0 -11
- data/bin/vagrant +4 -0
- data/config/default.rb +1 -2
- data/lib/vagrant.rb +7 -5
- data/lib/vagrant/action.rb +5 -1
- data/lib/vagrant/action/builtin.rb +4 -1
- data/lib/vagrant/action/general/package.rb +6 -2
- data/lib/vagrant/action/vm.rb +2 -0
- data/lib/vagrant/action/vm/clear_forwarded_ports.rb +9 -22
- data/lib/vagrant/action/vm/clear_shared_folders.rb +9 -14
- data/lib/vagrant/action/vm/customize.rb +9 -4
- data/lib/vagrant/action/vm/forward_ports.rb +10 -11
- data/lib/vagrant/action/vm/match_mac_address.rb +8 -3
- data/lib/vagrant/action/vm/modify.rb +37 -0
- data/lib/vagrant/action/vm/network.rb +9 -2
- data/lib/vagrant/action/vm/provision.rb +10 -17
- data/lib/vagrant/action/vm/provisioner_cleanup.rb +26 -0
- data/lib/vagrant/action/vm/share_folders.rb +16 -8
- data/lib/vagrant/action/warden.rb +8 -2
- data/lib/vagrant/command/ssh.rb +4 -4
- data/lib/vagrant/command/ssh_config.rb +4 -2
- data/lib/vagrant/config/ssh.rb +3 -0
- data/lib/vagrant/config/vm.rb +16 -12
- data/lib/vagrant/downloaders/http.rb +2 -0
- data/lib/vagrant/environment.rb +136 -12
- data/lib/vagrant/errors.rb +15 -0
- data/lib/vagrant/provisioners.rb +1 -1
- data/lib/vagrant/provisioners/base.rb +4 -0
- data/lib/vagrant/provisioners/chef.rb +13 -11
- data/lib/vagrant/provisioners/{chef_server.rb → chef_client.rb} +5 -5
- data/lib/vagrant/provisioners/chef_solo.rb +48 -89
- data/lib/vagrant/provisioners/shell.rb +47 -12
- data/lib/vagrant/ssh.rb +61 -27
- data/lib/vagrant/systems.rb +1 -0
- data/lib/vagrant/systems/base.rb +1 -1
- data/lib/vagrant/systems/linux.rb +7 -9
- data/lib/vagrant/systems/redhat.rb +12 -4
- data/lib/vagrant/systems/solaris.rb +9 -4
- data/lib/vagrant/systems/suse.rb +9 -0
- data/lib/vagrant/ui.rb +12 -5
- data/lib/vagrant/util.rb +2 -2
- data/lib/vagrant/util/counter.rb +22 -0
- data/lib/vagrant/util/platform.rb +1 -2
- data/lib/vagrant/util/safe_exec.rb +28 -0
- data/lib/vagrant/version.rb +1 -1
- data/lib/vagrant/vm.rb +2 -0
- data/templates/chef_solo_solo.erb +4 -4
- data/templates/commands/init/Vagrantfile.erb +4 -0
- data/templates/locales/en.yml +31 -8
- data/templates/ssh_config.erb +6 -0
- data/test/test_helper.rb +5 -3
- data/test/vagrant/action/builder_test.rb +4 -0
- data/test/vagrant/action/vm/clear_forwarded_ports_test.rb +18 -38
- data/test/vagrant/action/vm/clear_shared_folders_test.rb +7 -16
- data/test/vagrant/action/vm/customize_test.rb +12 -5
- data/test/vagrant/action/vm/forward_ports_test.rb +12 -7
- data/test/vagrant/action/vm/match_mac_address_test.rb +5 -1
- data/test/vagrant/action/vm/modify_test.rb +38 -0
- data/test/vagrant/action/vm/provision_test.rb +13 -38
- data/test/vagrant/action/vm/provisioner_cleanup_test.rb +56 -0
- data/test/vagrant/action/vm/share_folders_test.rb +10 -5
- data/test/vagrant/action/warden_test.rb +13 -7
- data/test/vagrant/config/vm_test.rb +0 -22
- data/test/vagrant/downloaders/http_test.rb +2 -0
- data/test/vagrant/environment_test.rb +110 -20
- data/test/vagrant/provisioners/{chef_server_test.rb → chef_client_test.rb} +2 -2
- data/test/vagrant/provisioners/chef_solo_test.rb +16 -173
- data/test/vagrant/ssh_test.rb +8 -43
- data/test/vagrant/systems/linux_test.rb +9 -19
- data/test/vagrant/util/counter_test.rb +29 -0
- data/test/vagrant/util/platform_test.rb +2 -2
- data/vagrant.gemspec +1 -2
- metadata +13 -23
- data/lib/vagrant/util/plain_logger.rb +0 -25
- data/lib/vagrant/util/resource_logger.rb +0 -63
- data/test/vagrant/util/plain_logger_test.rb +0 -17
- data/test/vagrant/util/resource_logger_test.rb +0 -78
data/test/vagrant/ssh_test.rb
CHANGED
@@ -20,10 +20,8 @@ class SshTest < Test::Unit::TestCase
|
|
20
20
|
mock_ssh
|
21
21
|
@ssh.stubs(:check_key_permissions)
|
22
22
|
@ssh.stubs(:port).returns(2222)
|
23
|
-
|
23
|
+
@ssh.stubs(:safe_exec)
|
24
24
|
Kernel.stubs(:system).returns(true)
|
25
|
-
|
26
|
-
Vagrant::Util::Platform.stubs(:leopard?).returns(false)
|
27
25
|
end
|
28
26
|
|
29
27
|
should "raise an exception if SSH is not found" do
|
@@ -41,7 +39,7 @@ class SshTest < Test::Unit::TestCase
|
|
41
39
|
should "check key permissions prior to exec" do
|
42
40
|
exec_seq = sequence("exec_seq")
|
43
41
|
@ssh.expects(:check_key_permissions).with(@env.config.ssh.private_key_path).once.in_sequence(exec_seq)
|
44
|
-
|
42
|
+
@ssh.expects(:safe_exec).in_sequence(exec_seq)
|
45
43
|
@ssh.connect
|
46
44
|
end
|
47
45
|
|
@@ -81,42 +79,20 @@ class SshTest < Test::Unit::TestCase
|
|
81
79
|
@ssh.connect
|
82
80
|
end
|
83
81
|
|
84
|
-
context "on leopard" do
|
85
|
-
setup do
|
86
|
-
Vagrant::Util::Platform.stubs(:leopard?).returns(true)
|
87
|
-
end
|
88
|
-
|
89
|
-
teardown do
|
90
|
-
Vagrant::Util::Platform.stubs(:leopard?).returns(false)
|
91
|
-
end
|
92
|
-
|
93
|
-
should "fork, exec, and wait" do
|
94
|
-
pid = mock("pid")
|
95
|
-
@ssh.expects(:fork).once.returns(pid)
|
96
|
-
Process.expects(:wait).with(pid)
|
97
|
-
|
98
|
-
@ssh.connect
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
82
|
context "checking windows" do
|
103
|
-
teardown do
|
104
|
-
Mario::Platform.forced = Mario::Platform::Linux
|
105
|
-
end
|
106
|
-
|
107
83
|
should "error and exit if the platform is windows" do
|
108
|
-
|
84
|
+
Vagrant::Util::Platform.stubs(:windows?).returns(true)
|
109
85
|
assert_raises(Vagrant::Errors::SSHUnavailableWindows) { @ssh.connect }
|
110
86
|
end
|
111
87
|
|
112
88
|
should "not error and exit if the platform is anything other that windows" do
|
113
|
-
|
89
|
+
Vagrant::Util::Platform.stubs(:windows?).returns(false)
|
114
90
|
assert_nothing_raised { @ssh.connect }
|
115
91
|
end
|
116
92
|
end
|
117
93
|
|
118
94
|
def ssh_exec_expect(port, key_path, uname, host)
|
119
|
-
|
95
|
+
@ssh.expects(:safe_exec).with() do |arg|
|
120
96
|
assert arg =~ /^ssh/, "ssh command expected"
|
121
97
|
assert arg =~ /-p #{port}/, "-p #{port} expected"
|
122
98
|
assert arg =~ /-i #{key_path}/, "-i #{key_path} expected"
|
@@ -171,7 +147,7 @@ class SshTest < Test::Unit::TestCase
|
|
171
147
|
|
172
148
|
should "yield an SSH session object" do
|
173
149
|
raw = mock("raw")
|
174
|
-
Net::SSH.expects(:start).
|
150
|
+
Net::SSH.expects(:start).returns(raw)
|
175
151
|
@ssh.execute do |ssh|
|
176
152
|
assert ssh.is_a?(Vagrant::SSH::Session)
|
177
153
|
assert_equal raw, ssh.session
|
@@ -227,13 +203,6 @@ class SshTest < Test::Unit::TestCase
|
|
227
203
|
}
|
228
204
|
end
|
229
205
|
|
230
|
-
should "return false if the connection is dropped" do
|
231
|
-
Net::SSH.expects(:start).raises(Net::SSH::Disconnect)
|
232
|
-
assert_nothing_raised {
|
233
|
-
assert !@ssh.up?
|
234
|
-
}
|
235
|
-
end
|
236
|
-
|
237
206
|
should "specifity the timeout as an option to execute" do
|
238
207
|
@ssh.expects(:execute).yields(true).with() do |opts|
|
239
208
|
assert_equal @env.config.ssh.timeout, opts[:timeout]
|
@@ -276,15 +245,11 @@ class SshTest < Test::Unit::TestCase
|
|
276
245
|
@stat.stubs(:owned?).returns(true)
|
277
246
|
File.stubs(:stat).returns(@stat)
|
278
247
|
|
279
|
-
|
280
|
-
end
|
281
|
-
|
282
|
-
teardown do
|
283
|
-
Mario::Platform.forced = Mario::Platform::Linux
|
248
|
+
Vagrant::Util::Platform.stubs(:windows?).returns(false)
|
284
249
|
end
|
285
250
|
|
286
251
|
should "do nothing if on windows" do
|
287
|
-
|
252
|
+
Vagrant::Util::Platform.stubs(:windows?).returns(true)
|
288
253
|
File.expects(:stat).never
|
289
254
|
@ssh.check_key_permissions(@key_path)
|
290
255
|
end
|
@@ -31,15 +31,17 @@ class LinuxSystemTest < Test::Unit::TestCase
|
|
31
31
|
setup do
|
32
32
|
@name = "foo"
|
33
33
|
@guestpath = "/bar"
|
34
|
+
@owner = "owner"
|
35
|
+
@group = "group"
|
34
36
|
end
|
35
37
|
|
36
38
|
should "create the dir, mount the folder, then set permissions" do
|
37
39
|
mount_seq = sequence("mount_seq")
|
38
40
|
@ssh.expects(:exec!).with("sudo mkdir -p #{@guestpath}").in_sequence(mount_seq)
|
39
|
-
@instance.expects(:mount_folder).with(@ssh, @name, @guestpath).in_sequence(mount_seq)
|
40
|
-
@ssh.expects(:exec!).with("sudo chown #{@
|
41
|
+
@instance.expects(:mount_folder).with(@ssh, @name, @guestpath, @owner, @group).in_sequence(mount_seq)
|
42
|
+
@ssh.expects(:exec!).with("sudo chown `id -u #{@owner}`:`id -g #{@group}` #{@guestpath}").in_sequence(mount_seq)
|
41
43
|
|
42
|
-
@instance.mount_shared_folder(@ssh, @name, @guestpath)
|
44
|
+
@instance.mount_shared_folder(@ssh, @name, @guestpath, @owner, @group)
|
43
45
|
end
|
44
46
|
end
|
45
47
|
|
@@ -50,6 +52,8 @@ class LinuxSystemTest < Test::Unit::TestCase
|
|
50
52
|
setup do
|
51
53
|
@name = "foo"
|
52
54
|
@guestpath = "bar"
|
55
|
+
@owner = "owner"
|
56
|
+
@group = "group"
|
53
57
|
@sleeptime = 0
|
54
58
|
@limit = 10
|
55
59
|
|
@@ -57,11 +61,11 @@ class LinuxSystemTest < Test::Unit::TestCase
|
|
57
61
|
end
|
58
62
|
|
59
63
|
def mount_folder
|
60
|
-
@instance.mount_folder(@ssh, @name, @guestpath, @sleeptime)
|
64
|
+
@instance.mount_folder(@ssh, @name, @guestpath, @owner, @group, @sleeptime)
|
61
65
|
end
|
62
66
|
|
63
67
|
should "execute the proper mount command" do
|
64
|
-
@ssh.expects(:exec!).with("sudo mount -t vboxsf -o uid=`id -u #{@
|
68
|
+
@ssh.expects(:exec!).with("sudo mount -t vboxsf -o uid=`id -u #{@owner}`,gid=`id -g #{@group}` #{@name} #{@guestpath}").returns(@success_return)
|
65
69
|
mount_folder
|
66
70
|
end
|
67
71
|
|
@@ -96,19 +100,5 @@ class LinuxSystemTest < Test::Unit::TestCase
|
|
96
100
|
mount_folder
|
97
101
|
}
|
98
102
|
end
|
99
|
-
|
100
|
-
should "add uid AND gid to mount" do
|
101
|
-
uid = "foo"
|
102
|
-
gid = "bar"
|
103
|
-
env = vagrant_env(vagrantfile(<<-vf))
|
104
|
-
config.vm.shared_folder_uid = "#{uid}"
|
105
|
-
config.vm.shared_folder_gid = "#{gid}"
|
106
|
-
vf
|
107
|
-
|
108
|
-
@vm.stubs(:env).returns(env)
|
109
|
-
|
110
|
-
@ssh.expects(:exec!).with("sudo mount -t vboxsf -o uid=`id -u #{uid}`,gid=`id -g #{gid}` #{@name} #{@guestpath}").returns(@success_return)
|
111
|
-
mount_folder
|
112
|
-
end
|
113
103
|
end
|
114
104
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class CounterUtilTest < Test::Unit::TestCase
|
4
|
+
setup do
|
5
|
+
@klass = Class.new do
|
6
|
+
extend Vagrant::Util::Counter
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
context "basic counter" do
|
11
|
+
should "get and update the counter" do
|
12
|
+
assert_equal 1, @klass.get_and_update_counter
|
13
|
+
assert_equal 2, @klass.get_and_update_counter
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context "multiple classes with a counter" do
|
18
|
+
setup do
|
19
|
+
@klass2 = Class.new do
|
20
|
+
extend Vagrant::Util::Counter
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
should "not affect other classes" do
|
25
|
+
assert_equal 1, @klass.get_and_update_counter
|
26
|
+
assert_equal 1, @klass2.get_and_update_counter
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -6,12 +6,12 @@ class PlatformTest < Test::Unit::TestCase
|
|
6
6
|
# This constant is not defined on non-windows platforms, so define it here
|
7
7
|
File::BINARY = 4096 unless defined?(File::BINARY)
|
8
8
|
|
9
|
-
|
9
|
+
Vagrant::Util::Platform.stubs(:windows?).returns(true)
|
10
10
|
assert_equal Vagrant::Util::Platform.tar_file_options, File::CREAT|File::EXCL|File::WRONLY|File::BINARY
|
11
11
|
end
|
12
12
|
|
13
13
|
should "not include binary bit on other platforms" do
|
14
|
-
|
14
|
+
Vagrant::Util::Platform.stubs(:windows?).returns(false)
|
15
15
|
assert_equal Vagrant::Util::Platform.tar_file_options, File::CREAT|File::EXCL|File::WRONLY
|
16
16
|
end
|
17
17
|
end
|
data/vagrant.gemspec
CHANGED
@@ -17,12 +17,11 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.add_dependency "archive-tar-minitar", "= 0.5.2"
|
18
18
|
s.add_dependency "erubis", "~> 2.7.0"
|
19
19
|
s.add_dependency "json", "~> 1.5.1"
|
20
|
-
s.add_dependency "mario", "~> 0.0.6"
|
21
20
|
s.add_dependency "net-ssh", "~> 2.1.4"
|
22
21
|
s.add_dependency "net-scp", "~> 1.0.4"
|
23
22
|
s.add_dependency "i18n", "~> 0.5.0"
|
24
23
|
s.add_dependency "thor", "~> 0.14.6"
|
25
|
-
s.add_dependency "virtualbox", "~> 0.
|
24
|
+
s.add_dependency "virtualbox", "~> 0.9.0"
|
26
25
|
|
27
26
|
s.add_development_dependency "rake"
|
28
27
|
s.add_development_dependency "contest", ">= 0.1.2"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrantup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mitchell Hashimoto
|
@@ -53,20 +53,6 @@ dependencies:
|
|
53
53
|
- - ~>
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: 1.5.1
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: mario
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - ~>
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: 0.0.6
|
63
|
-
type: :runtime
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - ~>
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: 0.0.6
|
70
56
|
- !ruby/object:Gem::Dependency
|
71
57
|
name: net-ssh
|
72
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,14 +115,14 @@ dependencies:
|
|
129
115
|
requirements:
|
130
116
|
- - ~>
|
131
117
|
- !ruby/object:Gem::Version
|
132
|
-
version: 0.
|
118
|
+
version: 0.9.0
|
133
119
|
type: :runtime
|
134
120
|
prerelease: false
|
135
121
|
version_requirements: !ruby/object:Gem::Requirement
|
136
122
|
requirements:
|
137
123
|
- - ~>
|
138
124
|
- !ruby/object:Gem::Version
|
139
|
-
version: 0.
|
125
|
+
version: 0.9.0
|
140
126
|
- !ruby/object:Gem::Dependency
|
141
127
|
name: rake
|
142
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -254,12 +240,14 @@ files:
|
|
254
240
|
- lib/vagrant/action/vm/host_name.rb
|
255
241
|
- lib/vagrant/action/vm/import.rb
|
256
242
|
- lib/vagrant/action/vm/match_mac_address.rb
|
243
|
+
- lib/vagrant/action/vm/modify.rb
|
257
244
|
- lib/vagrant/action/vm/network.rb
|
258
245
|
- lib/vagrant/action/vm/nfs.rb
|
259
246
|
- lib/vagrant/action/vm/nfs_helpers.rb
|
260
247
|
- lib/vagrant/action/vm/package.rb
|
261
248
|
- lib/vagrant/action/vm/package_vagrantfile.rb
|
262
249
|
- lib/vagrant/action/vm/provision.rb
|
250
|
+
- lib/vagrant/action/vm/provisioner_cleanup.rb
|
263
251
|
- lib/vagrant/action/vm/resume.rb
|
264
252
|
- lib/vagrant/action/vm/share_folders.rb
|
265
253
|
- lib/vagrant/action/vm/suspend.rb
|
@@ -314,7 +302,7 @@ files:
|
|
314
302
|
- lib/vagrant/provisioners.rb
|
315
303
|
- lib/vagrant/provisioners/base.rb
|
316
304
|
- lib/vagrant/provisioners/chef.rb
|
317
|
-
- lib/vagrant/provisioners/
|
305
|
+
- lib/vagrant/provisioners/chef_client.rb
|
318
306
|
- lib/vagrant/provisioners/chef_solo.rb
|
319
307
|
- lib/vagrant/provisioners/puppet.rb
|
320
308
|
- lib/vagrant/provisioners/puppet_server.rb
|
@@ -331,16 +319,17 @@ files:
|
|
331
319
|
- lib/vagrant/systems/linux/error.rb
|
332
320
|
- lib/vagrant/systems/redhat.rb
|
333
321
|
- lib/vagrant/systems/solaris.rb
|
322
|
+
- lib/vagrant/systems/suse.rb
|
334
323
|
- lib/vagrant/systems/ubuntu.rb
|
335
324
|
- lib/vagrant/test_helpers.rb
|
336
325
|
- lib/vagrant/ui.rb
|
337
326
|
- lib/vagrant/util.rb
|
338
327
|
- lib/vagrant/util/busy.rb
|
328
|
+
- lib/vagrant/util/counter.rb
|
339
329
|
- lib/vagrant/util/hash_with_indifferent_access.rb
|
340
|
-
- lib/vagrant/util/plain_logger.rb
|
341
330
|
- lib/vagrant/util/platform.rb
|
342
|
-
- lib/vagrant/util/resource_logger.rb
|
343
331
|
- lib/vagrant/util/retryable.rb
|
332
|
+
- lib/vagrant/util/safe_exec.rb
|
344
333
|
- lib/vagrant/util/stacked_proc_runner.rb
|
345
334
|
- lib/vagrant/util/template_renderer.rb
|
346
335
|
- lib/vagrant/version.rb
|
@@ -387,12 +376,14 @@ files:
|
|
387
376
|
- test/vagrant/action/vm/host_name_test.rb
|
388
377
|
- test/vagrant/action/vm/import_test.rb
|
389
378
|
- test/vagrant/action/vm/match_mac_address_test.rb
|
379
|
+
- test/vagrant/action/vm/modify_test.rb
|
390
380
|
- test/vagrant/action/vm/network_test.rb
|
391
381
|
- test/vagrant/action/vm/nfs_helpers_test.rb
|
392
382
|
- test/vagrant/action/vm/nfs_test.rb
|
393
383
|
- test/vagrant/action/vm/package_test.rb
|
394
384
|
- test/vagrant/action/vm/package_vagrantfile_test.rb
|
395
385
|
- test/vagrant/action/vm/provision_test.rb
|
386
|
+
- test/vagrant/action/vm/provisioner_cleanup_test.rb
|
396
387
|
- test/vagrant/action/vm/resume_test.rb
|
397
388
|
- test/vagrant/action/vm/share_folders_test.rb
|
398
389
|
- test/vagrant/action/vm/suspend_test.rb
|
@@ -423,7 +414,7 @@ files:
|
|
423
414
|
- test/vagrant/hosts/linux_test.rb
|
424
415
|
- test/vagrant/plugin_test.rb
|
425
416
|
- test/vagrant/provisioners/base_test.rb
|
426
|
-
- test/vagrant/provisioners/
|
417
|
+
- test/vagrant/provisioners/chef_client_test.rb
|
427
418
|
- test/vagrant/provisioners/chef_solo_test.rb
|
428
419
|
- test/vagrant/provisioners/chef_test.rb
|
429
420
|
- test/vagrant/provisioners/puppet_server_test.rb
|
@@ -435,10 +426,9 @@ files:
|
|
435
426
|
- test/vagrant/systems/linux_test.rb
|
436
427
|
- test/vagrant/ui_test.rb
|
437
428
|
- test/vagrant/util/busy_test.rb
|
429
|
+
- test/vagrant/util/counter_test.rb
|
438
430
|
- test/vagrant/util/hash_with_indifferent_access_test.rb
|
439
|
-
- test/vagrant/util/plain_logger_test.rb
|
440
431
|
- test/vagrant/util/platform_test.rb
|
441
|
-
- test/vagrant/util/resource_logger_test.rb
|
442
432
|
- test/vagrant/util/retryable_test.rb
|
443
433
|
- test/vagrant/util/stacked_proc_runner_test.rb
|
444
434
|
- test/vagrant/util/template_renderer_test.rb
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'logger'
|
2
|
-
|
3
|
-
module Vagrant
|
4
|
-
module Util
|
5
|
-
# Subclass of the standard library logger which has no format on
|
6
|
-
# its own. The message sent to the logger is outputted as-is.
|
7
|
-
class PlainLogger < ::Logger
|
8
|
-
# This is the method which is called for all debug, info, error,
|
9
|
-
# etc. methods by the logger. This is overriden to verify that
|
10
|
-
# the output is always flushed.
|
11
|
-
#
|
12
|
-
# Logger by default syncs all log devices but this just verifies
|
13
|
-
# it is truly flushed.
|
14
|
-
def add(*args)
|
15
|
-
super
|
16
|
-
@logdev.dev.flush if @logdev
|
17
|
-
end
|
18
|
-
|
19
|
-
def format_message(level, time, progname, msg)
|
20
|
-
# We do no formatting, its up to the user
|
21
|
-
"#{msg}\n"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
require 'thread'
|
2
|
-
|
3
|
-
module Vagrant
|
4
|
-
module Util
|
5
|
-
# Represents a logger for a specific resource within Vagrant. Each
|
6
|
-
# logger should be initialized and set to represent a single
|
7
|
-
# resource. Each logged message will then appear in the following
|
8
|
-
# format:
|
9
|
-
#
|
10
|
-
# [resource] message
|
11
|
-
#
|
12
|
-
# This class is thread safe. The backing class which actually does
|
13
|
-
# all the logging IO is protected.
|
14
|
-
class ResourceLogger
|
15
|
-
@@singleton_logger = nil
|
16
|
-
@@writer_lock = Mutex.new
|
17
|
-
|
18
|
-
# The resource which this logger represents.
|
19
|
-
attr_reader :resource
|
20
|
-
|
21
|
-
# The environment that this logger is part of
|
22
|
-
attr_reader :env
|
23
|
-
|
24
|
-
# The backing logger which actually handles the IO. This logger
|
25
|
-
# should be a subclass of the standard library Logger, in general.
|
26
|
-
# IMPORTANT: This logger must be thread-safe.
|
27
|
-
attr_reader :logger
|
28
|
-
|
29
|
-
class << self
|
30
|
-
# Returns a singleton logger. If one has not yet be
|
31
|
-
# instantiated, then the given environment will be used to
|
32
|
-
# create a new logger.
|
33
|
-
def singleton_logger(env=nil)
|
34
|
-
return PlainLogger.new(nil) if !env.loaded?
|
35
|
-
|
36
|
-
@@singleton_logger ||= begin
|
37
|
-
file = env.log_path.join("#{Time.now.to_i}.log")
|
38
|
-
PlainLogger.new(file)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
# Resets the singleton logger (only used for testing).
|
43
|
-
def reset_singleton_logger!
|
44
|
-
@@singleton_logger = nil
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def initialize(resource, env)
|
49
|
-
@resource = resource
|
50
|
-
@env = env
|
51
|
-
@logger = self.class.singleton_logger(env)
|
52
|
-
end
|
53
|
-
|
54
|
-
[:debug, :info, :error, :fatal].each do |method|
|
55
|
-
define_method(method) do |message|
|
56
|
-
@@writer_lock.synchronize do
|
57
|
-
logger.send(method, "[#{resource}] #{message}")
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
|
3
|
-
class PlainLoggerUtilTest < Test::Unit::TestCase
|
4
|
-
setup do
|
5
|
-
@klass = Vagrant::Util::PlainLogger
|
6
|
-
@instance = @klass.new(nil)
|
7
|
-
end
|
8
|
-
|
9
|
-
should "inherit from the standard logger" do
|
10
|
-
assert @instance.is_a?(::Logger)
|
11
|
-
end
|
12
|
-
|
13
|
-
should "just add a newline to the message" do
|
14
|
-
msg = "foo bar baz"
|
15
|
-
assert_equal "#{msg}\n", @instance.format_message("1", "2", "3", msg)
|
16
|
-
end
|
17
|
-
end
|