bundler 1.4.0.pre.1 → 1.4.0.pre.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of bundler might be problematic. Click here for more details.
- data/.travis.yml +18 -7
- data/CHANGELOG.md +15 -0
- data/CONTRIBUTING.md +8 -0
- data/DEVELOPMENT.md +27 -25
- data/ISSUES.md +33 -20
- data/README.md +6 -4
- data/Rakefile +1 -1
- data/UPGRADING.md +1 -1
- data/bin/bundle +1 -1
- data/bin/bundler +10 -0
- data/bundler.gemspec +2 -2
- data/lib/bundler/capistrano.rb +4 -0
- data/lib/bundler/cli.rb +7 -0
- data/lib/bundler/current_ruby.rb +9 -1
- data/lib/bundler/definition.rb +2 -0
- data/lib/bundler/dependency.rb +3 -1
- data/lib/bundler/dsl.rb +1 -1
- data/lib/bundler/fetcher.rb +1 -1
- data/lib/bundler/friendly_errors.rb +5 -0
- data/lib/bundler/gem_helpers.rb +7 -6
- data/lib/bundler/installer.rb +27 -20
- data/lib/bundler/parallel_workers/unix_worker.rb +2 -2
- data/lib/bundler/ruby_dsl.rb +1 -1
- data/lib/bundler/ruby_version.rb +12 -3
- data/lib/bundler/rubygems_ext.rb +1 -0
- data/lib/bundler/rubygems_integration.rb +1 -1
- data/lib/bundler/runtime.rb +2 -1
- data/lib/bundler/shared_helpers.rb +13 -0
- data/lib/bundler/source/git.rb +3 -3
- data/lib/bundler/source/git/git_proxy.rb +1 -1
- data/lib/bundler/source/path.rb +1 -2
- data/lib/bundler/source/rubygems.rb +3 -5
- data/lib/bundler/version.rb +1 -1
- data/man/bundle.ronn +1 -1
- data/man/gemfile.5.ronn +6 -2
- data/spec/bundler/dsl_spec.rb +2 -2
- data/spec/bundler/friendly_errors_spec.rb +13 -0
- data/spec/{other → commands}/binstubs_spec.rb +0 -0
- data/spec/{other → commands}/check_spec.rb +0 -0
- data/spec/{other → commands}/clean_spec.rb +0 -0
- data/spec/{other → commands}/config_spec.rb +0 -0
- data/spec/{other → commands}/console_spec.rb +0 -0
- data/spec/{other → commands}/exec_spec.rb +0 -0
- data/spec/{other → commands}/help_spec.rb +0 -0
- data/spec/{other → commands}/init_spec.rb +0 -0
- data/spec/{other → commands}/licenses_spec.rb +0 -0
- data/spec/{other → commands}/newgem_spec.rb +0 -0
- data/spec/{other → commands}/open_spec.rb +0 -0
- data/spec/{other → commands}/outdated_spec.rb +0 -0
- data/spec/{other → commands}/show_spec.rb +0 -0
- data/spec/install/gems/dependency_api_spec.rb +14 -0
- data/spec/install/git_spec.rb +42 -0
- data/spec/other/bundle_ruby_spec.rb +105 -75
- data/spec/other/cli_dispatch_spec.rb +21 -0
- data/spec/other/ext_spec.rb +23 -0
- data/spec/other/platform_spec.rb +204 -4
- data/spec/resolver/platform_spec.rb +7 -1
- data/spec/runtime/setup_spec.rb +1 -1
- data/spec/support/builders.rb +5 -1
- data/spec/support/indexes.rb +1 -1
- data/spec/support/platforms.rb +9 -1
- metadata +116 -84
- checksums.yaml +0 -7
    
        data/spec/install/git_spec.rb
    CHANGED
    
    | @@ -853,6 +853,48 @@ describe "bundle install with git sources" do | |
| 853 853 | 
             
                  R
         | 
| 854 854 | 
             
                  expect(out).to eq("YES")
         | 
| 855 855 | 
             
                end
         | 
| 856 | 
            +
             | 
| 857 | 
            +
                it "does not prompt to gem install if extension fails" do
         | 
| 858 | 
            +
                  build_git "foo" do |s|
         | 
| 859 | 
            +
                    s.add_dependency "rake"
         | 
| 860 | 
            +
                    s.extensions << "Rakefile"
         | 
| 861 | 
            +
                    s.write "Rakefile", <<-RUBY
         | 
| 862 | 
            +
                      task :default do
         | 
| 863 | 
            +
                        raise
         | 
| 864 | 
            +
                      end
         | 
| 865 | 
            +
                    RUBY
         | 
| 866 | 
            +
                  end
         | 
