diff options
Diffstat (limited to 'spec/install/gems/dependency_api_spec.rb')
-rw-r--r-- | spec/install/gems/dependency_api_spec.rb | 106 |
1 files changed, 92 insertions, 14 deletions
diff --git a/spec/install/gems/dependency_api_spec.rb b/spec/install/gems/dependency_api_spec.rb index a8713eb445..78cca5f8b7 100644 --- a/spec/install/gems/dependency_api_spec.rb +++ b/spec/install/gems/dependency_api_spec.rb @@ -5,6 +5,8 @@ RSpec.describe "gemcutter's dependency API" do let(:source_uri) { "http://#{source_hostname}" } it "should use the API" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem "rack" @@ -26,6 +28,8 @@ RSpec.describe "gemcutter's dependency API" do end it "should handle nested dependencies" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem "rails" @@ -44,6 +48,8 @@ RSpec.describe "gemcutter's dependency API" do end it "should handle multiple gem dependencies on the same gem" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem "net-sftp" @@ -54,6 +60,8 @@ RSpec.describe "gemcutter's dependency API" do end it "should use the endpoint when using --deployment" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem "rack" @@ -66,6 +74,8 @@ RSpec.describe "gemcutter's dependency API" do end it "handles git dependencies that are in rubygems" do + skip "artifice issues?" if Gem.win_platform? + build_git "foo" do |s| s.executables = "foobar" s.add_dependency "rails", "2.3.2" @@ -84,6 +94,8 @@ RSpec.describe "gemcutter's dependency API" do end it "handles git dependencies that are in rubygems using --deployment" do + skip "artifice issues?" if Gem.win_platform? + build_git "foo" do |s| s.executables = "foobar" s.add_dependency "rails", "2.3.2" @@ -128,6 +140,8 @@ RSpec.describe "gemcutter's dependency API" do end it "falls back when hitting the Gemcutter Dependency Limit" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem "activesupport" @@ -154,6 +168,8 @@ RSpec.describe "gemcutter's dependency API" do end it "falls back when Gemcutter API doesn't return proper Marshal format" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem "rack" @@ -165,6 +181,8 @@ RSpec.describe "gemcutter's dependency API" do end it "falls back when the API URL returns 403 Forbidden" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem "rack" @@ -176,6 +194,8 @@ RSpec.describe "gemcutter's dependency API" do end it "handles host redirects" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem "rack" @@ -186,6 +206,8 @@ RSpec.describe "gemcutter's dependency API" do end it "handles host redirects without Net::HTTP::Persistent" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem "rack" @@ -210,6 +232,8 @@ RSpec.describe "gemcutter's dependency API" do end it "timeouts when Bundler::Fetcher redirects too much" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem "rack" @@ -220,6 +244,10 @@ RSpec.describe "gemcutter's dependency API" do end context "when --full-index is specified" do + before do + skip "artifice issues?" if Gem.win_platform? + end + it "should use the modern index for install" do gemfile <<-G source "#{source_uri}" @@ -244,6 +272,8 @@ RSpec.describe "gemcutter's dependency API" do end it "fetches again when more dependencies are found in subsequent sources", :bundler => "< 3" do + skip "artifice issues?" if Gem.win_platform? + build_repo2 do build_gem "back_deps" do |s| s.add_dependency "foo" @@ -262,6 +292,8 @@ RSpec.describe "gemcutter's dependency API" do end it "fetches again when more dependencies are found in subsequent sources using blocks" do + skip "artifice issues?" if Gem.win_platform? + build_repo2 do build_gem "back_deps" do |s| s.add_dependency "foo" @@ -281,6 +313,8 @@ RSpec.describe "gemcutter's dependency API" do end it "fetches gem versions even when those gems are already installed" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem "rack", "1.0.0" @@ -303,6 +337,8 @@ RSpec.describe "gemcutter's dependency API" do end it "considers all possible versions of dependencies from all api gem sources", :bundler => "< 3" do + skip "artifice issues?" if Gem.win_platform? + # In this scenario, the gem "somegem" only exists in repo4. It depends on specific version of activesupport that # exists only in repo1. There happens also be a version of activesupport in repo4, but not the one that version 1.0.0 # of somegem wants. This test makes sure that bundler actually finds version 1.2.3 of active support in the other @@ -327,6 +363,8 @@ RSpec.describe "gemcutter's dependency API" do end it "considers all possible versions of dependencies from all api gem sources using blocks" do + skip "artifice issues?" if Gem.win_platform? + # In this scenario, the gem "somegem" only exists in repo4. It depends on specific version of activesupport that # exists only in repo1. There happens also be a version of activesupport in repo4, but not the one that version 1.0.0 # of somegem wants. This test makes sure that bundler actually finds version 1.2.3 of active support in the other @@ -352,6 +390,8 @@ RSpec.describe "gemcutter's dependency API" do end it "prints API output properly with back deps" do + skip "artifice issues?" if Gem.win_platform? + build_repo2 do build_gem "back_deps" do |s| s.add_dependency "foo" @@ -373,6 +413,8 @@ RSpec.describe "gemcutter's dependency API" do end it "does not fetch every spec if the index of gems is large when doing back deps", :bundler => "< 3" do + skip "artifice issues?" if Gem.win_platform? + build_repo2 do build_gem "back_deps" do |s| s.add_dependency "foo" @@ -397,6 +439,8 @@ RSpec.describe "gemcutter's dependency API" do end it "does not fetch every spec if the index of gems is large when doing back deps using blocks" do + skip "artifice issues?" if Gem.win_platform? + build_repo2 do build_gem "back_deps" do |s| s.add_dependency "foo" @@ -422,6 +466,8 @@ RSpec.describe "gemcutter's dependency API" do end it "uses the endpoint if all sources support it" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" @@ -433,6 +479,8 @@ RSpec.describe "gemcutter's dependency API" do end it "fetches again when more dependencies are found in subsequent sources using --deployment", :bundler => "< 3" do + skip "artifice issues?" if Gem.win_platform? + build_repo2 do build_gem "back_deps" do |s| s.add_dependency "foo" @@ -453,6 +501,8 @@ RSpec.describe "gemcutter's dependency API" do end it "fetches again when more dependencies are found in subsequent sources using --deployment with blocks" do + skip "artifice issues?" if Gem.win_platform? + build_repo2 do build_gem "back_deps" do |s| s.add_dependency "foo" @@ -497,6 +547,8 @@ RSpec.describe "gemcutter's dependency API" do end it "installs the binstubs", :bundler => "< 3" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem "rack" @@ -509,6 +561,8 @@ RSpec.describe "gemcutter's dependency API" do end it "installs the bins when using --path and uses autoclean", :bundler => "< 3" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem "rack" @@ -520,6 +574,8 @@ RSpec.describe "gemcutter's dependency API" do end it "installs the bins when using --path and uses bundle clean", :bundler => "< 3" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem "rack" @@ -531,6 +587,8 @@ RSpec.describe "gemcutter's dependency API" do end it "prints post_install_messages" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem 'rack-obama' @@ -541,6 +599,8 @@ RSpec.describe "gemcutter's dependency API" do end it "should display the post install message for a dependency" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{source_uri}" gem 'rack_middleware' @@ -555,7 +615,7 @@ RSpec.describe "gemcutter's dependency API" do let(:user) { "user" } let(:password) { "pass" } let(:basic_auth_source_uri) do - uri = URI.parse(source_uri) + uri = Bundler::URI.parse(source_uri) uri.user = user uri.password = password @@ -563,6 +623,8 @@ RSpec.describe "gemcutter's dependency API" do end it "passes basic authentication details and strips out creds" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{basic_auth_source_uri}" gem "rack" @@ -574,6 +636,8 @@ RSpec.describe "gemcutter's dependency API" do end it "strips http basic authentication creds for modern index" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{basic_auth_source_uri}" gem "rack" @@ -595,6 +659,8 @@ RSpec.describe "gemcutter's dependency API" do end it "strips http basic auth creds when warning about ambiguous sources", :bundler => "< 3" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{basic_auth_source_uri}" source "#{file_uri_for(gem_repo1)}" @@ -608,6 +674,8 @@ RSpec.describe "gemcutter's dependency API" do end it "does not pass the user / password to different hosts on redirect" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{basic_auth_source_uri}" gem "rack" @@ -626,6 +694,8 @@ RSpec.describe "gemcutter's dependency API" do end it "reads authentication details by host name from bundle config" do + skip "artifice issues?" if Gem.win_platform? + bundle "config set #{source_hostname} #{user}:#{password}" bundle :install, :artifice => "endpoint_strict_basic_authentication" @@ -635,6 +705,8 @@ RSpec.describe "gemcutter's dependency API" do end it "reads authentication details by full url from bundle config" do + skip "artifice issues?" if Gem.win_platform? + # The trailing slash is necessary here; Fetcher canonicalizes the URI. bundle "config set #{source_uri}/ #{user}:#{password}" @@ -645,6 +717,8 @@ RSpec.describe "gemcutter's dependency API" do end it "should use the API" do + skip "artifice issues?" if Gem.win_platform? + bundle "config set #{source_hostname} #{user}:#{password}" bundle :install, :artifice => "endpoint_strict_basic_authentication" expect(out).to include("Fetching gem metadata from #{source_uri}") @@ -652,6 +726,8 @@ RSpec.describe "gemcutter's dependency API" do end it "prefers auth supplied in the source uri" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{basic_auth_source_uri}" gem "rack" @@ -680,6 +756,8 @@ RSpec.describe "gemcutter's dependency API" do let(:password) { nil } it "passes basic authentication details" do + skip "artifice issues?" if Gem.win_platform? + gemfile <<-G source "#{basic_auth_source_uri}" gem "rack" @@ -736,25 +814,25 @@ RSpec.describe "gemcutter's dependency API" do end context ".gemrc with sources is present" do - before do + it "uses other sources declared in the Gemfile" do + skip "artifice issues?" if Gem.win_platform? + File.open(home(".gemrc"), "w") do |file| file.puts({ :sources => ["https://rubygems.org"] }.to_yaml) end - end - after do - home(".gemrc").rmtree - end - - it "uses other sources declared in the Gemfile" do - gemfile <<-G - source "#{source_uri}" - gem 'rack' - G + begin + gemfile <<-G + source "#{source_uri}" + gem 'rack' + G - bundle "install", :artifice => "endpoint_marshal_fail" + bundle "install", :artifice => "endpoint_marshal_fail" - expect(exitstatus).to eq(0) if exitstatus + expect(exitstatus).to eq(0) if exitstatus + ensure + home(".gemrc").rmtree + end end end end |