vagrantup 0.8.7 → 0.8.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +21 -0
  3. data/CHANGELOG.md +25 -0
  4. data/README.md +38 -8
  5. data/Rakefile +13 -6
  6. data/bin/vagrant +6 -1
  7. data/config/default.rb +2 -2
  8. data/lib/vagrant/action/box/download.rb +14 -2
  9. data/lib/vagrant/action/vm/check_box.rb +8 -1
  10. data/lib/vagrant/action/vm/check_guest_additions.rb +6 -3
  11. data/lib/vagrant/action/vm/share_folders.rb +12 -1
  12. data/lib/vagrant/command/init.rb +1 -1
  13. data/lib/vagrant/downloaders/http.rb +29 -2
  14. data/lib/vagrant/hosts.rb +1 -0
  15. data/lib/vagrant/hosts/bsd.rb +1 -0
  16. data/lib/vagrant/hosts/freebsd.rb +51 -0
  17. data/lib/vagrant/provisioners/chef.rb +6 -5
  18. data/lib/vagrant/provisioners/chef_client.rb +1 -1
  19. data/lib/vagrant/provisioners/chef_solo.rb +13 -4
  20. data/lib/vagrant/ssh.rb +24 -49
  21. data/lib/vagrant/ssh/session.rb +1 -1
  22. data/lib/vagrant/systems/solaris.rb +57 -11
  23. data/lib/vagrant/test_helpers.rb +23 -0
  24. data/lib/vagrant/ui.rb +1 -1
  25. data/lib/vagrant/util.rb +0 -1
  26. data/lib/vagrant/util/file_checksum.rb +38 -0
  27. data/lib/vagrant/util/platform.rb +1 -1
  28. data/lib/vagrant/util/safe_exec.rb +2 -1
  29. data/lib/vagrant/version.rb +1 -1
  30. data/tasks/acceptance.rake +113 -0
  31. data/tasks/bundler.rake +3 -0
  32. data/tasks/test.rake +15 -0
  33. data/templates/commands/init/Vagrantfile.erb +3 -0
  34. data/templates/locales/en.yml +1 -1
  35. data/test/acceptance/base.rb +48 -0
  36. data/test/acceptance/box_test.rb +77 -0
  37. data/test/acceptance/destroy_test.rb +37 -0
  38. data/test/acceptance/halt_test.rb +72 -0
  39. data/test/acceptance/init_test.rb +33 -0
  40. data/test/acceptance/resume_test.rb +17 -0
  41. data/test/acceptance/ssh_test.rb +41 -0
  42. data/test/acceptance/support/config.rb +42 -0
  43. data/test/acceptance/support/isolated_environment.rb +226 -0
  44. data/test/acceptance/support/matchers/have_color.rb +9 -0
  45. data/test/acceptance/support/matchers/match_output.rb +14 -0
  46. data/test/acceptance/support/output.rb +87 -0
  47. data/test/acceptance/support/shared/base_context.rb +65 -0
  48. data/test/acceptance/support/shared/command_examples.rb +33 -0
  49. data/test/acceptance/support/tempdir.rb +34 -0
  50. data/test/acceptance/support/virtualbox.rb +36 -0
  51. data/test/acceptance/suspend_test.rb +56 -0
  52. data/test/acceptance/up_basic_test.rb +58 -0
  53. data/test/acceptance/up_with_box_url.rb +40 -0
  54. data/test/acceptance/vagrant_test.rb +47 -0
  55. data/test/acceptance/version_test.rb +20 -0
  56. data/test/buildbot/README.md +72 -0
  57. data/test/buildbot/buildbot_config/__init__.py +0 -0
  58. data/test/buildbot/buildbot_config/config/__init__.py +0 -0
  59. data/test/buildbot/buildbot_config/config/loader.py +24 -0
  60. data/test/buildbot/buildbot_config/config/master.py +24 -0
  61. data/test/buildbot/buildbot_config/config/slave.py +22 -0
  62. data/test/buildbot/buildbot_config/master/__init__.py +6 -0
  63. data/test/buildbot/buildbot_config/master/builders.py +78 -0
  64. data/test/buildbot/buildbot_config/master/buildsteps.py +100 -0
  65. data/test/buildbot/buildbot_config/master/change_sources.py +8 -0
  66. data/test/buildbot/buildbot_config/master/schedulers.py +32 -0
  67. data/test/buildbot/buildbot_config/master/slaves.py +60 -0
  68. data/test/buildbot/buildbot_config/master/status.py +52 -0
  69. data/test/buildbot/master/Makefile.sample +28 -0
  70. data/test/buildbot/master/buildbot.tac +36 -0
  71. data/test/buildbot/master/master.cfg +67 -0
  72. data/test/buildbot/master/public_html/bg_gradient.jpg +0 -0
  73. data/test/buildbot/master/public_html/default.css +545 -0
  74. data/test/buildbot/master/public_html/favicon.ico +0 -0
  75. data/test/buildbot/master/public_html/robots.txt +10 -0
  76. data/test/buildbot/master/public_html/static/css/bootstrap-1.4.0.min.css +356 -0
  77. data/test/buildbot/master/public_html/static/css/prettify.css +97 -0
  78. data/test/buildbot/master/public_html/static/css/syntax.css +60 -0
  79. data/test/buildbot/master/public_html/static/css/vagrant.base.css +205 -0
  80. data/test/buildbot/master/public_html/static/images/base_box_mac.jpg +0 -0
  81. data/test/buildbot/master/public_html/static/images/getting-started/success.jpg +0 -0
  82. data/test/buildbot/master/public_html/static/images/icons/error.png +0 -0
  83. data/test/buildbot/master/public_html/static/images/vagrant_chilling.png +0 -0
  84. data/test/buildbot/master/public_html/static/images/vagrant_holding.png +0 -0
  85. data/test/buildbot/master/public_html/static/images/vagrant_looking.png +0 -0
  86. data/test/buildbot/master/public_html/static/images/windows/alter_path.jpg +0 -0
  87. data/test/buildbot/master/public_html/static/images/windows/edit_path.jpg +0 -0
  88. data/test/buildbot/master/public_html/static/images/windows/environment_variables_button.jpg +0 -0
  89. data/test/buildbot/master/public_html/static/images/windows/port_and_ppk_path.jpg +0 -0
  90. data/test/buildbot/master/public_html/static/images/windows/ppk_selection.jpg +0 -0
  91. data/test/buildbot/master/public_html/static/images/windows/putty_first_screen.jpg +0 -0
  92. data/test/buildbot/master/public_html/static/images/windows/save_result.jpg +0 -0
  93. data/test/buildbot/master/public_html/static/images/windows/vbox_manage_default_location.jpg +0 -0
  94. data/test/buildbot/master/public_html/static/js/bootstrap-tabs.js +80 -0
  95. data/test/buildbot/master/public_html/static/js/jquery-1.7.min.js +4 -0
  96. data/test/buildbot/master/templates/authfail.html +9 -0
  97. data/test/buildbot/master/templates/build.html +205 -0
  98. data/test/buildbot/master/templates/builder.html +118 -0
  99. data/test/buildbot/master/templates/builders.html +33 -0
  100. data/test/buildbot/master/templates/buildslave.html +72 -0
  101. data/test/buildbot/master/templates/buildslaves.html +70 -0
  102. data/test/buildbot/master/templates/change.html +15 -0
  103. data/test/buildbot/master/templates/layouts/base.html +58 -0
  104. data/test/buildbot/master/templates/macros/box.html +37 -0
  105. data/test/buildbot/master/templates/macros/build_line.html +50 -0
  106. data/test/buildbot/master/templates/macros/change.html +81 -0
  107. data/test/buildbot/master/templates/macros/forms.html +300 -0
  108. data/test/buildbot/master/templates/root.html +42 -0
  109. data/test/buildbot/master/templates/waterfall.html +53 -0
  110. data/test/buildbot/requirements.txt +4 -0
  111. data/test/buildbot/scripts/deploy.sh +38 -0
  112. data/test/buildbot/scripts/setup.sh +107 -0
  113. data/test/buildbot/slave/buildbot.tac +43 -0
  114. data/test/buildbot/slave/info/admin +1 -0
  115. data/test/buildbot/slave/info/host +1 -0
  116. data/test/buildbot/tests/__init__.py +0 -0
  117. data/test/buildbot/tests/master/__init__.py +0 -0
  118. data/test/buildbot/tests/master/test_slaves.py +41 -0
  119. data/test/buildbot/vendor/choices-0.4.0.tar.gz +0 -0
  120. data/test/config/acceptance_boxes.yml +7 -0
  121. data/test/unit/test_helper.rb +4 -0
  122. data/test/unit/vagrant/action/box/download_test.rb +2 -2
  123. data/test/unit/vagrant/action/vm/check_box_test.rb +6 -1
  124. data/test/unit/vagrant/action/vm/share_folders_test.rb +1 -1
  125. data/test/unit/vagrant/command/init_test.rb +10 -0
  126. data/test/unit/vagrant/downloaders/http_test.rb +12 -1
  127. data/test/unit/vagrant/provisioners/chef_test.rb +7 -0
  128. data/test/unit/vagrant/ssh/session_test.rb +2 -2
  129. data/test/unit/vagrant/ssh_test.rb +5 -8
  130. data/vagrant.gemspec +6 -0
  131. metadata +177 -1