| 867 | 
            +
             | 
| 868 | 
            +
                  install_gemfile <<-G
         | 
| 869 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 870 | 
            +
                    gem "foo", :git => "#{lib_path('foo-1.0')}"
         | 
| 871 | 
            +
                  G
         | 
| 872 | 
            +
             | 
| 873 | 
            +
                  expect(out).to include("An error occurred while installing foo (1.0)")
         | 
| 874 | 
            +
                  expect(out).not_to include("gem install foo")
         | 
| 875 | 
            +
                end
         | 
| 876 | 
            +
              end
         | 
| 877 | 
            +
             | 
| 878 | 
            +
              it "ignores git environment variables" do
         | 
| 879 | 
            +
                build_git "xxxxxx" do |s|
         | 
| 880 | 
            +
                  s.executables = "xxxxxxbar"
         | 
| 881 | 
            +
                end
         | 
| 882 | 
            +
             | 
| 883 | 
            +
                Bundler::SharedHelpers.with_clean_git_env do
         | 
| 884 | 
            +
                  ENV['GIT_DIR']       = 'bar'
         | 
| 885 | 
            +
                  ENV['GIT_WORK_TREE'] = 'bar'
         | 
| 886 | 
            +
             | 
| 887 | 
            +
                  install_gemfile <<-G, :exitstatus => true
         | 
| 888 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 889 | 
            +
                    git "#{lib_path('xxxxxx-1.0')}" do
         | 
| 890 | 
            +
                      gem 'xxxxxx'
         | 
| 891 | 
            +
                    end
         | 
| 892 | 
            +
                  G
         | 
| 893 | 
            +
             | 
| 894 | 
            +
                  expect(exitstatus).to eq(0)
         | 
| 895 | 
            +
                  expect(ENV['GIT_DIR']).to eq('bar')
         | 
| 896 | 
            +
                  expect(ENV['GIT_WORK_TREE']).to eq('bar')
         | 
| 897 | 
            +
                end
         | 
| 856 898 | 
             
              end
         | 
| 857 899 |  | 
| 858 900 | 
             
            end
         | 
| @@ -1,112 +1,142 @@ | |
| 1 1 | 
             
            require "spec_helper"
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe "bundle_ruby" do
         | 
| 4 | 
            -
               | 
| 5 | 
            -
                 | 
| 6 | 
            -
                   | 
| 7 | 
            -
             | 
| 4 | 
            +
              context "without patchlevel" do
         | 
| 5 | 
            +
                it "returns the ruby version" do
         | 
| 6 | 
            +
                  gemfile <<-G
         | 
| 7 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 8 | 
            +
                    ruby "1.9.3", :engine => 'ruby', :engine_version => '1.9.3'
         | 
| 8 9 |  | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 10 | 
            +
                    gem "foo"
         | 
| 11 | 
            +
                  G
         | 
| 11 12 |  | 
| 12 | 
            -
             | 
| 13 | 
            +
                  bundle_ruby
         | 
| 13 14 |  | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 15 | 
            +
                  expect(out).to eq("ruby 1.9.3")
         | 
| 16 | 
            +
                end
         | 
| 16 17 |  | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 18 | 
            +
                it "engine defaults to MRI" do
         | 
| 19 | 
            +
                  gemfile <<-G
         | 
| 20 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 21 | 
            +
                    ruby "1.9.3"
         | 
| 21 22 |  | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 23 | 
            +
                    gem "foo"
         | 
| 24 | 
            +
                  G
         | 
| 24 25 |  | 
| 25 | 
            -
             | 
| 26 | 
            +
                  bundle_ruby
         | 
| 26 27 |  | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 28 | 
            +
                  expect(out).to eq("ruby 1.9.3")
         | 
| 29 | 
            +
                end
         | 
| 29 30 |  | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 31 | 
            +
                it "handles jruby" do
         | 
| 32 | 
            +
                  gemfile <<-G
         | 
| 33 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 34 | 
            +
                    ruby "1.8.7", :engine => 'jruby', :engine_version => '1.6.5'
         | 
| 34 35 |  | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 36 | 
            +
                    gem "foo"
         | 
| 37 | 
            +
                  G
         | 
| 37 38 |  | 
| 38 | 
            -
             | 
| 39 | 
            +
                  bundle_ruby
         | 
| 39 40 |  | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 41 | 
            +
                  expect(out).to eq("ruby 1.8.7 (jruby 1.6.5)")
         | 
| 42 | 
            +
                end
         | 
| 42 43 |  | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 44 | 
            +
                it "handles rbx" do
         | 
| 45 | 
            +
                  gemfile <<-G
         | 
