diff options
author | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-22 23:08:05 +0000 |
---|---|---|
committer | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-22 23:08:05 +0000 |
commit | 7825e8363d4b2ccad8e2d3f5eeba9e26f6656911 (patch) | |
tree | 83cbcf419e0feeb2ab0fd063ed85e0776eb0081b /spec/bundler/cache | |
parent | 73bed0312895322e0fd18310e840356c8e6af812 (diff) | |
download | ruby-7825e8363d4b2ccad8e2d3f5eeba9e26f6656911.tar.gz |
Postponing the Bundler merge.
I faced a big issue about Bundler with ruby core.
I have no time to resolve it issue before 2.5 final release.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/bundler/cache')
-rw-r--r-- | spec/bundler/cache/cache_path_spec.rb | 32 | ||||
-rw-r--r-- | spec/bundler/cache/gems_spec.rb | 304 | ||||
-rw-r--r-- | spec/bundler/cache/git_spec.rb | 214 | ||||
-rw-r--r-- | spec/bundler/cache/path_spec.rb | 139 | ||||
-rw-r--r-- | spec/bundler/cache/platform_spec.rb | 49 |
5 files changed, 0 insertions, 738 deletions
diff --git a/spec/bundler/cache/cache_path_spec.rb b/spec/bundler/cache/cache_path_spec.rb deleted file mode 100644 index 69d3809964..0000000000 --- a/spec/bundler/cache/cache_path_spec.rb +++ /dev/null @@ -1,32 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle package" do - before do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - context "with --cache-path" do - it "caches gems at given path" do - bundle :package, "cache-path" => "vendor/cache-foo" - expect(bundled_app("vendor/cache-foo/rack-1.0.0.gem")).to exist - end - end - - context "with config cache_path" do - it "caches gems at given path" do - bundle "config cache_path vendor/cache-foo" - bundle :package - expect(bundled_app("vendor/cache-foo/rack-1.0.0.gem")).to exist - end - end - - context "with absolute --cache-path" do - it "caches gems at given path" do - bundle :package, "cache-path" => "/tmp/cache-foo" - expect(bundled_app("/tmp/cache-foo/rack-1.0.0.gem")).to exist - end - end -end diff --git a/spec/bundler/cache/gems_spec.rb b/spec/bundler/cache/gems_spec.rb deleted file mode 100644 index 4a0b953830..0000000000 --- a/spec/bundler/cache/gems_spec.rb +++ /dev/null @@ -1,304 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle cache" do - shared_examples_for "when there are only gemsources" do - before :each do - gemfile <<-G - gem 'rack' - G - - system_gems "rack-1.0.0", :path => :bundle_path - bundle! :cache - end - - it "copies the .gem file to vendor/cache" do - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - end - - it "uses the cache as a source when installing gems" do - build_gem "omg", :path => bundled_app("vendor/cache") - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "omg" - G - - expect(the_bundle).to include_gems "omg 1.0.0" - end - - it "uses the cache as a source when installing gems with --local" do - system_gems [], :path => :bundle_path - bundle "install --local" - - expect(the_bundle).to include_gems("rack 1.0.0") - end - - it "does not reinstall gems from the cache if they exist on the system" do - build_gem "rack", "1.0.0", :path => bundled_app("vendor/cache") do |s| - s.write "lib/rack.rb", "RACK = 'FAIL'" - end - - install_gemfile <<-G - gem "rack" - G - - expect(the_bundle).to include_gems("rack 1.0.0") - end - - it "does not reinstall gems from the cache if they exist in the bundle" do - system_gems "rack-1.0.0", :path => :bundle_path - - gemfile <<-G - gem "rack" - G - - build_gem "rack", "1.0.0", :path => bundled_app("vendor/cache") do |s| - s.write "lib/rack.rb", "RACK = 'FAIL'" - end - - bundle! :install, :local => true - expect(the_bundle).to include_gems("rack 1.0.0") - end - - it "creates a lockfile" do - cache_gems "rack-1.0.0" - - gemfile <<-G - gem "rack" - G - - bundle "cache" - - expect(bundled_app("Gemfile.lock")).to exist - end - end - - context "using system gems" do - before { bundle! "config path.system true" } - it_behaves_like "when there are only gemsources" - end - - context "installing into a local path" do - before { bundle! "config path ./.bundle" } - it_behaves_like "when there are only gemsources" - end - - describe "when there is a built-in gem", :ruby => "2.0" do - before :each do - build_repo2 do - build_gem "builtin_gem", "1.0.2" - end - - build_gem "builtin_gem", "1.0.2", :to_system => true do |s| - s.summary = "This builtin_gem is bundled with Ruby" - end - - FileUtils.rm("#{system_gem_path}/cache/builtin_gem-1.0.2.gem") - end - - it "uses builtin gems when installing to system gems" do - bundle! "config path.system true" - install_gemfile %(gem 'builtin_gem', '1.0.2') - expect(the_bundle).to include_gems("builtin_gem 1.0.2") - end - - it "caches remote and builtin gems" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem 'builtin_gem', '1.0.2' - gem 'rack', '1.0.0' - G - - bundle :cache - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - expect(bundled_app("vendor/cache/builtin_gem-1.0.2.gem")).to exist - end - - it "doesn't make remote request after caching the gem" do - build_gem "builtin_gem_2", "1.0.2", :path => bundled_app("vendor/cache") do |s| - s.summary = "This builtin_gem is bundled with Ruby" - end - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem 'builtin_gem_2', '1.0.2' - G - - bundle "install --local" - expect(the_bundle).to include_gems("builtin_gem_2 1.0.2") - end - - it "errors if the builtin gem isn't available to cache" do - bundle! "config path.system true" - - install_gemfile <<-G - gem 'builtin_gem', '1.0.2' - G - - bundle :cache - expect(exitstatus).to_not eq(0) if exitstatus - expect(out).to include("builtin_gem-1.0.2 is built in to Ruby, and can't be cached") - end - end - - describe "when there are also git sources" do - before do - build_git "foo" - system_gems "rack-1.0.0" - - install_gemfile <<-G - source "file://#{gem_repo1}" - git "#{lib_path("foo-1.0")}" do - gem 'foo' - end - gem 'rack' - G - end - - it "still works" do - bundle :cache - - system_gems [] - bundle "install --local" - - expect(the_bundle).to include_gems("rack 1.0.0", "foo 1.0") - end - - it "should not explode if the lockfile is not present" do - FileUtils.rm(bundled_app("Gemfile.lock")) - - bundle :cache - - expect(bundled_app("Gemfile.lock")).to exist - end - end - - describe "when previously cached" do - before :each do - build_repo2 - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack" - gem "actionpack" - G - bundle :cache - expect(cached_gem("rack-1.0.0")).to exist - expect(cached_gem("actionpack-2.3.2")).to exist - expect(cached_gem("activesupport-2.3.2")).to exist - end - - it "re-caches during install" do - cached_gem("rack-1.0.0").rmtree - bundle :install - expect(out).to include("Updating files in vendor/cache") - expect(cached_gem("rack-1.0.0")).to exist - end - - it "adds and removes when gems are updated" do - update_repo2 - bundle "update", :all => bundle_update_requires_all? - expect(cached_gem("rack-1.2")).to exist - expect(cached_gem("rack-1.0.0")).not_to exist - end - - it "adds new gems and dependencies" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rails" - G - expect(cached_gem("rails-2.3.2")).to exist - expect(cached_gem("activerecord-2.3.2")).to exist - end - - it "removes .gems for removed gems and dependencies" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack" - G - expect(cached_gem("rack-1.0.0")).to exist - expect(cached_gem("actionpack-2.3.2")).not_to exist - expect(cached_gem("activesupport-2.3.2")).not_to exist - end - - it "removes .gems when gem changes to git source" do - build_git "rack" - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack", :git => "#{lib_path("rack-1.0")}" - gem "actionpack" - G - expect(cached_gem("rack-1.0.0")).not_to exist - expect(cached_gem("actionpack-2.3.2")).to exist - expect(cached_gem("activesupport-2.3.2")).to exist - end - - it "doesn't remove gems that are for another platform" do - simulate_platform "java" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "platform_specific" - G - - bundle :cache - expect(cached_gem("platform_specific-1.0-java")).to exist - end - - simulate_new_machine - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "platform_specific" - G - - expect(cached_gem("platform_specific-1.0-#{Bundler.local_platform}")).to exist - expect(cached_gem("platform_specific-1.0-java")).to exist - end - - it "doesn't remove gems with mismatched :rubygems_version or :date" do - cached_gem("rack-1.0.0").rmtree - build_gem "rack", "1.0.0", - :path => bundled_app("vendor/cache"), - :rubygems_version => "1.3.2" - simulate_new_machine - - bundle :install - expect(cached_gem("rack-1.0.0")).to exist - end - - it "handles directories and non .gem files in the cache" do - bundled_app("vendor/cache/foo").mkdir - File.open(bundled_app("vendor/cache/bar"), "w") {|f| f.write("not a gem") } - bundle :cache - end - - it "does not say that it is removing gems when it isn't actually doing so" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - bundle "cache" - bundle "install" - expect(out).not_to match(/removing/i) - end - - it "does not warn about all if it doesn't have any git/path dependency" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - bundle "cache" - expect(out).not_to match(/\-\-all/) - end - - it "should install gems with the name bundler in them (that aren't bundler)" do - build_gem "foo-bundler", "1.0", - :path => bundled_app("vendor/cache") - - install_gemfile <<-G - gem "foo-bundler" - G - - expect(the_bundle).to include_gems "foo-bundler 1.0" - end - end -end diff --git a/spec/bundler/cache/git_spec.rb b/spec/bundler/cache/git_spec.rb deleted file mode 100644 index 33387dbbb2..0000000000 --- a/spec/bundler/cache/git_spec.rb +++ /dev/null @@ -1,214 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "git base name" do - it "base_name should strip private repo uris" do - source = Bundler::Source::Git.new("uri" => "git@github.com:bundler.git") - expect(source.send(:base_name)).to eq("bundler") - end - - it "base_name should strip network share paths" do - source = Bundler::Source::Git.new("uri" => "//MachineName/ShareFolder") - expect(source.send(:base_name)).to eq("ShareFolder") - end -end - -%w[cache package].each do |cmd| - RSpec.describe "bundle #{cmd} with git" do - it "copies repository to vendor cache and uses it" do - git = build_git "foo" - ref = git.ref_for("master", 11) - - install_gemfile <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - - bundle "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - expect(bundled_app("vendor/cache/foo-1.0-#{ref}")).to exist - expect(bundled_app("vendor/cache/foo-1.0-#{ref}/.git")).not_to exist - expect(bundled_app("vendor/cache/foo-1.0-#{ref}/.bundlecache")).to be_file - - FileUtils.rm_rf lib_path("foo-1.0") - expect(the_bundle).to include_gems "foo 1.0" - end - - it "copies repository to vendor cache and uses it even when installed with bundle --path" do - git = build_git "foo" - ref = git.ref_for("master", 11) - - install_gemfile <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - - bundle "install --path vendor/bundle" - bundle "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/foo-1.0-#{ref}")).to exist - expect(bundled_app("vendor/cache/foo-1.0-#{ref}/.git")).not_to exist - - FileUtils.rm_rf lib_path("foo-1.0") - expect(the_bundle).to include_gems "foo 1.0" - end - - it "runs twice without exploding" do - build_git "foo" - - install_gemfile! <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - - bundle! "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - bundle! "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - - expect(last_command.stdout).to include "Updating files in vendor/cache" - FileUtils.rm_rf lib_path("foo-1.0") - expect(the_bundle).to include_gems "foo 1.0" - end - - it "tracks updates" do - git = build_git "foo" - old_ref = git.ref_for("master", 11) - - install_gemfile <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - - bundle "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - - update_git "foo" do |s| - s.write "lib/foo.rb", "puts :CACHE" - end - - ref = git.ref_for("master", 11) - expect(ref).not_to eq(old_ref) - - bundle! "update", :all => bundle_update_requires_all? - bundle! "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/foo-1.0-#{ref}")).to exist - expect(bundled_app("vendor/cache/foo-1.0-#{old_ref}")).not_to exist - - FileUtils.rm_rf lib_path("foo-1.0") - run! "require 'foo'" - expect(out).to eq("CACHE") - end - - it "tracks updates when specifying the gem" do - git = build_git "foo" - old_ref = git.ref_for("master", 11) - - install_gemfile <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - - bundle! cmd, forgotten_command_line_options([:all, :cache_all] => true) - - update_git "foo" do |s| - s.write "lib/foo.rb", "puts :CACHE" - end - - ref = git.ref_for("master", 11) - expect(ref).not_to eq(old_ref) - - bundle "update foo" - - expect(bundled_app("vendor/cache/foo-1.0-#{ref}")).to exist - expect(bundled_app("vendor/cache/foo-1.0-#{old_ref}")).not_to exist - - FileUtils.rm_rf lib_path("foo-1.0") - run "require 'foo'" - expect(out).to eq("CACHE") - end - - it "uses the local repository to generate the cache" do - git = build_git "foo" - ref = git.ref_for("master", 11) - - gemfile <<-G - gem "foo", :git => '#{lib_path("foo-invalid")}', :branch => :master - G - - bundle %(config local.foo #{lib_path("foo-1.0")}) - bundle "install" - bundle "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/foo-invalid-#{ref}")).to exist - - # Updating the local still uses the local. - update_git "foo" do |s| - s.write "lib/foo.rb", "puts :LOCAL" - end - - run "require 'foo'" - expect(out).to eq("LOCAL") - end - - it "copies repository to vendor cache, including submodules" do - build_git "submodule", "1.0" - - git = build_git "has_submodule", "1.0" do |s| - s.add_dependency "submodule" - end - - Dir.chdir(lib_path("has_submodule-1.0")) do - sys_exec "git submodule add #{lib_path("submodule-1.0")} submodule-1.0" - `git commit -m "submodulator"` - end - - install_gemfile <<-G - git "#{lib_path("has_submodule-1.0")}", :submodules => true do - gem "has_submodule" - end - G - - ref = git.ref_for("master", 11) - bundle "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/has_submodule-1.0-#{ref}")).to exist - expect(bundled_app("vendor/cache/has_submodule-1.0-#{ref}/submodule-1.0")).to exist - expect(the_bundle).to include_gems "has_submodule 1.0" - end - - it "displays warning message when detecting git repo in Gemfile", :bundler => "< 2" do - build_git "foo" - - install_gemfile <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - - bundle "#{cmd}" - - expect(out).to include("Your Gemfile contains path and git dependencies.") - end - - it "does not display warning message if cache_all is set in bundle config" do - build_git "foo" - - install_gemfile <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - bundle cmd - - expect(out).not_to include("Your Gemfile contains path and git dependencies.") - end - - it "caches pre-evaluated gemspecs" do - git = build_git "foo" - - # Insert a gemspec method that shells out - spec_lines = lib_path("foo-1.0/foo.gemspec").read.split("\n") - spec_lines.insert(-2, "s.description = `echo bob`") - update_git("foo") {|s| s.write "foo.gemspec", spec_lines.join("\n") } - - install_gemfile <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - - ref = git.ref_for("master", 11) - gemspec = bundled_app("vendor/cache/foo-1.0-#{ref}/foo.gemspec").read - expect(gemspec).to_not match("`echo bob`") - end - end -end diff --git a/spec/bundler/cache/path_spec.rb b/spec/bundler/cache/path_spec.rb deleted file mode 100644 index 8c6a843476..0000000000 --- a/spec/bundler/cache/path_spec.rb +++ /dev/null @@ -1,139 +0,0 @@ -# frozen_string_literal: true - -%w[cache package].each do |cmd| - RSpec.describe "bundle #{cmd} with path" do - it "is no-op when the path is within the bundle" do - build_lib "foo", :path => bundled_app("lib/foo") - - install_gemfile <<-G - gem "foo", :path => '#{bundled_app("lib/foo")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - expect(bundled_app("vendor/cache/foo-1.0")).not_to exist - expect(the_bundle).to include_gems "foo 1.0" - end - - it "copies when the path is outside the bundle " do - build_lib "foo" - - install_gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - expect(bundled_app("vendor/cache/foo-1.0")).to exist - expect(bundled_app("vendor/cache/foo-1.0/.bundlecache")).to be_file - - FileUtils.rm_rf lib_path("foo-1.0") - expect(the_bundle).to include_gems "foo 1.0" - end - - it "copies when the path is outside the bundle and the paths intersect" do - libname = File.basename(Dir.pwd) + "_gem" - libpath = File.join(File.dirname(Dir.pwd), libname) - - build_lib libname, :path => libpath - - install_gemfile <<-G - gem "#{libname}", :path => '#{libpath}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - expect(bundled_app("vendor/cache/#{libname}")).to exist - expect(bundled_app("vendor/cache/#{libname}/.bundlecache")).to be_file - - FileUtils.rm_rf libpath - expect(the_bundle).to include_gems "#{libname} 1.0" - end - - it "updates the path on each cache" do - build_lib "foo" - - install_gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - - build_lib "foo" do |s| - s.write "lib/foo.rb", "puts :CACHE" - end - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/foo-1.0")).to exist - FileUtils.rm_rf lib_path("foo-1.0") - - run "require 'foo'" - expect(out).to eq("CACHE") - end - - it "removes stale entries cache" do - build_lib "foo" - - install_gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - - install_gemfile <<-G - gem "bar", :path => '#{lib_path("bar-1.0")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - expect(bundled_app("vendor/cache/bar-1.0")).not_to exist - end - - it "raises a warning without --all", :bundler => "< 2" do - build_lib "foo" - - install_gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - G - - bundle cmd - expect(out).to match(/please pass the \-\-all flag/) - expect(bundled_app("vendor/cache/foo-1.0")).not_to exist - end - - it "stores the given flag" do - build_lib "foo" - - install_gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - build_lib "bar" - - install_gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - gem "bar", :path => '#{lib_path("bar-1.0")}' - G - - bundle cmd - expect(bundled_app("vendor/cache/bar-1.0")).to exist - end - - it "can rewind chosen configuration" do - build_lib "foo" - - install_gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - build_lib "baz" - - gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - gem "baz", :path => '#{lib_path("baz-1.0")}' - G - - bundle "#{cmd} --no-all" - expect(bundled_app("vendor/cache/baz-1.0")).not_to exist - end - end -end diff --git a/spec/bundler/cache/platform_spec.rb b/spec/bundler/cache/platform_spec.rb deleted file mode 100644 index c0622a3c94..0000000000 --- a/spec/bundler/cache/platform_spec.rb +++ /dev/null @@ -1,49 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle cache with multiple platforms" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - - platforms :mri, :rbx do - gem "rack", "1.0.0" - end - - platforms :jruby do - gem "activesupport", "2.3.5" - end - G - - lockfile <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - activesupport (2.3.5) - - PLATFORMS - ruby - java - - DEPENDENCIES - rack (1.0.0) - activesupport (2.3.5) - G - - cache_gems "rack-1.0.0", "activesupport-2.3.5" - end - - it "ensures that a successful bundle install does not delete gems for other platforms" do - bundle! "install" - - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - expect(bundled_app("vendor/cache/activesupport-2.3.5.gem")).to exist - end - - it "ensures that a successful bundle update does not delete gems for other platforms" do - bundle! "update", :all => bundle_update_requires_all? - - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - expect(bundled_app("vendor/cache/activesupport-2.3.5.gem")).to exist - end -end |