@@ -0,0 +1,4 @@
1
+ buildbot==0.8.5
2
+ buildbot-slave==0.8.5
3
+ pytest==2.1.0
4
+ vendor/choices-0.4.0.tar.gz
@@ -0,0 +1,38 @@
1
+ #!/bin/sh
2
+ #
3
+ # This shell script deploys the buildmaster by downloading an
4
+ # up-to-date tar.gz from GitHub and setting up the proper environment.
5
+
6
+ #----------------------------------------------------------------------
7
+ # Update the source
8
+ #----------------------------------------------------------------------
9
+ # Download the Vagrant source, extract it
10
+ cd /tmp
11
+ rm -rf vagrant
12
+ rm -rf mitchellh-vagrant-*
13
+ wget https://github.com/mitchellh/vagrant/tarball/master -O vagrant.tar.gz
14
+ tar xvzf vagrant.tar.gz
15
+ mv mitchellh-vagrant-* vagrant
16
+
17
+ # Move the code into place
18
+ cp -R vagrant/test/buildbot/* /srv/buildmaster/
19
+
20
+ # Setup the virtualenv
21
+ cd /srv/buildmaster
22
+ virtualenv --no-site-packages env
23
+
24
+ # Activate the environment
25
+ . env/bin/activate
26
+
27
+ # Install dependencies
28
+ pip install -r requirements.txt
29
+
30
+ #----------------------------------------------------------------------
31
+ # Update the buildmaster
32
+ #----------------------------------------------------------------------
33
+ # Setup environmental variables that are required
34
+ export BUILDBOT_CONFIG=/etc/buildmaster/master.cfg
35
+ export PYTHONPATH=/srv/buildmaster
36
+
37
+ # Restart the buildmaster
38
+ buildbot restart master/
@@ -0,0 +1,107 @@
1
+ #!/bin/sh
2
+ #
3
+ # This shell script installs and prepares all the software necessary
4
+ # to run the build master. This script is expected to be run as root.
5
+ # This script is made to be run only on Ubuntu 10.04 LTS at the moment.
6
+
7
+ # Update the source list
8
+ apt-get update
9
+
10
+ # Install the basic sysadmin stuff
11
+ apt-get install -y htop
12
+
13
+ # Fix the mountall bug in the AMI
14
+ sed -i -e 's/nobootwait,//' /etc/fstab
15
+
16
+ #----------------------------------------------------------------------
17
+ # Python Setup
18
+ #----------------------------------------------------------------------
19
+ # Install Python and pip
20
+ apt-get install -y python python-dev python-setuptools
21
+ easy_install pip
22
+
23
+ # Install virtualenv
24
+ pip install virtualenv
25
+
26
+ #----------------------------------------------------------------------
27
+ # Deploy Setup
28
+ #----------------------------------------------------------------------
29
+ # Install Git, which is used for all the deploys of the build master
30
+ apt-get install -y git-core
31
+
32
+ # Create the user/group for the buildmaster
33
+ groupadd buildmaster
34
+ useradd -d /home/buildmaster -g buildmaster -s /bin/bash buildmaster
35
+ mkdir /home/buildmaster
36
+ chown -R buildmaster:buildmaster /home/buildmaster
37
+
38
+ # Make the folder which will contain the buildmaster code
39
+ mkdir -p /srv/buildmaster
40
+ chown buildmaster:buildmaster /srv/buildmaster
41
+
42
+ # Make the folder which will contain the configuration for the
43
+ # buildmaster
44
+ mkdir -p /etc/buildmaster
45
+ chown buildmaster:buildmaster /etc/buildmaster
46
+
47
+ #----------------------------------------------------------------------
48
+ # Nginx Setup
49
+ #----------------------------------------------------------------------
50
+ # Install Nginx
51
+ apt-get install -y nginx
52
+
53
+ # Setup the basic directories
54
+ mkdir -p /etc/nginx/conf.d
55
+ mkdir -p /etc/nginx/sites-available
56
+ mkdir -p /etc/nginx/sites-enabled
57
+
58
+ # Setup the configuration
59
+ cat <<EOF > /etc/nginx/nginx.conf
60
+ user www-data;
61
+ worker_processes 1;
62
+
63
+ # Raise the limit on open file descriptors
64
+ worker_rlimit_nofile 30000;
65
+
66
+ error_log /var/log/nginx/error.log;
67
+ pid /var/run/nginx.pid;
68
+
69
+ events {
70
+ worker_connections 1024;
71
+ use epoll;
72
+ }
73
+
74
+ http {
75
+ include /etc/nginx/mime.types;
76
+ default_type application/octet-stream;
77
+
78
+ access_log /var/log/nginx/access.log;
79
+
80
+ sendfile on;
81
+ tcp_nopush on;
82
+ tcp_nodelay on;
83
+
84
+ keepalive_timeout 65;
85
+
86
+ include /etc/nginx/conf.d/*.conf;
87
+ include /etc/nginx/sites-enabled/*;
88
+ }
89
+ EOF
90
+
91
+ # Setup the buildbot site
92
+ cat <<EOF > /etc/nginx/sites-available/buildmaster.conf
93
+ server {
94
+ listen 80;
95
+
96
+ location / {
97
+ proxy_pass http://localhost:8000;
98
+ }
99
+ }
100
+ EOF
101
+
102
+ # Activate the buildbot site, remove the default
103
+ rm /etc/nginx/sites-enabled/default
104
+ ln -f -s /etc/nginx/sites-available/buildmaster.conf /etc/nginx/sites-enabled/buildmaster.conf
105
+
106
+ # Restart nginx
107
+ /etc/init.d/nginx restart
@@ -0,0 +1,43 @@
1
+ import os
2
+
3
+ from twisted.application import service
4
+ from buildslave.bot import BuildSlave
5
+
6
+ from buildbot_config.config.slave import options
7
+
8
+ basedir = r'.'
9
+ rotateLength = 10000000
10
+ maxRotatedFiles = 10
11
+
12
+ # if this is a relocatable tac file, get the directory containing the TAC
13
+ if basedir == '.':
14
+ import os.path
15
+ basedir = os.path.abspath(os.path.dirname(__file__))
16
+
17
+ # note: this line is matched against to check that this is a buildslave
18
+ # directory; do not edit it.
19
+ application = service.Application('buildslave')
20
+
21
+ try:
22
+ from twisted.python.logfile import LogFile
23
+ from twisted.python.log import ILogObserver, FileLogObserver
24
+ logfile = LogFile.fromFullPath(os.path.join(basedir, "twistd.log"), rotateLength=rotateLength,
25
+ maxRotatedFiles=maxRotatedFiles)
26
+ application.setComponent(ILogObserver, FileLogObserver(logfile).emit)
27
+ except ImportError:
28
+ # probably not yet twisted 8.2.0 and beyond, can't set log yet
29
+ pass
30
+
31
+ buildmaster_host = options.master_host
32
+ port = options.master_port
33
+ slavename = options.name
34
+ passwd = options.password
35
+ keepalive = 600
36
+ usepty = 0
37
+ umask = None
38
+ maxdelay = 300
39
+
40
+ s = BuildSlave(buildmaster_host, port, slavename, passwd, basedir,
41
+ keepalive, usepty, umask=umask, maxdelay=maxdelay)
42
+ s.setServiceParent(application)
43
+
@@ -0,0 +1 @@
1
+ Buildslave Admin <foo@bar.com>
@@ -0,0 +1 @@
1
+ Please put a description of this build host here
File without changes
File without changes
@@ -0,0 +1,41 @@
1
+ from buildbot.buildslave import BuildSlave
2
+
3
+ from buildbot_config.master.slaves import (
4
+ BuildSlavesFromSlaveConfigs,
5
+ SlaveConfig,
6
+ SlaveListFromConfig)
7
+
8
+ class TestSlaveListFromConfig(object):
9
+ Klass = SlaveListFromConfig
10
+
11
+ def test_parse_single(self):
12
+ """
13
+ Tests that the config parser can parse a single
14
+ slave.
15
+ """
16
+ instance = self.Klass("foo:bar")
17
+ assert 1 == len(instance)
18
+ assert SlaveConfig("foo", "bar") == instance[0]
19
+
20
+ def test_parse_multiple(self):
21
+ """
22
+ Tests that the config parser can parse multiple
23
+ slaves.
24
+ """
25
+ instance = self.Klass("foo:bar,bar:baz")
26
+ expected = [SlaveConfig("foo", "bar"), SlaveConfig("bar", "baz")]
27
+
28
+ assert 2 == len(instance)
29
+ assert expected == instance
30
+
31
+ class TestBuildSlavesFromSlaveConfig(object):
32
+ Klass = BuildSlavesFromSlaveConfigs
33
+
34
+ def test_returns_build_slaves(self):
35
+ """
36
+ Tests that build slaves are properly returned for each
37
+ slave configuration.
38
+ """
39
+ instance = self.Klass([SlaveConfig("foo", "bar")])
40
+ assert 1 == len(instance)
41
+ assert isinstance(instance[0], BuildSlave)
@@ -0,0 +1,7 @@
1
+ # This is the list of required boxes for acceptance tests, and
2
+ # their locations. The locations are used to download the boxes
3
+ # on the fly, if necessary. Additionally, a SHA1 checksum is
4
+ # given to determine if the box needs to be updated.
5
+ - name: default
6
+ url: http://files.vagrantup.com/test/boxes/default.box
7
+ checksum: 1b0a7eb6e152c5b43f45485654ff4965a7f9f604
@@ -13,6 +13,10 @@ begin
13
13
  rescue LoadError
14
14
  end
15
15
 
16
+ # Do not buffer output for tests
17
+ $stdout.sync = true
18
+ $stderr.sync = true
19
+
16
20
  # Set the home directory to some temporary directory
17
21
  ENV["HOME"] = Vagrant.source_root.join("test", "tmp", "home").to_s
18
22
 
@@ -39,9 +39,9 @@ class DownloadBoxActionTest < Test::Unit::TestCase
39
39
  assert @instance.instantiate_downloader
40
40
  end
41
41
 
42
- should "error environment if URI is invalid for any downloaders" do
42
+ should "complain that the file doesn't exist if the URI is invalid for any downloaders" do
43
43
  @env["box"].uri = "foobar"
44
- assert_raises(Vagrant::Errors::BoxDownloadUnknownType) {
44
+ assert_raises(Vagrant::Errors::DownloaderFileDoesntExist) {
45
45
  @instance.instantiate_downloader
46
46
  }
47
47
  end
@@ -40,12 +40,17 @@ class CheckBoxVMActionTest < Test::Unit::TestCase
40
40
  config.vm.box_url = "http://google.com"
41
41
  vf
42
42
 
43
+ # Save this for later because the expecations below clobber it
44
+ vms = env.env.vms
45
+
43
46
  instance = @klass.new(app, env)
44
47
  seq = sequence("seq")
45
48
  env.env.boxes.expects(:find).returns(nil)
46
49
  Vagrant::Box.expects(:add).with(env.env, env["config"].vm.box, env["config"].vm.box_url).in_sequence(seq)
47
50
  env.env.boxes.expects(:reload!).in_sequence(seq)
48
- env.env.expects(:reload_config!).in_sequence(seq)
51
+ vms.each do |name, vm|
52
+ vm.env.expects(:reload_config!).in_sequence(seq)
53
+ end
49
54
  app.expects(:call).with(env).once.in_sequence(seq)
50
55
 
51
56
  assert_nothing_raised {
@@ -120,7 +120,7 @@ class ShareFoldersVMActionTest < Test::Unit::TestCase
120
120
  setup do
121
121
  @folders = stub_shared_folders(<<-sf)
122
122
  config.vm.share_folder("foo", "fooguest", "foohost", :owner => "yo", :group => "fo")
123
- config.vm.share_folder("bar", "barguest", "barhost", :owner => "foo", :group => "bar")
123
+ config.vm.share_folder("bar", "fooguest/foo", "barhost", :owner => "foo", :group => "bar")
124
124
  config.vm.share_folder("foo_no_mount", nil, "foohost2")
125
125
  sf
126
126
  @ssh = mock("ssh")
@@ -0,0 +1,10 @@
1
+ require "test_helper"
2
+
3
+ class CommandInitCommandTest < Test::Unit::TestCase
4
+ should "create a Vagrantfile in the environment's cwd" do
5
+ path = vagrant_app
6
+ env = Vagrant::Environment.new(:cwd => path)
7
+ silence(:stdout) { env.cli("init") }
8
+ assert File.exist?(path.join("Vagrantfile"))
9
+ end
10
+ end
@@ -6,6 +6,7 @@ class HttpDownloaderTest < Test::Unit::TestCase
6
6
  @downloader.stubs(:report_progress)
7
7
  @downloader.stubs(:complete_progress)
8
8
  @uri = "http://google.com/"
9
+ @headers = nil
9
10
  end
10
11
 
11
12
  context "downloading" do
@@ -32,6 +33,16 @@ class HttpDownloaderTest < Test::Unit::TestCase
32
33
  @downloader.download!(@uri, @tempfile)
33
34
  end
34
35
 
36
+ should "create a proper net/http object without a proxy if no_proxy defined" do
37
+ @uri = "http://somewhere.direct.com/some_file"
38
+ @parsed_uri = URI.parse(@uri)
39
+ ENV["http_proxy"] = "http://user:foo@google.com"
40
+ ENV["no_proxy"] = "direct.com"
41
+ Net::HTTP.expects(:new).with(@parsed_uri.host, @parsed_uri.port, nil, nil, nil, nil).once.returns(@http)
42
+ @http.expects(:start)
43
+ @downloader.download!(@uri, @tempfile)
44
+ end
45
+
35
46
  should "enable SSL if scheme is https" do
36
47
  @uri = "https://google.com/"
37
48
  @http.expects(:use_ssl=).with(true).once
@@ -48,7 +59,7 @@ class HttpDownloaderTest < Test::Unit::TestCase
48
59
  segment.stubs(:length).returns(7)
49
60
 
50
61
  @http.stubs(:start).yields(h)
51
- h.expects(:request_get).with(@parsed_uri.request_uri).once.yields(response)
62
+ h.expects(:request_get).with(@parsed_uri.request_uri, @headers).once.yields(response)
52
63
  response.expects(:read_body).once.yields(segment)
53
64
  @tempfile.expects(:write).with(segment).once
54
65
 
@@ -186,6 +186,13 @@ class ChefProvisionerTest < Test::Unit::TestCase
186
186
  end
187
187
  end
188
188
 
189
+ should "not add the directory if the 'v-root' shared folder doesn't exist" do
190
+ @env.config.vm.shared_folders.delete("v-root")
191
+ assert_json do |data|
192
+ assert !data["vagrant"].has_key?("directory")
193
+ end
194
+ end
195
+
189
196
  should "add the config to the JSON" do
190
197
  assert_json do |data|
191
198
  assert_equal @env.config.ssh.username, data["vagrant"]["config"]["ssh"]["username"]
@@ -10,8 +10,8 @@ class SshSessionTest < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  context "exec!" do
13
- should "retry 5 times" do
14
- @session.expects(:open_channel).times(5).raises(IOError)
13
+ should "retry max_tries times" do
14
+ @session.expects(:open_channel).times(@env.config.ssh.max_tries).raises(IOError)
15
15
  assert_raises(IOError) {
16
16
  @instance.exec!("foo")
17
17
  }
@@ -9,6 +9,7 @@ class SshTest < Test::Unit::TestCase
9
9
  @env.vm.stubs(:vm).returns(@vm)
10
10
 
11
11
  @ssh = Vagrant::SSH.new(@env)
12
+ @session = mock("session")
12
13
  end
13
14
 
14
15
  setup do
@@ -177,11 +178,7 @@ class SshTest < Test::Unit::TestCase
177
178
  mock_ssh
178
179
  @ssh.stubs(:check_key_permissions)
179
180
  @ssh.stubs(:port).returns(2222)
180
- end
181
-
182
- should "return true if SSH connection works" do
183
- Net::SSH.expects(:start).yields("success")
184
- assert @ssh.up?
181
+ @session.stubs(:exec!).returns("hello\n")
185
182
  end
186
183
 
187
184
  should "return false if SSH connection times out" do
@@ -197,14 +194,14 @@ class SshTest < Test::Unit::TestCase
197
194
  end
198
195
 
199
196
  should "return false if the connection is refused" do
200
- Net::SSH.expects(:start).times(5).raises(Errno::ECONNREFUSED)
197
+ Net::SSH.expects(:start).times(@env.config.ssh.max_tries).raises(Errno::ECONNREFUSED)
201
198
  assert_nothing_raised {
202
199
  assert !@ssh.up?
203
200
  }
204
201
  end
205
202
 
206
- should "specifity the timeout as an option to execute" do
207
- @ssh.expects(:execute).yields(true).with() do |opts|
203
+ should "specify the timeout as an option to execute" do
204
+ @ssh.expects(:execute).yields(@session).with() do |opts|
208
205
  assert_equal @env.config.ssh.timeout, opts[:timeout]
209
206
  true
210
207
  end
@@ -25,8 +25,14 @@ Gem::Specification.new do |s|
25
25
 
26
26
  s.add_development_dependency "rake"
27
27
  s.add_development_dependency "contest", ">= 0.1.2"
28
+ s.add_development_dependency "log4r", "~> 1.1.9"
28
29
  s.add_development_dependency "minitest", "~> 2.5.1"
29
30
  s.add_development_dependency "mocha"
31
+ s.add_development_dependency "childprocess", "~> 0.2.3"
32
+ s.add_development_dependency "sys-proctable", "~> 0.9.0"
33
+ s.add_development_dependency "rspec-core", "~> 2.7.1"
34
+ s.add_development_dependency "rspec-expectations", "~> 2.7.0"
35
+ s.add_development_dependency "rspec-mocks", "~> 2.7.0"
30
36
 
31
37
  s.files = `git ls-files`.split("\n")
32
38
  s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
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.8.7
4
+ version: 0.8.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mitchell Hashimoto
@@ -151,6 +151,20 @@ dependencies:
151
151
  - - '>='
152
152
  - !ruby/object:Gem::Version
153
153
  version: 0.1.2
154
+ - !ruby/object:Gem::Dependency
155
+ name: log4r
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ~>
159
+ - !ruby/object:Gem::Version
160
+ version: 1.1.9
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ~>
166
+ - !ruby/object:Gem::Version
167
+ version: 1.1.9
154
168
  - !ruby/object:Gem::Dependency
155
169
  name: minitest
156
170
  requirement: !ruby/object:Gem::Requirement
@@ -179,6 +193,76 @@ dependencies:
179
193
  - - '>='
180
194
  - !ruby/object:Gem::Version
181
195
  version: '0'
196
+ - !ruby/object:Gem::Dependency
197
+ name: childprocess
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ~>
201
+ - !ruby/object:Gem::Version
202
+ version: 0.2.3
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ~>
208
+ - !ruby/object:Gem::Version
209
+ version: 0.2.3
210
+ - !ruby/object:Gem::Dependency
211
+ name: sys-proctable
212
+ requirement: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ~>
215
+ - !ruby/object:Gem::Version
216
+ version: 0.9.0
217
+ type: :development
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ~>
222
+ - !ruby/object:Gem::Version
223
+ version: 0.9.0
224
+ - !ruby/object:Gem::Dependency
225
+ name: rspec-core
226
+ requirement: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ~>
229
+ - !ruby/object:Gem::Version
230
+ version: 2.7.1
231
+ type: :development
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - ~>
236
+ - !ruby/object:Gem::Version
237
+ version: 2.7.1
238
+ - !ruby/object:Gem::Dependency
239
+ name: rspec-expectations
240
+ requirement: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ~>
243
+ - !ruby/object:Gem::Version
244
+ version: 2.7.0
245
+ type: :development
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - ~>
250
+ - !ruby/object:Gem::Version
251
+ version: 2.7.0
252
+ - !ruby/object:Gem::Dependency
253
+ name: rspec-mocks
254
+ requirement: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ~>
257
+ - !ruby/object:Gem::Version
258
+ version: 2.7.0
259
+ type: :development
260
+ prerelease: false
261
+ version_requirements: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - ~>
264
+ - !ruby/object:Gem::Version
265
+ version: 2.7.0
182
266
  description: Vagrant is a tool for building and distributing virtualized development
183
267
  environments.
184
268
  email:
@@ -299,6 +383,7 @@ files:
299
383
  - lib/vagrant/hosts/base.rb
300
384
  - lib/vagrant/hosts/bsd.rb
301
385
  - lib/vagrant/hosts/fedora.rb
386
+ - lib/vagrant/hosts/freebsd.rb
302
387
  - lib/vagrant/hosts/linux.rb
303
388
  - lib/vagrant/plugin.rb
304
389
  - lib/vagrant/provisioners.rb
@@ -329,6 +414,7 @@ files:
329
414
  - lib/vagrant/util.rb
330
415
  - lib/vagrant/util/busy.rb
331
416
  - lib/vagrant/util/counter.rb
417
+ - lib/vagrant/util/file_checksum.rb
332
418
  - lib/vagrant/util/hash_with_indifferent_access.rb
333
419
  - lib/vagrant/util/platform.rb
334
420
  - lib/vagrant/util/retryable.rb
@@ -337,6 +423,9 @@ files:
337
423
  - lib/vagrant/util/template_renderer.rb
338
424
  - lib/vagrant/version.rb
339
425
  - lib/vagrant/vm.rb
426
+ - tasks/acceptance.rake
427
+ - tasks/bundler.rake
428
+ - tasks/test.rake
340
429
  - templates/chef_server_client.erb
341
430
  - templates/chef_solo_solo.erb
342
431
  - templates/commands/init/Vagrantfile.erb
@@ -350,6 +439,92 @@ files:
350
439
  - templates/nfs/exports_linux.erb
351
440
  - templates/package_Vagrantfile.erb
352
441
  - templates/ssh_config.erb
442
+ - test/acceptance/base.rb
443
+ - test/acceptance/box_test.rb
444
+ - test/acceptance/destroy_test.rb
445
+ - test/acceptance/halt_test.rb
446
+ - test/acceptance/init_test.rb
447
+ - test/acceptance/resume_test.rb
448
+ - test/acceptance/ssh_test.rb
449
+ - test/acceptance/support/config.rb
450
+ - test/acceptance/support/isolated_environment.rb
451
+ - test/acceptance/support/matchers/have_color.rb
452
+ - test/acceptance/support/matchers/match_output.rb
453
+ - test/acceptance/support/output.rb
454
+ - test/acceptance/support/shared/base_context.rb
455
+ - test/acceptance/support/shared/command_examples.rb
456
+ - test/acceptance/support/tempdir.rb
457
+ - test/acceptance/support/virtualbox.rb
458
+ - test/acceptance/suspend_test.rb
459
+ - test/acceptance/up_basic_test.rb
460
+ - test/acceptance/up_with_box_url.rb
461
+ - test/acceptance/vagrant_test.rb
462
+ - test/acceptance/version_test.rb
463
+ - test/buildbot/README.md
464
+ - test/buildbot/buildbot_config/__init__.py
465
+ - test/buildbot/buildbot_config/config/__init__.py
466
+ - test/buildbot/buildbot_config/config/loader.py
467
+ - test/buildbot/buildbot_config/config/master.py
468
+ - test/buildbot/buildbot_config/config/slave.py
469
+ - test/buildbot/buildbot_config/master/__init__.py
470
+ - test/buildbot/buildbot_config/master/builders.py
471
+ - test/buildbot/buildbot_config/master/buildsteps.py
472
+ - test/buildbot/buildbot_config/master/change_sources.py
473
+ - test/buildbot/buildbot_config/master/schedulers.py
474
+ - test/buildbot/buildbot_config/master/slaves.py
475
+ - test/buildbot/buildbot_config/master/status.py
476
+ - test/buildbot/master/Makefile.sample
477
+ - test/buildbot/master/buildbot.tac
478
+ - test/buildbot/master/master.cfg
479
+ - test/buildbot/master/public_html/bg_gradient.jpg
480
+ - test/buildbot/master/public_html/default.css
481
+ - test/buildbot/master/public_html/favicon.ico
482
+ - test/buildbot/master/public_html/robots.txt
483
+ - test/buildbot/master/public_html/static/css/bootstrap-1.4.0.min.css
484
+ - test/buildbot/master/public_html/static/css/prettify.css
485
+ - test/buildbot/master/public_html/static/css/syntax.css
486
+ - test/buildbot/master/public_html/static/css/vagrant.base.css
487
+ - test/buildbot/master/public_html/static/images/base_box_mac.jpg
488
+ - test/buildbot/master/public_html/static/images/getting-started/success.jpg
489
+ - test/buildbot/master/public_html/static/images/icons/error.png
490
+ - test/buildbot/master/public_html/static/images/vagrant_chilling.png
491
+ - test/buildbot/master/public_html/static/images/vagrant_holding.png
492
+ - test/buildbot/master/public_html/static/images/vagrant_looking.png
493
+ - test/buildbot/master/public_html/static/images/windows/alter_path.jpg
494
+ - test/buildbot/master/public_html/static/images/windows/edit_path.jpg
495
+ - test/buildbot/master/public_html/static/images/windows/environment_variables_button.jpg
496
+ - test/buildbot/master/public_html/static/images/windows/port_and_ppk_path.jpg
497
+ - test/buildbot/master/public_html/static/images/windows/ppk_selection.jpg
498
+ - test/buildbot/master/public_html/static/images/windows/putty_first_screen.jpg
499
+ - test/buildbot/master/public_html/static/images/windows/save_result.jpg
500
+ - test/buildbot/master/public_html/static/images/windows/vbox_manage_default_location.jpg
501
+ - test/buildbot/master/public_html/static/js/bootstrap-tabs.js
502
+ - test/buildbot/master/public_html/static/js/jquery-1.7.min.js
503
+ - test/buildbot/master/templates/authfail.html
504
+ - test/buildbot/master/templates/build.html
505
+ - test/buildbot/master/templates/builder.html
506
+ - test/buildbot/master/templates/builders.html
507
+ - test/buildbot/master/templates/buildslave.html
508
+ - test/buildbot/master/templates/buildslaves.html
509
+ - test/buildbot/master/templates/change.html
510
+ - test/buildbot/master/templates/layouts/base.html
511
+ - test/buildbot/master/templates/macros/box.html
512
+ - test/buildbot/master/templates/macros/build_line.html
513
+ - test/buildbot/master/templates/macros/change.html
514
+ - test/buildbot/master/templates/macros/forms.html
515
+ - test/buildbot/master/templates/root.html
516
+ - test/buildbot/master/templates/waterfall.html
517
+ - test/buildbot/requirements.txt
518
+ - test/buildbot/scripts/deploy.sh
519
+ - test/buildbot/scripts/setup.sh
520
+ - test/buildbot/slave/buildbot.tac
521
+ - test/buildbot/slave/info/admin
522
+ - test/buildbot/slave/info/host
523
+ - test/buildbot/tests/__init__.py
524
+ - test/buildbot/tests/master/__init__.py
525
+ - test/buildbot/tests/master/test_slaves.py
526
+ - test/buildbot/vendor/choices-0.4.0.tar.gz
527
+ - test/config/acceptance_boxes.yml
353
528
  - test/unit/locales/en.yml
354
529
  - test/unit/test_helper.rb
355
530
  - test/unit/vagrant/action/box/destroy_test.rb
@@ -400,6 +575,7 @@ files:
400
575
  - test/unit/vagrant/command/base_test.rb
401
576
  - test/unit/vagrant/command/group_base_test.rb
402
577
  - test/unit/vagrant/command/helpers_test.rb
578
+ - test/unit/vagrant/command/init_test.rb
403
579
  - test/unit/vagrant/command/package_test.rb
404
580
  - test/unit/vagrant/config/base_test.rb
405
581
  - test/unit/vagrant/config/error_recorder_test.rb