| 46 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 47 | 
            +
                    ruby "1.8.7", :engine => 'rbx', :engine_version => '1.2.4'
         | 
| 47 48 |  | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 49 | 
            +
                    gem "foo"
         | 
| 50 | 
            +
                  G
         | 
| 50 51 |  | 
| 51 | 
            -
             | 
| 52 | 
            +
                  bundle_ruby
         | 
| 52 53 |  | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 54 | 
            +
                  expect(out).to eq("ruby 1.8.7 (rbx 1.2.4)")
         | 
| 55 | 
            +
                end
         | 
| 55 56 |  | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 57 | 
            +
                it "raises an error if engine is used but engine version is not" do
         | 
| 58 | 
            +
                  gemfile <<-G
         | 
| 59 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 60 | 
            +
                    ruby "1.8.7", :engine => 'rbx'
         | 
| 60 61 |  | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 62 | 
            +
                    gem "foo"
         | 
| 63 | 
            +
                  G
         | 
| 63 64 |  | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 65 | 
            +
                  bundle_ruby :exitstatus => true
         | 
| 66 | 
            +
                  expect(exitstatus).not_to eq(0)
         | 
| 66 67 |  | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 68 | 
            +
                  bundle_ruby
         | 
| 69 | 
            +
                  expect(out).to eq("Please define :engine_version")
         | 
| 70 | 
            +
                end
         | 
| 70 71 |  | 
| 71 | 
            -
             | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 72 | 
            +
                it "raises an error if engine_version is used but engine is not" do
         | 
| 73 | 
            +
                  gemfile <<-G
         | 
| 74 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 75 | 
            +
                    ruby "1.8.7", :engine_version => '1.2.4'
         | 
| 75 76 |  | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 77 | 
            +
                    gem "foo"
         | 
| 78 | 
            +
                  G
         | 
| 78 79 |  | 
| 79 | 
            -
             | 
| 80 | 
            -
             | 
| 80 | 
            +
                  bundle_ruby :exitstatus => true
         | 
| 81 | 
            +
                  expect(exitstatus).not_to eq(0)
         | 
| 81 82 |  | 
| 82 | 
            -
             | 
| 83 | 
            -
             | 
| 84 | 
            -
             | 
| 83 | 
            +
                  bundle_ruby
         | 
| 84 | 
            +
                  expect(out).to eq("Please define :engine")
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                it "raises an error if engine version doesn't match ruby version for MRI" do
         | 
| 88 | 
            +
                  gemfile <<-G
         | 
| 89 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 90 | 
            +
                    ruby "1.8.7", :engine => 'ruby', :engine_version => '1.2.4'
         | 
| 85 91 |  | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 88 | 
            -
                  source "file://#{gem_repo1}"
         | 
| 89 | 
            -
                  ruby "1.8.7", :engine => 'ruby', :engine_version => '1.2.4'
         | 
| 92 | 
            +
                    gem "foo"
         | 
| 93 | 
            +
                  G
         | 
| 90 94 |  | 
| 91 | 
            -
                   | 
| 92 | 
            -
             | 
| 95 | 
            +
                  bundle_ruby :exitstatus => true
         | 
| 96 | 
            +
                  expect(exitstatus).not_to eq(0)
         | 
| 93 97 |  | 
| 94 | 
            -
             | 
| 95 | 
            -
             | 
| 98 | 
            +
                  bundle_ruby
         | 
| 99 | 
            +
                  expect(out).to eq("ruby_version must match the :engine_version for MRI")
         | 
| 100 | 
            +
                end
         | 
| 96 101 |  | 
| 97 | 
            -
                 | 
| 98 | 
            -
             | 
| 102 | 
            +
                it "should print if no ruby version is specified" do
         | 
| 103 | 
            +
                  gemfile <<-G
         | 
| 104 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                    gem "foo"
         | 
| 107 | 
            +
                  G
         | 
| 108 | 
            +
             | 
| 109 | 
            +
                  bundle_ruby
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                  expect(out).to eq("No ruby version specified")
         | 
| 112 | 
            +
                end
         | 
| 99 113 | 
             
              end
         | 
| 100 114 |  | 
| 101 | 
            -
               | 
| 102 | 
            -
                 | 
| 103 | 
            -
                   | 
| 115 | 
            +
              context "when using patchlevel" do
         | 
| 116 | 
            +
                it "returns the ruby version" do
         | 
| 117 | 
            +
                  gemfile <<-G
         | 
| 118 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 119 | 
            +
                    ruby "1.9.3", :patchlevel => 429, :engine => 'ruby', :engine_version => '1.9.3'
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                    gem "foo"
         | 
| 122 | 
            +
                  G
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                  bundle_ruby
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                  expect(out).to eq("ruby 1.9.3p429")
         | 
| 127 | 
            +
                end
         | 
| 128 | 
            +
             | 
| 129 | 
            +
                it "handles an engine" do
         | 
| 130 | 
            +
                  gemfile <<-G
         | 
| 131 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 132 | 
            +
                    ruby "1.9.3", :patchlevel => 392, :engine => 'jruby', :engine_version => '1.7.4'
         | 
| 104 133 |  | 
| 105 | 
            -
             | 
| 106 | 
            -
             | 
| 134 | 
            +
                    gem "foo"
         | 
| 135 | 
            +
                  G
         | 
| 107 136 |  | 
| 108 | 
            -
             | 
| 137 | 
            +
                  bundle_ruby
         | 
| 109 138 |  | 
| 110 | 
            -
             | 
| 139 | 
            +
                  expect(out).to eq("ruby 1.9.3p392 (jruby 1.7.4)")
         | 
| 140 | 
            +
                end
         | 
| 111 141 | 
             
              end
         | 
| 112 142 | 
             
            end
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            require "spec_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe "bundle command names" do
         | 
| 4 | 
            +
              it "work when given fully" do
         | 
| 5 | 
            +
                bundle "install"
         | 
| 6 | 
            +
                expect(err).to eq("")
         | 
| 7 | 
            +
                expect(out).not_to match(/Ambiguous command/)
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it "work when not ambiguous" do
         | 
| 11 | 
            +
                bundle "ins"
         | 
| 12 | 
            +
                expect(err).to eq("")
         | 
| 13 | 
            +
                expect(out).not_to match(/Ambiguous command/)
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              it "print a friendly error when ambiguous" do
         | 
| 17 | 
            +
                bundle "i"
         | 
| 18 | 
            +
                expect(err).to eq("")
         | 
| 19 | 
            +
                expect(out).to match(/Ambiguous command/)
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
    
        data/spec/other/ext_spec.rb
    CHANGED
    
    | @@ -12,6 +12,29 @@ describe "Bundler::GemHelpers#generic" do | |
| 12 12 |  | 
| 13 13 | 
             
              it "converts non-windows platforms into ruby" do
         | 
| 14 14 | 
             
                expect(generic(pl('x86-darwin-10'))).to eq(pl('ruby'))
         | 
| 15 | 
            +
                expect(generic(pl('ruby'))).to eq(pl('ruby'))
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              it "converts java platform variants into java" do
         | 
| 19 | 
            +
                expect(generic(pl('universal-java-17'))).to eq(pl('java'))
         | 
| 20 | 
            +
                expect(generic(pl('java'))).to eq(pl('java'))
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              it "converts mswin platform variants into x86-mswin32" do
         | 
| 24 | 
            +
                expect(generic(pl('mswin32'))).to eq(pl('x86-mswin32'))
         | 
| 25 | 
            +
                expect(generic(pl('i386-mswin32'))).to eq(pl('x86-mswin32'))
         | 
| 26 | 
            +
                expect(generic(pl('x86-mswin32'))).to eq(pl('x86-mswin32'))
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              it "converts 32-bit mingw platform variants into x86-mingw32" do
         | 
| 30 | 
            +
                expect(generic(pl('mingw32'))).to eq(pl('x86-mingw32'))
         | 
| 31 | 
            +
                expect(generic(pl('i386-mingw32'))).to eq(pl('x86-mingw32'))
         | 
| 32 | 
            +
                expect(generic(pl('x86-mingw32'))).to eq(pl('x86-mingw32'))
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              it "converts 64-bit mingw platform variants into x64-mingw32" do
         | 
| 36 | 
            +
                expect(generic(pl('x64-mingw32'))).to eq(pl('x64-mingw32'))
         | 
| 37 | 
            +
                expect(generic(pl('x86_64-mingw32'))).to eq(pl('x64-mingw32'))
         | 
| 15 38 | 
             
              end
         | 
| 16 39 | 
             
            end
         | 
| 17 40 |  | 
    
        data/spec/other/platform_spec.rb
    CHANGED
    
    | @@ -21,6 +21,29 @@ Your app has gems that work on these platforms: | |
| 21 21 | 
             
            Your Gemfile specifies a Ruby version requirement:
         | 
| 22 22 | 
             
            * ruby #{RUBY_VERSION}
         | 
| 23 23 |  | 
| 24 | 
            +
            Your current platform satisfies the Ruby version requirement.
         | 
| 25 | 
            +
            G
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                it "returns all the output including the patchlevel" do
         | 
| 29 | 
            +
                  gemfile <<-G
         | 
| 30 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    #{ruby_version_correct_patchlevel}
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    gem "foo"
         | 
