README.md

Vagrant

Vagrant is a tool for building and distributing virtualized development environments.

By providing automated creation and provisioning of virtual machines using Oracle’s VirtualBox,
Vagrant provides the tools to create and configure lightweight, reproducible, and portable
virtual environments. For more information, see the part of the getting started guide
on “Why Vagrant?”

Quick Start

First, make sure your development machine has VirtualBox
installed. The setup from that point forward is very easy, since Vagrant is simply
a rubygem.

Getting Started Guide

Installing the Gem from Git

If you want the bleeding edge version of Vagrant, we try to keep master pretty stable
and you're welcome to give it a shot. The following is an example showing how to do this:

rake install

Contributing to Vagrant

Dependencies and Unit Tests

To hack on vagrant, you'll need bundler which can
be installed with a simple gem install bundler. Afterwords, do the following:

bundle install
rake

This will run the unit test suite, which should come back all green! Then you're good to go!

If you want to run Vagrant without having to install the gem, you may use bundle exec,
like so:

bundle exec bin/vagrant help

Acceptance Tests

Vagrant also comes with an acceptance test suite which runs the system
end-to-end, without mocking out any dependencies. Note that this test
suite is extremely slow, with the test suite taking hours on even
a decent system. A CI will be setup in due time to run these tests
automatically. However, it is still useful to know how to run these
tests since it is often useful to run a single test if you're working
on a specific feature.

The acceptance tests have absolutely zero dependence on the Vagrant
source. Instead, an external configuration file must be used to give
the acceptance tests some parameters (such as what Vagrant version is
running, where the Vagrant vagrant binary is, etc.). If you want to
run acceptance tests against source, or just want to see an example of
this file, you can generate it automatically for the source code:

rake acceptance:config

This will drop an acceptance_config.yml file in your working directory.
You can then run a specific acceptance test like so:

If you're developing an acceptance test and you're unsure why things
might be failing, you can also view log output for the acceptance tests,
which can be very verbose but are a great help in finding bugs: