require "spec_helper" describe "bpm unpack" do before do goto_home end it "builds a gem from a given package.json" do FileUtils.cp fixtures("coffee-1.0.1.pre.bpkg"), "." bpm "unpack", "coffee-1.0.1.pre.bpkg" exit_status.should be_success output = stdout.read output.should include("Unpacked package into: #{Dir.pwd}/coffee-1.0.1.pre") home("coffee-1.0.1.pre/bin/coffee").should exist home("coffee-1.0.1.pre/lib/coffee.js").should exist home("coffee-1.0.1.pre/lib/coffee/base.js").should exist home("coffee-1.0.1.pre/lib/coffee/mocha/chai.js").should exist home("coffee-1.0.1.pre/qunit/coffee/test.js").should exist home("coffee-1.0.1.pre/qunit/test.js").should exist end it "can unpack to a different directory" do FileUtils.cp fixtures("coffee-1.0.1.pre.bpkg"), "." bpm "unpack", "coffee-1.0.1.pre.bpkg", "--target", "star/bucks" exit_status.should be_success output = stdout.read output.should include("Unpacked package into: #{Dir.pwd}/star/bucks/coffee-1.0.1.pre") home("star/bucks/coffee-1.0.1.pre/bin/coffee").should exist end it "can unpack more than one package" do FileUtils.cp fixtures("coffee-1.0.1.pre.bpkg"), "." FileUtils.cp fixtures("jquery-1.4.3.bpkg"), "." bpm "unpack", "coffee-1.0.1.pre.bpkg", "jquery-1.4.3.bpkg" exit_status.should be_success output = stdout.read output.should include("Unpacked package into: #{Dir.pwd}/coffee-1.0.1.pre") output.should include("Unpacked package into: #{Dir.pwd}/jquery-1.4.3") home("coffee-1.0.1.pre", "bin", "coffee").should exist home("jquery-1.4.3", "lib", "main.js").should exist end it "shows a friendly error message if bpm can't write to the given directory" do FileUtils.mkdir_p(home("bad")) cd(home("bad")) FileUtils.cp fixtures("jquery-1.4.3.bpkg"), "." FileUtils.chmod 0555, "." bpm "unpack", "jquery-1.4.3.bpkg", :track_stderr => true exit_status.should_not be_success output = stderr.read output.should include("There was a problem unpacking jquery-1.4.3.bpkg:") output.should include("Permission denied") end it "shows a friendly error message if bpm can't read the package" do FileUtils.cp fixtures("jquery-1.4.3.bpkg"), "." FileUtils.chmod 0000, "jquery-1.4.3.bpkg" bpm "unpack", "jquery-1.4.3.bpkg", :track_stderr => true exit_status.should_not be_success output = stderr.read output.should include("There was a problem unpacking jquery-1.4.3.bpkg:") output.should include("Permission denied") end end