| 35 | 
            +
                  G
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  bundle "platform"
         | 
| 38 | 
            +
                  expect(out).to eq(<<-G.chomp)
         | 
| 39 | 
            +
            Your platform is: #{RUBY_PLATFORM}
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            Your app has gems that work on these platforms:
         | 
| 42 | 
            +
            * ruby
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            Your Gemfile specifies a Ruby version requirement:
         | 
| 45 | 
            +
            * ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}
         | 
| 46 | 
            +
             | 
| 24 47 | 
             
            Your current platform satisfies the Ruby version requirement.
         | 
| 25 48 | 
             
            G
         | 
| 26 49 | 
             
                end
         | 
| @@ -175,9 +198,11 @@ G | |
| 175 198 |  | 
| 176 199 | 
             
              let(:ruby_version_correct) { "ruby \"#{RUBY_VERSION}\", :engine => \"#{local_ruby_engine}\", :engine_version => \"#{local_engine_version}\"" }
         | 
| 177 200 | 
             
              let(:ruby_version_correct_engineless) { "ruby \"#{RUBY_VERSION}\"" }
         | 
| 201 | 
            +
              let(:ruby_version_correct_patchlevel) { "#{ruby_version_correct}, :patchlevel => #{RUBY_PATCHLEVEL}" }
         | 
| 178 202 | 
             
              let(:ruby_version_incorrect) { "ruby \"#{not_local_ruby_version}\", :engine => \"#{local_ruby_engine}\", :engine_version => \"#{not_local_ruby_version}\"" }
         | 
| 179 203 | 
             
              let(:engine_incorrect) { "ruby \"#{RUBY_VERSION}\", :engine => \"#{not_local_tag}\", :engine_version => \"#{RUBY_VERSION}\"" }
         | 
| 180 204 | 
             
              let(:engine_version_incorrect) { "ruby \"#{RUBY_VERSION}\", :engine => \"#{local_ruby_engine}\", :engine_version => \"#{not_local_engine_version}\"" }
         | 
| 205 | 
            +
              let(:patchlevel_incorrect) { "#{ruby_version_correct}, :patchlevel => #{not_local_patchlevel}" }
         | 
| 181 206 |  | 
| 182 207 | 
             
              def should_be_ruby_version_incorrect(opts = {:exitstatus => true})
         | 
| 183 208 | 
             
                expect(exitstatus).to eq(18) if opts[:exitstatus]
         | 
| @@ -194,6 +219,12 @@ G | |
| 194 219 | 
             
                expect(out).to be_include("Your #{local_ruby_engine} version is #{local_engine_version}, but your Gemfile specified #{local_ruby_engine} #{not_local_engine_version}")
         | 
| 195 220 | 
             
              end
         | 
| 196 221 |  | 
| 222 | 
            +
              def should_be_patchlevel_incorrect(opts = {:exitstatus => true})
         | 
| 223 | 
            +
                expect(exitstatus).to eq(18) if opts[:exitstatus]
         | 
| 224 | 
            +
             | 
| 225 | 
            +
                expect(out).to be_include("Your Ruby patchlevel is #{RUBY_PATCHLEVEL}, but your Gemfile specified #{not_local_patchlevel}")
         | 
| 226 | 
            +
              end
         | 
| 227 | 
            +
             | 
| 197 228 | 
             
              context "bundle install" do
         | 
| 198 229 | 
             
                it "installs fine when the ruby version matches" do
         | 
| 199 230 | 
             
                  install_gemfile <<-G
         | 
| @@ -219,6 +250,17 @@ G | |
| 219 250 | 
             
                  end
         | 
| 220 251 | 
             
                end
         | 
| 221 252 |  | 
| 253 | 
            +
                it "installs fine when the patchlevel matches" do
         | 
| 254 | 
            +
                  install_gemfile <<-G
         | 
| 255 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 256 | 
            +
                    gem "rack"
         | 
| 257 | 
            +
             | 
| 258 | 
            +
                    #{ruby_version_correct_patchlevel}
         | 
| 259 | 
            +
                  G
         | 
| 260 | 
            +
             | 
| 261 | 
            +
                  expect(bundled_app('Gemfile.lock')).to exist
         | 
| 262 | 
            +
                end
         | 
| 263 | 
            +
             | 
| 222 264 | 
             
                it "doesn't install when the ruby version doesn't match" do
         | 
| 223 265 | 
             
                  install_gemfile <<-G, :exitstatus => true
         | 
| 224 266 | 
             
                    source "file://#{gem_repo1}"
         | 
| @@ -256,6 +298,18 @@ G | |
| 256 298 | 
             
                    should_be_engine_version_incorrect
         | 
