summaryrefslogtreecommitdiff
path: root/spec/install/gems/dependency_api_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/install/gems/dependency_api_spec.rb')
-rw-r--r--spec/install/gems/dependency_api_spec.rb106
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