From 9a551837d6d796858e97aebcebb7c6d0838550a2 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 3 Nov 2011 23:05:06 -0700 Subject: [PATCH] Tests for removing and repackaging a box --- test/acceptance/box_test.rb | 45 ++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/test/acceptance/box_test.rb b/test/acceptance/box_test.rb index 574d04ec0..d186cbe0d 100644 --- a/test/acceptance/box_test.rb +++ b/test/acceptance/box_test.rb @@ -1,15 +1,21 @@ +require "digest/sha1" + require File.expand_path("../base", __FILE__) class BoxTest < AcceptanceTest + def require_box(name) + if !config.boxes.has_key?(name) || !File.file?(config.boxes[name]) + raise ArgumentError, "The configuration should specify a '#{name}' box." + end + end + should "have no boxes by default" do result = execute("vagrant", "box", "list") assert result.stdout.read =~ /There are no installed boxes!/ end should "add a box from a file" do - if !config.boxes.has_key?("default") || !File.file?(config.boxes["default"]) - raise ArgumentError, "The configuration should specify a 'default' box." - end + require_box("default") # Add the box, which we expect to succeed results = execute("vagrant", "box", "add", "foo", config.boxes["default"]) @@ -43,4 +49,37 @@ class BoxTest < AcceptanceTest # TODO: Spin up an HTTP server to serve a file, add and test. skip("Need to setup HTTP server functionality") end + + should "remove a box" do + require_box("default") + + # Add the box, remove the box, then verify that the box no longer + # shows up in the list of available boxes. + execute("vagrant", "box", "add", "foo", config.boxes["default"]) + execute("vagrant", "box", "remove", "foo") + results = execute("vagrant", "box", "list") + assert(results.success?, "box list should succeed") + assert(results.stdout.read =~ /^There are no installed boxes!/, + "box list should be empty") + end + + should "repackage a box" do + require_box("default") + + original_size = File.size(config.boxes["default"]) + + # Add the box, repackage it, and verify that a package.box is + # dumped of relatively similar size. + execute("vagrant", "box", "add", "foo", config.boxes["default"]) + execute("vagrant", "box", "repackage", "foo") + + # By default, repackage should dump into package.box into the CWD + repackaged_file = @environment.workdir.join("package.box") + assert(repackaged_file.file?, "package.box should exist in cwd of environment") + + # Compare the sizes + repackaged_size = repackaged_file.size + size_diff = (repackaged_size - original_size).abs + assert(size_diff < 1000, "Sizes should be very similar") + end end