| 257 299 | 
             
                  end
         | 
| 258 300 | 
             
                end
         | 
| 301 | 
            +
             | 
| 302 | 
            +
                it "doesn't install when patchlevel doesn't match" do
         | 
| 303 | 
            +
                  install_gemfile <<-G, :exitstatus => true
         | 
| 304 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 305 | 
            +
                    gem "rack"
         | 
| 306 | 
            +
             | 
| 307 | 
            +
                    #{patchlevel_incorrect}
         | 
| 308 | 
            +
                  G
         | 
| 309 | 
            +
             | 
| 310 | 
            +
                  expect(bundled_app('Gemfile.lock')).not_to exist
         | 
| 311 | 
            +
                  should_be_patchlevel_incorrect
         | 
| 312 | 
            +
                end
         | 
| 259 313 | 
             
              end
         | 
| 260 314 |  | 
| 261 315 | 
             
              context "bundle check" do
         | 
| @@ -349,6 +403,23 @@ G | |
| 349 403 | 
             
                    should_be_engine_version_incorrect
         | 
| 350 404 | 
             
                  end
         | 
| 351 405 | 
             
                end
         | 
| 406 | 
            +
             | 
| 407 | 
            +
                it "fails when patchlevel doesn't match" do
         | 
| 408 | 
            +
                  install_gemfile <<-G, :exitstatus => true
         | 
| 409 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 410 | 
            +
                    gem "rack"
         | 
| 411 | 
            +
                  G
         | 
| 412 | 
            +
             | 
| 413 | 
            +
                  gemfile <<-G
         | 
| 414 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 415 | 
            +
                    gem "rack"
         | 
| 416 | 
            +
             | 
| 417 | 
            +
                    #{patchlevel_incorrect}
         | 
| 418 | 
            +
                  G
         | 
| 419 | 
            +
             | 
| 420 | 
            +
                  bundle :check, :exitstatus => true
         | 
| 421 | 
            +
                  should_be_patchlevel_incorrect
         | 
| 422 | 
            +
                end
         | 
| 352 423 | 
             
              end
         | 
| 353 424 |  | 
| 354 425 | 
             
              context "bundle update" do
         | 
| @@ -445,6 +516,21 @@ G | |
| 445 516 | 
             
                    should_be_engine_version_incorrect
         | 
| 446 517 | 
             
                  end
         | 
| 447 518 | 
             
                end
         | 
| 519 | 
            +
             | 
| 520 | 
            +
                it "fails when patchlevel doesn't match" do
         | 
| 521 | 
            +
                  gemfile <<-G, :exitstatus => true
         | 
| 522 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 523 | 
            +
                    gem "rack"
         | 
| 524 | 
            +
             | 
| 525 | 
            +
                    #{patchlevel_incorrect}
         | 
| 526 | 
            +
                  G
         | 
| 527 | 
            +
                  update_repo2 do
         | 
| 528 | 
            +
                    build_gem "activesupport", "3.0"
         | 
| 529 | 
            +
                  end
         | 
| 530 | 
            +
             | 
| 531 | 
            +
                  bundle :update, :exitstatus => true
         | 
| 532 | 
            +
                  should_be_patchlevel_incorrect
         | 
| 533 | 
            +
                end
         | 
| 448 534 | 
             
              end
         | 
| 449 535 |  | 
| 450 536 | 
             
              context "bundle show" do
         | 
| @@ -518,6 +604,21 @@ G | |
| 518 604 | 
             
                    should_be_engine_version_incorrect
         | 
| 519 605 | 
             
                  end
         | 
| 520 606 | 
             
                end
         | 
| 607 | 
            +
             | 
| 608 | 
            +
                it "fails when patchlevel doesn't match" do
         | 
| 609 | 
            +
                  gemfile <<-G, :exitstatus => true
         | 
| 610 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 611 | 
            +
                    gem "rack"
         | 
| 612 | 
            +
             | 
| 613 | 
            +
                    #{patchlevel_incorrect}
         | 
| 614 | 
            +
                  G
         | 
| 615 | 
            +
                  update_repo2 do
         | 
| 616 | 
            +
                    build_gem "activesupport", "3.0"
         | 
| 617 | 
            +
                  end
         | 
| 618 | 
            +
             | 
| 619 | 
            +
                  bundle "show rails", :exitstatus => true
         | 
| 620 | 
            +
                  should_be_patchlevel_incorrect
         | 
| 621 | 
            +
                end
         | 
| 521 622 | 
             
              end
         | 
| 522 623 |  | 
| 523 624 | 
             
              context "bundle cache" do
         | 
| @@ -578,15 +679,27 @@ G | |
| 578 679 | 
             
                it "fails if the engine version doesn't match" do
         | 
