diff options
author | Andre Arko <andre@arko.net> | 2013-07-24 23:15:29 -0700 |
---|---|---|
committer | Jessica Lynn Suttles <jlsuttles@gmail.com> | 2013-08-05 14:15:50 -0700 |
commit | 0750d45b3933a5d1f28ebf4494c8505739a3a827 (patch) | |
tree | cf42596c66c2494271f552609d5f6b06fe5a97bf /spec/commands/show_spec.rb | |
parent | 4a53681628b895c7d0d372269ffd556d78763826 (diff) | |
download | bundler-0750d45b3933a5d1f28ebf4494c8505739a3a827.tar.gz |
break out cli command specs into a dedicated dir
move the dispatch integration specs into other
load friendly_errors so we can unit test it
require Thor so we can rescue the errors
bump ArgumentError above Exception so it wins
Diffstat (limited to 'spec/commands/show_spec.rb')
-rw-r--r-- | spec/commands/show_spec.rb | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/spec/commands/show_spec.rb b/spec/commands/show_spec.rb new file mode 100644 index 0000000000..bdd3a1f6a2 --- /dev/null +++ b/spec/commands/show_spec.rb @@ -0,0 +1,102 @@ +require "spec_helper" + +describe "bundle show" do + before :each do + install_gemfile <<-G + source "file://#{gem_repo1}" + gem "rails" + G + end + + it "creates a Gemfile.lock if one did not exist" do + FileUtils.rm("Gemfile.lock") + + bundle "show" + + expect(bundled_app("Gemfile.lock")).to exist + end + + it "creates a Gemfile.lock when invoked with a gem name" do + FileUtils.rm("Gemfile.lock") + + bundle "show rails" + + expect(bundled_app("Gemfile.lock")).to exist + end + + it "prints path if gem exists in bundle" do + bundle "show rails" + expect(out).to eq(default_bundle_path('gems', 'rails-2.3.2').to_s) + end + + it "warns if path no longer exists on disk" do + FileUtils.rm_rf("#{system_gem_path}/gems/rails-2.3.2") + + bundle "show rails" + + expect(out).to match(/has been deleted/i) + expect(out).to include(default_bundle_path('gems', 'rails-2.3.2').to_s) + end + + it "prints the path to the running bundler" do + bundle "show bundler" + expect(out).to eq(File.expand_path('../../../', __FILE__)) + end + + it "complains if gem not in bundle" do + bundle "show missing" + expect(out).to match(/could not find gem 'missing'/i) + end + + it "prints path of all gems in bundle sorted by name" do + bundle "show --paths" + + expect(out).to include(default_bundle_path('gems', 'rake-10.0.2').to_s) + expect(out).to include(default_bundle_path('gems', 'rails-2.3.2').to_s) + + # Gem names are the last component of their path. + gem_list = out.split.map { |p| p.split('/').last } + expect(gem_list).to eq(gem_list.sort) + end +end + +describe "bundle show with a git repo" do + before :each do + @git = build_git "foo", "1.0" + end + + it "prints out git info" do + install_gemfile <<-G + gem "foo", :git => "#{lib_path('foo-1.0')}" + G + should_be_installed "foo 1.0" + + bundle :show + expect(out).to include("foo (1.0 #{@git.ref_for('master', 6)}") + end + + it "prints out branch names other than master" do + update_git "foo", :branch => "omg" do |s| + s.write "lib/foo.rb", "FOO = '1.0.omg'" + end + @revision = revision_for(lib_path("foo-1.0"))[0...6] + + install_gemfile <<-G + gem "foo", :git => "#{lib_path('foo-1.0')}", :branch => "omg" + G + should_be_installed "foo 1.0.omg" + + bundle :show + expect(out).to include("foo (1.0 #{@git.ref_for('omg', 6)}") + end + + it "doesn't print the branch when tied to a ref" do + sha = revision_for(lib_path("foo-1.0")) + install_gemfile <<-G + gem "foo", :git => "#{lib_path('foo-1.0')}", :ref => "#{sha}" + G + + bundle :show + expect(out).to include("foo (1.0 #{sha[0..6]})") + end +end |