diff --git a/test/acceptance/port_forward_test.rb b/test/acceptance/port_forward_test.rb index 7aebe7b25..67952cdd8 100644 --- a/test/acceptance/port_forward_test.rb +++ b/test/acceptance/port_forward_test.rb @@ -20,6 +20,24 @@ describe "vagrant port forwarding" do env.execute("vagrant", "box", "add", "base", box_path("default")).should succeed end + def assert_port_forwarded_properly(guest_port, host_port) + # Start up a web server in another thread by SSHing into the VM. + thr = Thread.new do + assert_execute("vagrant", "ssh", "-c", "python -m SimpleHTTPServer #{guest_port}") + end + + # Verify that port forwarding works by making a simple HTTP request + # to the port. We should get a 200 response. We retry this a few times + # as we wait for the HTTP server to come online. + retryable(:tries => 5, :sleep => 2) do + result = Net::HTTP.get_response(URI.parse("http://localhost:#{host_port}/")) + result.code.should == "200" + end + ensure + # The server needs to die. This is how. + thr.kill if thr + end + it "forwards ports properly" do initialize_environment @@ -36,25 +54,27 @@ VFILE end assert_execute("vagrant", "up") + assert_port_forwarded_properly(guest_port, host_port) + end - thr = nil - begin - # Start up a web server in another thread by SSHing into the VM. - thr = Thread.new do - assert_execute("vagrant", "ssh", "-c", "python -m SimpleHTTPServer #{guest_port}") - end + it "properly overrides port forwarding from the same port" do + initialize_environment - # Verify that port forwarding works by making a simple HTTP request - # to the port. We should get a 200 response. We retry this a few times - # as we wait for the HTTP server to come online. - retryable(:tries => 5, :sleep => 2) do - result = Net::HTTP.get_response(URI.parse("http://localhost:#{host_port}/")) - result.code.should == "200" - end - ensure - # The server needs to die. This is how. - thr.kill if thr + guest_port = 3000 + host_port = 5000 + + environment.workdir.join("Vagrantfile").open("w+") do |f| + f.puts(<