| 579 680 | 
             
                  simulate_ruby_engine "jruby" do
         | 
| 580 681 | 
             
                    gemfile <<-G
         | 
| 581 | 
            -
             | 
| 682 | 
            +
                      gem 'rack'
         | 
| 582 683 |  | 
| 583 | 
            -
             | 
| 684 | 
            +
                      #{engine_version_incorrect}
         | 
| 584 685 | 
             
                    G
         | 
| 585 686 |  | 
| 586 687 | 
             
                    bundle :cache, :exitstatus => true
         | 
| 587 688 | 
             
                    should_be_engine_version_incorrect
         | 
| 588 689 | 
             
                  end
         | 
| 589 690 | 
             
                end
         | 
| 691 | 
            +
             | 
| 692 | 
            +
                it "fails when patchlevel doesn't match" do
         | 
| 693 | 
            +
                  gemfile <<-G, :exitstatus => true
         | 
| 694 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 695 | 
            +
                    gem "rack"
         | 
| 696 | 
            +
             | 
| 697 | 
            +
                    #{patchlevel_incorrect}
         | 
| 698 | 
            +
                  G
         | 
| 699 | 
            +
             | 
| 700 | 
            +
                  bundle :cache, :exitstatus => true
         | 
| 701 | 
            +
                  should_be_patchlevel_incorrect
         | 
| 702 | 
            +
                end
         | 
| 590 703 | 
             
              end
         | 
| 591 704 |  | 
| 592 705 | 
             
              context "bundle pack" do
         | 
| @@ -647,15 +760,27 @@ G | |
| 647 760 | 
             
                it "fails if the engine version doesn't match" do
         | 
| 648 761 | 
             
                  simulate_ruby_engine "jruby" do
         | 
| 649 762 | 
             
                    gemfile <<-G
         | 
| 650 | 
            -
             | 
| 763 | 
            +
                      gem 'rack'
         | 
| 651 764 |  | 
| 652 | 
            -
             | 
| 765 | 
            +
                      #{engine_version_incorrect}
         | 
| 653 766 | 
             
                    G
         | 
| 654 767 |  | 
| 655 768 | 
             
                    bundle :pack, :exitstatus => true
         | 
| 656 769 | 
             
                    should_be_engine_version_incorrect
         | 
| 657 770 | 
             
                  end
         | 
| 658 771 | 
             
                end
         | 
| 772 | 
            +
             | 
| 773 | 
            +
                it "fails when patchlevel doesn't match" do
         | 
| 774 | 
            +
                  gemfile <<-G, :exitstatus => true
         | 
| 775 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 776 | 
            +
                    gem "rack"
         | 
| 777 | 
            +
             | 
| 778 | 
            +
                    #{patchlevel_incorrect}
         | 
| 779 | 
            +
                  G
         | 
| 780 | 
            +
             | 
| 781 | 
            +
                  bundle :pack, :exitstatus => true
         | 
| 782 | 
            +
                  should_be_patchlevel_incorrect
         | 
| 783 | 
            +
                end
         | 
| 659 784 | 
             
              end
         | 
| 660 785 |  | 
| 661 786 | 
             
              context "bundle exec" do
         | 
| @@ -721,6 +846,18 @@ G | |
| 721 846 | 
             
                    should_be_engine_version_incorrect
         | 
| 722 847 | 
             
                  end
         | 
| 723 848 | 
             
                end
         | 
| 849 | 
            +
             | 
| 850 | 
            +
                it "fails when patchlevel doesn't match" do
         | 
| 851 | 
            +
                  gemfile <<-G, :exitstatus => true
         | 
| 852 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 853 | 
            +
                    gem "rack"
         | 
| 854 | 
            +
             | 
| 855 | 
            +
                    #{patchlevel_incorrect}
         | 
| 856 | 
            +
                  G
         | 
| 857 | 
            +
             | 
| 858 | 
            +
                  bundle "exec rackup", :exitstatus => true
         | 
| 859 | 
            +
                  should_be_patchlevel_incorrect
         | 
| 860 | 
            +
                end
         | 
| 724 861 | 
             
              end
         | 
| 725 862 |  | 
| 726 863 | 
             
              context "bundle console" do
         | 
| @@ -812,6 +949,20 @@ G | |
| 812 949 | 
             
                    should_be_engine_version_incorrect
         | 
| 813 950 | 
             
                  end
         | 
| 814 951 | 
             
                end
         | 
| 952 | 
            +
             | 
| 953 | 
            +
                it "fails when patchlevel doesn't match" do
         | 
| 954 | 
            +
                  gemfile <<-G, :exitstatus => true
         | 
| 955 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 956 | 
            +
                    gem "rack"
         | 
| 957 | 
            +
                    gem "activesupport", :group => :test
         | 
| 958 | 
            +
                    gem "rack_middleware", :group => :development
         | 
| 959 | 
            +
             | 
| 960 | 
            +
                    #{patchlevel_incorrect}
         | 
| 961 | 
            +
                  G
         | 
| 962 | 
            +
             | 
| 963 | 
            +
                  bundle "console", :exitstatus => true
         | 
| 964 | 
            +
                  should_be_patchlevel_incorrect
         | 
| 965 | 
            +
                end
         | 
| 815 966 | 
             
              end
         | 
| 816 967 |  | 
| 817 968 | 
             
              context "Bundler.setup" do
         | 
| @@ -944,6 +1095,35 @@ G | |
| 944 1095 | 
             
                    should_be_engine_version_incorrect(:exitstatus => false)
         | 
| 945 1096 | 
             
                  end
         | 
| 946 1097 | 
             
                end
         | 
| 1098 | 
            +
             | 
| 1099 | 
            +
                it "fails when patchlevel doesn't match" do
         | 
| 1100 | 
            +
                  install_gemfile <<-G
         | 
| 1101 | 
            +
                    source "file://#{gem_repo1}"
         | 
| 1102 | 
            +
                    gem "yard"
         | 
| 1103 | 
            +
                    gem "rack"
         | 
| 1104 | 
            +
             | 
| 1105 | 
            +
                    #{patchlevel_incorrect}
         | 
| 1106 | 
            +
                  G
         | 
| 1107 | 
            +
             | 
| 1108 | 
            +
                  puts File.read(bundled_app("Gemfile"))
         | 
| 1109 | 
            +
                  File.read(bundled_app("Gemfile.lock"))
         | 
| 1110 | 
            +
             | 
| 1111 | 
            +
                  FileUtils.rm(bundled_app("Gemfile.lock"))
         | 
| 1112 | 
            +
             | 
| 1113 | 
            +
                  ruby <<-R
         | 
| 1114 | 
            +
                    require 'rubygems'
         | 
| 1115 | 
            +
                    require 'bundler'
         | 
| 1116 | 
            +
             | 
| 1117 | 
            +
                    begin
         | 
| 1118 | 
            +
                      Bundler.setup
         | 
| 1119 | 
            +
                    rescue Bundler::RubyVersionMismatch => e
         | 
| 1120 | 
            +
                      puts e.message
         | 
| 1121 | 
            +
                    end
         | 
| 1122 | 
            +
                  R
         | 
| 1123 | 
            +
             | 
| 1124 | 
            +
                  expect(bundled_app("Gemfile.lock")).not_to exist
         | 
| 1125 | 
            +
                  should_be_patchlevel_incorrect(:exitstatus => false)
         | 
| 1126 | 
            +
                end
         | 
| 947 1127 | 
             
              end
         | 
| 948 1128 |  | 
| 949 1129 | 
             
              context "bundle outdated" do
         | 
| @@ -1054,5 +1234,25 @@ G | |
| 1054 1234 | 
             
                    should_be_engine_version_incorrect
         | 
| 1055 1235 | 
             
                  end
         | 
| 1056 1236 | 
             
                end
         | 
| 1237 | 
            +
             | 
| 1238 | 
            +
                it "fails when the patchlevel doesn't match" do
         | 
| 1239 | 
            +
                  simulate_ruby_engine "jruby" do
         | 
| 1240 | 
            +
                    update_repo2 do
         | 
| 1241 | 
            +
                      build_gem "activesupport", "3.0"
         | 
| 1242 | 
            +
                      update_git "foo", :path => lib_path("foo")
         | 
| 1243 | 
            +
                    end
         | 
| 1244 | 
            +
             | 
| 1245 | 
            +
                    gemfile <<-G
         | 
| 1246 | 
            +
                      source "file://#{gem_repo2}"
         | 
| 1247 | 
            +
                      gem "activesupport", "2.3.5"
         | 
| 1248 | 
            +
                      gem "foo", :git => "#{lib_path('foo')}"
         | 
| 1249 | 
            +
             | 
| 1250 | 
            +
                      #{patchlevel_incorrect}
         | 
| 1251 | 
            +
                    G
         | 
| 1252 | 
            +
             | 
| 1253 | 
            +
                    bundle "outdated", :exitstatus => true
         | 
| 1254 | 
            +
                    should_be_patchlevel_incorrect
         | 
| 1255 | 
            +
                  end
         | 
| 1256 | 
            +
                end
         | 
| 1057 1257 | 
             
              end
         | 
| 1058 1258 | 
             
            end
         |