summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBundlerbot <bot@bundler.io>2020-01-07 09:45:44 +0000
committerBundlerbot <bot@bundler.io>2020-01-07 09:45:44 +0000
commitf6961998894804a957e5dd919d213566b418d5db (patch)
tree48b385ee98b7a3ff6539a1eb9b699d2ee63a3108
parent613bf9c4fbb462e8e5ddca418ba8f014f6e8e0dc (diff)
parent317baa9a771c0596c195a408e9e3eb15700fbece (diff)
downloadbundler-f6961998894804a957e5dd919d213566b418d5db.tar.gz
Merge #7545
7545: Enforce Windows CI r=deivid-rodriguez a=deivid-rodriguez ### What was the end-user problem that led to this PR? The problem was that, although we have a Windows CI, errors are ignored, so whenever we break something on Windows, we don't notice, and having a CI become useless. ### What was your diagnosis of the problem? My diagnosis was that we should make the Windows CI required. ### What is your fix for the problem, implemented in this PR? My fix is to actually go ahead and fix some issues, and skip the rest. Co-authored-by: David Rodríguez <deivid.rodriguez@riseup.net>
-rw-r--r--.github/bors.toml5
-rw-r--r--.github/workflows/windows.yml1
-rw-r--r--spec/bundler/cli_spec.rb2
-rw-r--r--spec/bundler/env_spec.rb4
-rw-r--r--spec/bundler/mirror_spec.rb2
-rw-r--r--spec/commands/binstubs_spec.rb6
-rw-r--r--spec/commands/cache_spec.rb4
-rw-r--r--spec/commands/exec_spec.rb23
-rw-r--r--spec/commands/help_spec.rb2
-rw-r--r--spec/commands/install_spec.rb6
-rw-r--r--spec/install/allow_offline_install_spec.rb6
-rw-r--r--spec/install/deploy_spec.rb4
-rw-r--r--spec/install/gemfile/gemspec_spec.rb2
-rw-r--r--spec/install/gemfile/git_spec.rb30
-rw-r--r--spec/install/gemfile/path_spec.rb6
-rw-r--r--spec/install/gemfile/platform_spec.rb10
-rw-r--r--spec/install/gems/compact_index_spec.rb124
-rw-r--r--spec/install/gems/dependency_api_spec.rb104
-rw-r--r--spec/install/gems/resolving_spec.rb8
-rw-r--r--spec/install/gems/standalone_spec.rb8
-rw-r--r--spec/install/gemspecs_spec.rb2
-rw-r--r--spec/install/git_spec.rb22
-rw-r--r--spec/install/global_cache_spec.rb10
-rw-r--r--spec/lock/lockfile_spec.rb4
-rw-r--r--spec/runtime/executable_spec.rb18
-rw-r--r--spec/runtime/inline_spec.rb4
-rw-r--r--spec/runtime/require_spec.rb2
-rw-r--r--spec/runtime/setup_spec.rb14
-rw-r--r--spec/runtime/with_unbundled_env_spec.rb10
-rw-r--r--spec/support/helpers.rb4
30 files changed, 395 insertions, 52 deletions
diff --git a/.github/bors.toml b/.github/bors.toml
index 8f4d9a640a..4943eaa057 100644
--- a/.github/bors.toml
+++ b/.github/bors.toml
@@ -1,5 +1,8 @@
status = [
- "continuous-integration/travis-ci/push"
+ "continuous-integration/travis-ci/push",
+ "windows (2.4.x)",
+ "windows (2.5.x)",
+ "windows (2.6.x)"
]
timeout_sec = 14400
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
index 44c8039df6..00e0fc0385 100644
--- a/.github/workflows/windows.yml
+++ b/.github/workflows/windows.yml
@@ -31,4 +31,3 @@ jobs:
- name: Run specs
run: bin/parallel_rspec spec
shell: bash
- continue-on-error: true
diff --git a/spec/bundler/cli_spec.rb b/spec/bundler/cli_spec.rb
index ddcd699d6c..cafb5579c1 100644
--- a/spec/bundler/cli_spec.rb
+++ b/spec/bundler/cli_spec.rb
@@ -14,6 +14,8 @@ RSpec.describe "bundle executable" do
end
it "looks for a binary and executes it if it's named bundler-<task>" do
+ skip "obscure error" if Gem.win_platform?
+
File.open(tmp("bundler-testtasks"), "w", 0o755) do |f|
ruby = ENV["RUBY"] || "/usr/bin/env ruby"
f.puts "#!#{ruby}\nputs 'Hello, world'\n"
diff --git a/spec/bundler/env_spec.rb b/spec/bundler/env_spec.rb
index 7686fe386a..5e588a6042 100644
--- a/spec/bundler/env_spec.rb
+++ b/spec/bundler/env_spec.rb
@@ -34,6 +34,8 @@ RSpec.describe Bundler::Env do
end
it "prints user home" do
+ skip "needs to use a valid HOME" if Gem.win_platform? && RUBY_VERSION < "2.6.0"
+
with_clear_paths("HOME", "/a/b/c") do
out = described_class.report
expect(out).to include("User Home /a/b/c")
@@ -41,6 +43,8 @@ RSpec.describe Bundler::Env do
end
it "prints user path" do
+ skip "needs to use a valid HOME" if Gem.win_platform? && RUBY_VERSION < "2.6.0"
+
with_clear_paths("HOME", "/a/b/c") do
out = described_class.report
expect(out).to include("User Path /a/b/c/.gem")
diff --git a/spec/bundler/mirror_spec.rb b/spec/bundler/mirror_spec.rb
index 4a8a0c7c48..1eaf1e9a8e 100644
--- a/spec/bundler/mirror_spec.rb
+++ b/spec/bundler/mirror_spec.rb
@@ -305,6 +305,8 @@ RSpec.describe Bundler::Settings::TCPSocketProbe do
end
it "probes the server correctly" do
+ skip "obscure error" if Gem.win_platform?
+
with_server_and_mirror do |server, mirror|
expect(server.closed?).to be_falsey
expect(probe.replies?(mirror)).to be_truthy
diff --git a/spec/commands/binstubs_spec.rb b/spec/commands/binstubs_spec.rb
index 7c04e8ddbd..b24392caa1 100644
--- a/spec/commands/binstubs_spec.rb
+++ b/spec/commands/binstubs_spec.rb
@@ -1,6 +1,10 @@
# frozen_string_literal: true
RSpec.describe "bundle binstubs <gem>" do
+ before do
+ skip "https://github.com/bundler/bundler/issues/6894" if Gem.win_platform?
+ end
+
context "when the gem exists in the lockfile" do
it "sets up the binstub" do
install_gemfile <<-G
@@ -274,6 +278,8 @@ RSpec.describe "bundle binstubs <gem>" do
end
it "sets correct permissions for binstubs" do
+ skip "https://github.com/bundler/bundler/issues/6895" if Gem.win_platform?
+
with_umask(0o002) do
install_gemfile <<-G
source "#{file_uri_for(gem_repo1)}"
diff --git a/spec/commands/cache_spec.rb b/spec/commands/cache_spec.rb
index 07ec186c2f..04dfee5b16 100644
--- a/spec/commands/cache_spec.rb
+++ b/spec/commands/cache_spec.rb
@@ -198,6 +198,10 @@ RSpec.describe "bundle cache" do
end
context "with --all-platforms" do
+ before do
+ skip "doesn't put gems where it should" if Gem.win_platform?
+ end
+
it "puts the gems in vendor/cache even for other rubies" do
gemfile <<-D
source "#{file_uri_for(gem_repo1)}"
diff --git a/spec/commands/exec_spec.rb b/spec/commands/exec_spec.rb
index 85f4a55a2c..69a0b33859 100644
--- a/spec/commands/exec_spec.rb
+++ b/spec/commands/exec_spec.rb
@@ -68,6 +68,8 @@ RSpec.describe "bundle exec" do
end
it "respects custom process title when loading through ruby" do
+ skip "https://github.com/bundler/bundler/issues/6898" if Gem.win_platform?
+
script_that_changes_its_own_title_and_checks_if_picked_up_by_ps_unix_utility = <<~'RUBY'
Process.setproctitle("1-2-3-4-5-6-7-8-9-10-11-12-13-14-15")
puts `ps -ocommand= -p#{$$}`
@@ -91,6 +93,8 @@ RSpec.describe "bundle exec" do
end
it "handles --keep-file-descriptors" do
+ skip "https://github.com/bundler/bundler/issues/6898" if Gem.win_platform?
+
require "tempfile"
command = Tempfile.new("io-test")
@@ -122,6 +126,8 @@ RSpec.describe "bundle exec" do
end
it "can run a command named --verbose" do
+ skip "https://github.com/bundler/bundler/issues/6898" if Gem.win_platform?
+
install_gemfile 'gem "rack"'
File.open("--verbose", "w") do |f|
f.puts "#!/bin/sh"
@@ -286,6 +292,8 @@ RSpec.describe "bundle exec" do
end
it "does not duplicate already exec'ed RUBYOPT" do
+ skip "https://github.com/bundler/bundler/issues/6898" if Gem.win_platform?
+
install_gemfile <<-G
gem "rack"
G
@@ -301,6 +309,8 @@ RSpec.describe "bundle exec" do
end
it "does not duplicate already exec'ed RUBYLIB" do
+ skip "https://github.com/bundler/bundler/issues/6898" if Gem.win_platform?
+
install_gemfile <<-G
gem "rack"
G
@@ -368,6 +378,8 @@ RSpec.describe "bundle exec" do
each_prefix.call("exec") do |exec|
describe "when #{exec} is used" do
before(:each) do
+ skip "https://github.com/bundler/bundler/issues/6898" if Gem.win_platform?
+
install_gemfile <<-G
gem "rack"
G
@@ -581,6 +593,8 @@ RSpec.describe "bundle exec" do
describe "with gems bundled for deployment" do
it "works when calling bundler from another script" do
+ skip "https://github.com/bundler/bundler/issues/6898" if Gem.win_platform?
+
gemfile <<-G
module Monkey
def bin_path(a,b,c)
@@ -634,6 +648,8 @@ RSpec.describe "bundle exec" do
shared_examples_for "it runs" do
it "like a normally executed executable" do
+ skip "https://github.com/bundler/bundler/issues/6898" if Gem.win_platform?
+
subject
expect(exitstatus).to eq(exit_code) if exitstatus
expect(err).to eq(expected_err)
@@ -813,6 +829,8 @@ __FILE__: #{path.to_s.inspect}
RUBY
it "receives the signal" do
+ skip "https://github.com/bundler/bundler/issues/6898" if Gem.win_platform?
+
bundle!("exec #{path}") do |_, o, thr|
o.gets # Consumes 'Started' and ensures that thread has started
Process.kill("INT", thr.pid)
@@ -834,6 +852,8 @@ __FILE__: #{path.to_s.inspect}
RUBY
it "makes sure no unexpected signals are restored to DEFAULT" do
+ skip "https://github.com/bundler/bundler/issues/6898" if Gem.win_platform?
+
test_signals.each do |n|
Signal.trap(n, "IGNORE")
end
@@ -858,6 +878,8 @@ __FILE__: #{path.to_s.inspect}
end
it "correctly shells out", :ruby_repo do
+ skip "https://github.com/bundler/bundler/issues/6898" if Gem.win_platform?
+
file = bundled_app("file_that_bundle_execs.rb")
create_file(file, <<-RB)
#!#{Gem.ruby}
@@ -874,6 +896,7 @@ __FILE__: #{path.to_s.inspect}
let(:expected) { ruby "gem 'openssl', '< 999999'; require 'openssl'; puts OpenSSL::VERSION", :artifice => nil }
it "only leaves the default gem in the stdlib available" do
+ skip "https://github.com/bundler/bundler/issues/6898" if Gem.win_platform?
skip "openssl isn't a default gem" if expected.empty?
install_gemfile! "" # must happen before installing the broken system gem
diff --git a/spec/commands/help_spec.rb b/spec/commands/help_spec.rb
index f4f90b9347..658b1374d4 100644
--- a/spec/commands/help_spec.rb
+++ b/spec/commands/help_spec.rb
@@ -28,6 +28,8 @@ RSpec.describe "bundle help" do
end
it "looks for a binary and executes it with --help option if it's named bundler-<task>" do
+ skip "obscure error" if Gem.win_platform?
+
File.open(tmp("bundler-testtasks"), "w", 0o755) do |f|
f.puts "#!/usr/bin/env ruby\nputs ARGV.join(' ')\n"
end
diff --git a/spec/commands/install_spec.rb b/spec/commands/install_spec.rb
index 3c2ee69f32..c79e44677a 100644
--- a/spec/commands/install_spec.rb
+++ b/spec/commands/install_spec.rb
@@ -218,6 +218,8 @@ RSpec.describe "bundle install with gem sources" do
describe "with a gem that installs multiple platforms" do
it "installs gems for the local platform as first choice" do
+ skip "version is 1.0, not 1.0.0" if Gem.win_platform?
+
install_gemfile <<-G
source "#{file_uri_for(gem_repo1)}"
gem "platform_specific"
@@ -372,6 +374,8 @@ RSpec.describe "bundle install with gem sources" do
end
it "gracefully handles error when rubygems server is unavailable" do
+ skip "networking issue" if Gem.win_platform?
+
install_gemfile <<-G, :artifice => nil
source "#{file_uri_for(gem_repo1)}"
source "http://0.0.0.0:9384" do
@@ -536,7 +540,7 @@ RSpec.describe "bundle install with gem sources" do
end
end
- describe "when bundle path does not have write access" do
+ describe "when bundle path does not have write access", :permissions do
before do
FileUtils.mkdir_p(bundled_app("vendor"))
gemfile <<-G
diff --git a/spec/install/allow_offline_install_spec.rb b/spec/install/allow_offline_install_spec.rb
index 8af88b7efe..2662c12953 100644
--- a/spec/install/allow_offline_install_spec.rb
+++ b/spec/install/allow_offline_install_spec.rb
@@ -7,6 +7,8 @@ RSpec.describe "bundle install with :allow_offline_install" do
context "with no cached data locally" do
it "still installs" do
+ skip "corrupt test gem" if Gem.win_platform?
+
install_gemfile! <<-G, :artifice => "compact_index"
source "http://testgemserver.local"
gem "rack-obama"
@@ -26,6 +28,8 @@ RSpec.describe "bundle install with :allow_offline_install" do
context "with cached data locally" do
it "will install from the compact index" do
+ skip "corrupt test gem" if Gem.win_platform?
+
system_gems ["rack-1.0.0"], :path => :bundle_path
bundle! "config set clean false"
@@ -70,6 +74,8 @@ RSpec.describe "bundle install with :allow_offline_install" do
end
it "will install from a cached git repo" do
+ skip "doesn't print errors" if Gem.win_platform?
+
git = build_git "a", "1.0.0", :path => lib_path("a")
update_git("a", :path => git.path, :branch => "new_branch")
install_gemfile! <<-G
diff --git a/spec/install/deploy_spec.rb b/spec/install/deploy_spec.rb
index f92a531bf5..ff32887c5e 100644
--- a/spec/install/deploy_spec.rb
+++ b/spec/install/deploy_spec.rb
@@ -65,6 +65,8 @@ RSpec.describe "install with --deployment or --frozen" do
end
it "works when you bundle exec bundle" do
+ skip "doesn't find bundle" if Gem.win_platform?
+
bundle! :install
bundle "install --deployment"
bundle! "exec bundle check"
@@ -83,6 +85,8 @@ RSpec.describe "install with --deployment or --frozen" do
end
it "works when there are credentials in the source URL" do
+ skip "corrupt test gem" if Gem.win_platform?
+
install_gemfile(<<-G, :artifice => "endpoint_strict_basic_authentication", :quiet => true)
source "http://user:pass@localgemserver.test/"
diff --git a/spec/install/gemfile/gemspec_spec.rb b/spec/install/gemfile/gemspec_spec.rb
index 26a6235166..2da53a5c13 100644
--- a/spec/install/gemfile/gemspec_spec.rb
+++ b/spec/install/gemfile/gemspec_spec.rb
@@ -333,6 +333,8 @@ RSpec.describe "bundle install from an existing gemspec" do
let(:platform) { "ruby" }
before do
+ skip "not installing for some reason" if Gem.win_platform?
+
build_lib("foo", :path => tmp.join("foo")) do |s|
s.add_dependency "rack", "=1.0.0"
end
diff --git a/spec/install/gemfile/git_spec.rb b/spec/install/gemfile/git_spec.rb
index 1ef00116e7..c916664bd9 100644
--- a/spec/install/gemfile/git_spec.rb
+++ b/spec/install/gemfile/git_spec.rb
@@ -311,11 +311,10 @@ RSpec.describe "bundle install with git sources" do
describe "when specifying a branch" do
let(:branch) { "branch" }
let(:repo) { build_git("foo").path }
- before(:each) do
- update_git("foo", :path => repo, :branch => branch)
- end
it "works" do
+ update_git("foo", :path => repo, :branch => branch)
+
install_gemfile <<-G
git "#{repo}", :branch => #{branch.dump} do
gem "foo"
@@ -328,6 +327,10 @@ RSpec.describe "bundle install with git sources" do
context "when the branch starts with a `#`" do
let(:branch) { "#149/redirect-url-fragment" }
it "works" do
+ skip "git does not accept this" if Gem.win_platform?
+
+ update_git("foo", :path => repo, :branch => branch)
+
install_gemfile <<-G
git "#{repo}", :branch => #{branch.dump} do
gem "foo"
@@ -341,6 +344,10 @@ RSpec.describe "bundle install with git sources" do
context "when the branch includes quotes" do
let(:branch) { %('") }
it "works" do
+ skip "git does not accept this" if Gem.win_platform?
+
+ update_git("foo", :path => repo, :branch => branch)
+
install_gemfile <<-G
git "#{repo}", :branch => #{branch.dump} do
gem "foo"
@@ -355,11 +362,10 @@ RSpec.describe "bundle install with git sources" do
describe "when specifying a tag" do
let(:tag) { "tag" }
let(:repo) { build_git("foo").path }
- before(:each) do
- update_git("foo", :path => repo, :tag => tag)
- end
it "works" do
+ update_git("foo", :path => repo, :tag => tag)
+
install_gemfile <<-G
git "#{repo}", :tag => #{tag.dump} do
gem "foo"
@@ -372,6 +378,10 @@ RSpec.describe "bundle install with git sources" do
context "when the tag starts with a `#`" do
let(:tag) { "#149/redirect-url-fragment" }
it "works" do
+ skip "git does not accept this" if Gem.win_platform?
+
+ update_git("foo", :path => repo, :tag => tag)
+
install_gemfile <<-G
git "#{repo}", :tag => #{tag.dump} do
gem "foo"
@@ -385,6 +395,10 @@ RSpec.describe "bundle install with git sources" do
context "when the tag includes quotes" do
let(:tag) { %('") }
it "works" do
+ skip "git does not accept this" if Gem.win_platform?
+
+ update_git("foo", :path => repo, :tag => tag)
+
install_gemfile <<-G
git "#{repo}", :tag => #{tag.dump} do
gem "foo"
@@ -625,6 +639,8 @@ RSpec.describe "bundle install with git sources" do
end
it "installs dependencies from git even if a newer gem is available elsewhere" do
+ skip "override is not winning" if Gem.win_platform?
+
system_gems "rack-1.0.0"
build_lib "rack", "1.0", :path => lib_path("nested/bar") do |s|
@@ -920,6 +936,8 @@ RSpec.describe "bundle install with git sources" do
end
it "prints a friendly error if a file blocks the git repo" do
+ skip "drive letter is not detected correctly in error message" if Gem.win_platform?
+
build_git "foo"
FileUtils.mkdir_p(default_bundle_path)
diff --git a/spec/install/gemfile/path_spec.rb b/spec/install/gemfile/path_spec.rb
index b21c08ec92..e1ca389dc4 100644
--- a/spec/install/gemfile/path_spec.rb
+++ b/spec/install/gemfile/path_spec.rb
@@ -59,6 +59,8 @@ RSpec.describe "bundle install with explicit source paths" do
end
it "expands paths raise error with not existing user's home dir" do
+ skip "problems with ~ expansion" if Gem.win_platform?
+
build_lib "foo"
username = "some_unexisting_user"
relative_path = lib_path("foo-1.0").relative_path_from(Pathname.new("/home/#{username}").expand_path)
@@ -139,6 +141,8 @@ RSpec.describe "bundle install with explicit source paths" do
end
it "installs dependencies from the path even if a newer gem is available elsewhere" do
+ skip "override is not winning" if Gem.win_platform?
+
system_gems "rack-1.0.0"
build_lib "rack", "1.0", :path => lib_path("nested/bar") do |s|
@@ -644,6 +648,8 @@ RSpec.describe "bundle install with explicit source paths" do
describe "when there are both a gemspec and remote gems" do
it "doesn't query rubygems for local gemspec name" do
+ skip "platform issues" if Gem.win_platform?
+
build_lib "private_lib", "2.2", :path => lib_path("private_lib")
gemfile = <<-G
source "http://localgemserver.test"
diff --git a/spec/install/gemfile/platform_spec.rb b/spec/install/gemfile/platform_spec.rb
index c096531398..eab5e7f00c 100644
--- a/spec/install/gemfile/platform_spec.rb
+++ b/spec/install/gemfile/platform_spec.rb
@@ -274,6 +274,8 @@ end
RSpec.describe "bundle install with platform conditionals" do
it "installs gems tagged w/ the current platforms" do
+ skip "platform issues" if Gem.win_platform?
+
install_gemfile <<-G
source "#{file_uri_for(gem_repo1)}"
@@ -299,6 +301,8 @@ RSpec.describe "bundle install with platform conditionals" do
end
it "installs gems tagged w/ the current platforms inline" do
+ skip "platform issues" if Gem.win_platform?
+
install_gemfile <<-G
source "#{file_uri_for(gem_repo1)}"
gem "nokogiri", :platforms => :#{local_tag}
@@ -317,6 +321,8 @@ RSpec.describe "bundle install with platform conditionals" do
end
it "installs gems tagged w/ the current platform inline" do
+ skip "platform issues" if Gem.win_platform?
+
install_gemfile <<-G
source "#{file_uri_for(gem_repo1)}"
gem "nokogiri", :platform => :#{local_tag}
@@ -373,6 +379,8 @@ RSpec.describe "bundle install with platform conditionals" do
end
it "prints a helpful warning when a dependency is unused on any platform" do
+ skip "prints warning but bundle install fails" if Gem.win_platform?
+
simulate_platform "ruby"
simulate_ruby_engine "ruby"
@@ -393,6 +401,8 @@ The dependency #{Gem::Dependency.new("rack", ">= 0")} will be unused by any of t
before { bundle! "config set disable_platform_warnings true" }
it "does not print the warning when a dependency is unused on any platform" do
+ skip "skips warning but bundle install fails" if Gem.win_platform?
+
simulate_platform "ruby"
simulate_ruby_engine "ruby"
diff --git a/spec/install/gems/compact_index_spec.rb b/spec/install/gems/compact_index_spec.rb
index a294b83d1c..88f5a5f24b 100644
--- a/spec/install/gems/compact_index_spec.rb
+++ b/spec/install/gems/compact_index_spec.rb
@@ -5,6 +5,8 @@ RSpec.describe "compact index 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 "compact index 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 "compact index api" do
end
it "should handle case sensitivity conflicts" do
+ skip "artifice issues?" if Gem.win_platform?
+
build_repo4 do
build_gem "rack", "1.0" do |s|
s.add_runtime_dependency("Rack", "0.1")
@@ -64,6 +70,8 @@ RSpec.describe "compact index 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"
@@ -74,6 +82,8 @@ RSpec.describe "compact index 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"
@@ -86,6 +96,8 @@ RSpec.describe "compact index 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"
@@ -104,6 +116,8 @@ RSpec.describe "compact index 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"
@@ -148,6 +162,8 @@ RSpec.describe "compact index 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"
@@ -159,6 +175,8 @@ RSpec.describe "compact index api" do
end
it "falls back when the versions endpoint has a checksum mismatch" do
+ skip "artifice issues?" if Gem.win_platform?
+
gemfile <<-G
source "#{source_uri}"
gem "rack"
@@ -173,6 +191,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "falls back when the user's home directory does not exist or is not writable" do
+ skip "artifice issues?" if Gem.win_platform?
+
ENV["HOME"] = tmp("missing_home").to_s
gemfile <<-G
@@ -186,6 +206,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "handles host redirects" do
+ skip "artifice issues?" if Gem.win_platform?
+
gemfile <<-G
source "#{source_uri}"
gem "rack"
@@ -196,6 +218,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "handles host redirects without Net::HTTP::Persistent" do
+ skip "artifice issues?" if Gem.win_platform?
+
gemfile <<-G
source "#{source_uri}"
gem "rack"
@@ -220,6 +244,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "times out when Bundler::Fetcher redirects too much" do
+ skip "artifice issues?" if Gem.win_platform?
+
gemfile <<-G
source "#{source_uri}"
gem "rack"
@@ -230,6 +256,10 @@ The checksum of /versions does not match the checksum provided by the server! So
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}"
@@ -270,6 +300,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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"
@@ -288,6 +320,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "fetches again when more dependencies are found in subsequent sources with source blocks" do
+ skip "artifice issues?" if Gem.win_platform?
+
build_repo2 do
build_gem "back_deps" do |s|
s.add_dependency "foo"
@@ -306,6 +340,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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"
@@ -329,6 +365,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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
@@ -353,6 +391,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "considers all possible versions of dependencies from all api gem sources when using blocks", :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
@@ -378,6 +418,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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"
@@ -399,6 +441,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "does not fetch every spec if the index of gems is large when doing back deps" do
+ skip "artifice issues?" if Gem.win_platform?
+
build_repo2 do
build_gem "back_deps" do |s|
s.add_dependency "foo"
@@ -424,6 +468,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "does not fetch every spec if the index of gems is large when doing back deps & everything is the compact index" do
+ skip "artifice issues?" if Gem.win_platform?
+
build_repo4 do
build_gem "back_deps" do |s|
s.add_dependency "foo"
@@ -448,6 +494,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "uses the endpoint if all sources support it" do
+ skip "artifice issues?" if Gem.win_platform?
+
gemfile <<-G
source "#{source_uri}"
@@ -459,6 +507,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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"
@@ -479,6 +529,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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"
@@ -500,6 +552,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "does not refetch if the only unmet dependency is bundler" do
+ skip "artifice issues?" if Gem.win_platform?
+
gemfile <<-G
source "#{source_uri}"
@@ -523,6 +577,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "installs the binstubs", :bundler => "< 3" do
+ skip "artifice issues?" if Gem.win_platform?
+
gemfile <<-G
source "#{source_uri}"
gem "rack"
@@ -535,6 +591,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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"
@@ -546,6 +604,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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"
@@ -557,6 +617,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "prints post_install_messages" do
+ skip "artifice issues?" if Gem.win_platform?
+
gemfile <<-G
source "#{source_uri}"
gem 'rack-obama'
@@ -567,6 +629,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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'
@@ -589,6 +653,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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"
@@ -600,6 +666,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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"
@@ -621,6 +689,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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)}"
@@ -634,6 +704,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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"
@@ -652,6 +724,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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 => "compact_index_strict_basic_authentication"
@@ -661,6 +735,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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}"
@@ -671,6 +747,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "should use the API" do
+ skip "artifice issues?" if Gem.win_platform?
+
bundle "config set #{source_hostname} #{user}:#{password}"
bundle! :install, :artifice => "compact_index_strict_basic_authentication"
expect(out).to include("Fetching gem metadata from #{source_uri}")
@@ -678,6 +756,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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"
@@ -706,6 +786,8 @@ The checksum of /versions does not match the checksum provided by the server! So
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"
@@ -762,27 +844,31 @@ The checksum of /versions does not match the checksum provided by the server! So
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
+ begin
+ gemfile <<-G
+ source "#{source_uri}"
+ gem 'rack'
+ G
- it "uses other sources declared in the Gemfile" do
- gemfile <<-G
- source "#{source_uri}"
- gem 'rack'
- G
+ bundle! :install, :artifice => "compact_index_forbidden"
- bundle! :install, :artifice => "compact_index_forbidden"
+ expect(exitstatus).to eq(0) if exitstatus
+ ensure
+ home(".gemrc").rmtree
+ end
end
end
it "performs partial update with a non-empty range" do
+ skip "artifice issues?" if Gem.win_platform?
+
gemfile <<-G
source "#{source_uri}"
gem 'rack', '0.9.1'
@@ -804,6 +890,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "performs partial update while local cache is updated by another process" do
+ skip "artifice issues?" if Gem.win_platform?
+
gemfile <<-G
source "#{source_uri}"
gem 'rack'
@@ -822,6 +910,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "performs full update of compact index info cache if range is not satisfiable" do
+ skip "artifice issues?" if Gem.win_platform?
+
gemfile <<-G
source "#{source_uri}"
gem 'rack', '0.9.1'
@@ -865,6 +955,8 @@ The checksum of /versions does not match the checksum provided by the server! So
describe "checksum validation" do
it "raises when the checksum does not match" do
+ skip "artifice issues?" if Gem.win_platform?
+
install_gemfile <<-G, :artifice => "compact_index_wrong_gem_checksum"
source "#{source_uri}"
gem "rack"
@@ -885,6 +977,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "raises when the checksum is the wrong length" do
+ skip "artifice issues?" if Gem.win_platform?
+
install_gemfile <<-G, :artifice => "compact_index_wrong_gem_checksum", :env => { "BUNDLER_SPEC_RACK_CHECKSUM" => "checksum!" }
source "#{source_uri}"
gem "rack"
@@ -894,6 +988,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "does not raise when disable_checksum_validation is set" do
+ skip "artifice issues?" if Gem.win_platform?
+
bundle! "config set disable_checksum_validation true"
install_gemfile! <<-G, :artifice => "compact_index_wrong_gem_checksum"
source "#{source_uri}"
@@ -903,6 +999,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "works when cache dir is world-writable" do
+ skip "artifice issues?" if Gem.win_platform?
+
install_gemfile! <<-G, :artifice => "compact_index"
File.umask(0000)
source "#{source_uri}"
@@ -911,6 +1009,8 @@ The checksum of /versions does not match the checksum provided by the server! So
end
it "doesn't explode when the API dependencies are wrong" do
+ skip "artifice issues?" if Gem.win_platform?
+
install_gemfile <<-G, :artifice => "compact_index_wrong_dependencies", :env => { "DEBUG" => "true" }
source "#{source_uri}"
gem "rails"
@@ -927,6 +1027,8 @@ Either installing with `--full-index` or running `bundle update rails` should fi
end
it "does not duplicate specs in the lockfile when updating and a dependency is not installed" do
+ skip "artifice issues?" if Gem.win_platform?
+
install_gemfile! <<-G, :artifice => "compact_index"
source "#{source_uri}" do
gem "rails"
diff --git a/spec/install/gems/dependency_api_spec.rb b/spec/install/gems/dependency_api_spec.rb
index a8713eb445..6791ff846c 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'
@@ -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
diff --git a/spec/install/gems/resolving_spec.rb b/spec/install/gems/resolving_spec.rb
index 52511ff67f..523f9eb151 100644
--- a/spec/install/gems/resolving_spec.rb
+++ b/spec/install/gems/resolving_spec.rb
@@ -19,6 +19,8 @@ RSpec.describe "bundle install with install-time dependencies" do
end
it "installs gems with a dependency with no type" do
+ skip "incorrect data check error" if Gem.win_platform?
+
build_repo2
path = "#{gem_repo2}/#{Gem::MARSHAL_SPEC_DIR}/actionpack-2.3.2.gemspec.rz"
@@ -101,6 +103,10 @@ RSpec.describe "bundle install with install-time dependencies" do
describe "when a required ruby version" do
context "allows only an older version" do
+ before do
+ skip "gem not found" if Gem.win_platform?
+ end
+
it "installs the older version" do
build_repo2 do
build_gem "rack", "9001.0.0" do |s|
@@ -153,6 +159,8 @@ RSpec.describe "bundle install with install-time dependencies" do
shared_examples_for "ruby version conflicts" do
it "raises an error during resolution" do
+ skip "ruby requirement includes platform and it shouldn't" if Gem.win_platform?
+
install_gemfile <<-G, :artifice => "compact_index", :env => { "BUNDLER_SPEC_GEM_REPO" => gem_repo2.to_s }
source "http://localgemserver.test/"
ruby #{ruby_requirement}
diff --git a/spec/install/gems/standalone_spec.rb b/spec/install/gems/standalone_spec.rb
index bc0246b946..2745fe671c 100644
--- a/spec/install/gems/standalone_spec.rb
+++ b/spec/install/gems/standalone_spec.rb
@@ -256,6 +256,8 @@ RSpec.shared_examples "bundle install --standalone" do
describe "simple gems" do
before do
+ skip "artifice issues maybe" if Gem.win_platform?
+
gemfile <<-G
source "#{source_uri}"
gem "rails"
@@ -293,12 +295,16 @@ RSpec.shared_examples "bundle install --standalone" do
include_examples "common functionality"
it "creates stubs that use the standalone load path" do
+ skip "exec format error" if Gem.win_platform?
+
Dir.chdir(bundled_app) do
expect(`bin/rails -v`.chomp).to eql "2.3.2"
end
end
it "creates stubs that can be executed from anywhere" do
+ skip "exec format error" if Gem.win_platform?
+
require "tmpdir"
Dir.chdir(Dir.tmpdir) do
sys_exec!(%(#{bundled_app("bin/rails")} -v))
@@ -307,7 +313,7 @@ RSpec.shared_examples "bundle install --standalone" do
end
it "creates stubs that can be symlinked" do
- pending "File.symlink is unsupported on Windows" if Bundler::WINDOWS
+ skip "symlinks unsupported" if Gem.win_platform?
symlink_dir = tmp("symlink")
FileUtils.mkdir_p(symlink_dir)
diff --git a/spec/install/gemspecs_spec.rb b/spec/install/gemspecs_spec.rb
index 4c00caa60c..048987af9b 100644
--- a/spec/install/gemspecs_spec.rb
+++ b/spec/install/gemspecs_spec.rb
@@ -28,6 +28,8 @@ RSpec.describe "bundle install" do
end
it "should use gemspecs in the system cache when available" do
+ skip "weird incompatible marshal file format error" if Gem.win_platform?
+
gemfile <<-G
source "http://localtestserver.gem"
gem 'rack'
diff --git a/spec/install/git_spec.rb b/spec/install/git_spec.rb
index cc8bf70b03..1b32991fa8 100644
--- a/spec/install/git_spec.rb
+++ b/spec/install/git_spec.rb
@@ -5,16 +5,17 @@ RSpec.describe "bundle install" do
it "displays the revision hash of the gem repository", :bundler => "< 3" do
build_git "foo", "1.0", :path => lib_path("foo")
- install_gemfile <<-G
- gem "foo", :git => "#{lib_path("foo")}"
+ install_gemfile! <<-G
+ gem "foo", :git => "#{file_uri_for(lib_path("foo"))}"
G
- bundle! :install
- expect(out).to include("Using foo 1.0 from #{lib_path("foo")} (at master@#{revision_for(lib_path("foo"))[0..6]})")
+ expect(out).to include("Using foo 1.0 from #{file_uri_for(lib_path("foo"))} (at master@#{revision_for(lib_path("foo"))[0..6]})")
expect(the_bundle).to include_gems "foo 1.0", :source => "git@#{lib_path("foo")}"
end
it "displays the ref of the gem repository when using branch~num as a ref", :bundler => "< 3" do
+ skip "maybe branch~num notation doesn't work on Windows' git" if Gem.win_platform?
+
build_git "foo", "1.0", :path => lib_path("foo")
rev = revision_for(lib_path("foo"))[0..6]
update_git "foo", "2.0", :path => lib_path("foo"), :gemspec => true
@@ -22,17 +23,16 @@ RSpec.describe "bundle install" do
update_git "foo", "3.0", :path => lib_path("foo"), :gemspec => true
install_gemfile! <<-G
- gem "foo", :git => "#{lib_path("foo")}", :ref => "master~2"
+ gem "foo", :git => "#{file_uri_for(lib_path("foo"))}", :ref => "master~2"
G
- bundle! :install
- expect(out).to include("Using foo 1.0 from #{lib_path("foo")} (at master~2@#{rev})")
+ expect(out).to include("Using foo 1.0 from #{file_uri_for(lib_path("foo"))} (at master~2@#{rev})")
expect(the_bundle).to include_gems "foo 1.0", :source => "git@#{lib_path("foo")}"
update_git "foo", "4.0", :path => lib_path("foo"), :gemspec => true
bundle! :update, :all => true
- expect(out).to include("Using foo 2.0 (was 1.0) from #{lib_path("foo")} (at master~2@#{rev2})")
+ expect(out).to include("Using foo 2.0 (was 1.0) from #{file_uri_for(lib_path("foo"))} (at master~2@#{rev2})")
expect(the_bundle).to include_gems "foo 2.0", :source => "git@#{lib_path("foo")}"
end
@@ -69,10 +69,10 @@ RSpec.describe "bundle install" do
build_git "gems", :path => lib_path("gems"), :gemspec => false
end
- install_gemfile <<-G
+ install_gemfile! <<-G
source "#{file_uri_for(gem_repo2)}"
- gem "foo", :git => "#{lib_path("gems")}", :glob => "foo/*.gemspec"
- gem "zebra", :git => "#{lib_path("gems")}", :glob => "zebra/*.gemspec"
+ gem "foo", :git => "#{file_uri_for(lib_path("gems"))}", :glob => "foo/*.gemspec"
+ gem "zebra", :git => "#{file_uri_for(lib_path("gems"))}", :glob => "zebra/*.gemspec"
G
bundle "info foo"
diff --git a/spec/install/global_cache_spec.rb b/spec/install/global_cache_spec.rb
index caee397787..253079a1eb 100644
--- a/spec/install/global_cache_spec.rb
+++ b/spec/install/global_cache_spec.rb
@@ -16,6 +16,8 @@ RSpec.describe "global gem caching" do
end
it "caches gems into the global cache on download" do
+ skip "corrupt test gem" if Gem.win_platform?
+
install_gemfile! <<-G, :artifice => "compact_index"
source "#{source}"
gem "rack"
@@ -38,6 +40,10 @@ RSpec.describe "global gem caching" do
end
describe "when the same gem from different sources is installed" do
+ before do
+ skip "corrupt test gem" if Gem.win_platform?
+ end
+
it "should use the appropriate one from the global cache" do
install_gemfile! <<-G, :artifice => "compact_index"
source "#{source}"
@@ -134,6 +140,8 @@ RSpec.describe "global gem caching" do
describe "when installing gems from a different directory" do
it "uses the global cache as a source" do
+ skip "corrupt test gem" if Gem.win_platform?
+
install_gemfile! <<-G, :artifice => "compact_index"
source "#{source}"
gem "rack"
@@ -189,6 +197,8 @@ RSpec.describe "global gem caching" do
describe "extension caching", :ruby_repo do
it "works" do
+ skip "gets incorrect ref in path" if Gem.win_platform?
+
build_git "very_simple_git_binary", &:add_c_extension
build_lib "very_simple_path_binary", &:add_c_extension
revision = revision_for(lib_path("very_simple_git_binary-1.0"))[0, 12]
diff --git a/spec/lock/lockfile_spec.rb b/spec/lock/lockfile_spec.rb
index ddab4831a5..0f5a0c6e52 100644
--- a/spec/lock/lockfile_spec.rb
+++ b/spec/lock/lockfile_spec.rb
@@ -303,6 +303,8 @@ RSpec.describe "the lockfile format" do
end
it "generates a lockfile without credentials for a configured source", :bundler => "< 3" do
+ skip "corrupt test gem" if Gem.win_platform?
+
bundle "config set http://localgemserver.test/ user:pass"
install_gemfile(<<-G, :artifice => "endpoint_strict_basic_authentication", :quiet => true)
@@ -1403,6 +1405,8 @@ RSpec.describe "the lockfile format" do
end
it "preserves Gemfile.lock \\n\\r line endings" do
+ skip "needs to be adapted" if Gem.win_platform?
+
update_repo2
win_lock = File.read(bundled_app("Gemfile.lock")).gsub(/\n/, "\r\n")
File.open(bundled_app("Gemfile.lock"), "wb") {|f| f.puts(win_lock) }
diff --git a/spec/runtime/executable_spec.rb b/spec/runtime/executable_spec.rb
index 003be97cd6..96197a52b8 100644
--- a/spec/runtime/executable_spec.rb
+++ b/spec/runtime/executable_spec.rb
@@ -9,6 +9,8 @@ RSpec.describe "Running bin/* commands" do
end
it "runs the bundled command when in the bundle" do
+ skip "exec format error" if Gem.win_platform?
+
bundle! "binstubs rack"
build_gem "rack", "2.0", :to_system => true do |s|
@@ -20,6 +22,8 @@ RSpec.describe "Running bin/* commands" do
end
it "allows the location of the gem stubs to be specified" do
+ skip "created in bin :/" if Gem.win_platform?
+
bundle! "binstubs rack", :path => "gbin"
expect(bundled_app("bin")).not_to exist
@@ -30,6 +34,8 @@ RSpec.describe "Running bin/* commands" do
end
it "allows absolute paths as a specification of where to install bin stubs" do
+ skip "exec format error" if Gem.win_platform?
+
bundle! "binstubs rack", :path => tmp("bin")
gembin tmp("bin/rackup")
@@ -42,11 +48,15 @@ RSpec.describe "Running bin/* commands" do
end
it "allows the name of the shebang executable to be specified" do
+ skip "not created with custom name :/" if Gem.win_platform?
+
bundle! "binstubs rack", :shebang => "ruby-foo"
expect(File.open("bin/rackup").gets).to eq("#!/usr/bin/env ruby-foo\n")
end
it "runs the bundled command when out of the bundle" do
+ skip "exec format error" if Gem.win_platform?
+
bundle! "binstubs rack"
build_gem "rack", "2.0", :to_system => true do |s|
@@ -60,6 +70,8 @@ RSpec.describe "Running bin/* commands" do
end
it "works with gems in path" do
+ skip "exec format error" if Gem.win_platform?
+
build_lib "rack", :path => lib_path("rack") do |s|
s.executables = "rackup"
end
@@ -94,12 +106,16 @@ RSpec.describe "Running bin/* commands" do
end
it "does not generate bin stubs if the option was not specified" do
+ skip "generated :/" if Gem.win_platform?
+
bundle! "install"
expect(bundled_app("bin/rackup")).not_to exist
end
it "allows you to stop installing binstubs", :bundler => "< 3" do
+ skip "delete permission error" if Gem.win_platform?
+
bundle! "install --binstubs bin/"
bundled_app("bin/rackup").rmtree
bundle! "install --binstubs \"\""
@@ -143,6 +159,8 @@ RSpec.describe "Running bin/* commands" do
end
it "use BUNDLE_GEMFILE gemfile for binstub" do
+ skip "exec format error" if Gem.win_platform?
+
# context with bin/bundler w/ default Gemfile
bundle! "binstubs bundler"
diff --git a/spec/runtime/inline_spec.rb b/spec/runtime/inline_spec.rb
index cd762fe636..def258ec66 100644
--- a/spec/runtime/inline_spec.rb
+++ b/spec/runtime/inline_spec.rb
@@ -46,6 +46,8 @@ RSpec.describe "bundler/inline#gemfile" do
end
it "requires the gems" do
+ skip "gems not found" if Gem.win_platform?
+
script <<-RUBY
gemfile do
path "#{lib_path}" do
@@ -95,6 +97,8 @@ RSpec.describe "bundler/inline#gemfile" do
end
it "lets me use my own ui object" do
+ skip "prints just one CONFIRMED" if Gem.win_platform?
+
script <<-RUBY, :artifice => "endpoint"
require '#{lib_dir}/bundler'
class MyBundlerUI < Bundler::UI::Silent
diff --git a/spec/runtime/require_spec.rb b/spec/runtime/require_spec.rb
index 53b7883956..a2e6ba7244 100644
--- a/spec/runtime/require_spec.rb
+++ b/spec/runtime/require_spec.rb
@@ -434,6 +434,8 @@ RSpec.describe "Bundler.require with platform specific dependencies" do
end
it "requires gems pinned to multiple platforms, including the current one" do
+ skip "platform issues" if Gem.win_platform?
+
install_gemfile <<-G
source "#{file_uri_for(gem_repo1)}"
diff --git a/spec/runtime/setup_spec.rb b/spec/runtime/setup_spec.rb
index 7f00a63078..cab7b7cc2a 100644
--- a/spec/runtime/setup_spec.rb
+++ b/spec/runtime/setup_spec.rb
@@ -708,7 +708,7 @@ end
end
context "when the user has one set" do
- before { ENV["MANPATH"] = "/foo:" }
+ before { ENV["MANPATH"] = "/foo#{File::PATH_SEPARATOR}" }
it "adds the gem's man dir to the MANPATH" do
install_gemfile! <<-G
@@ -717,7 +717,7 @@ end
G
run! "puts ENV['MANPATH']"
- expect(out).to eq("#{default_bundle_path("gems/with_man-1.0/man")}:/foo")
+ expect(out).to eq("#{default_bundle_path("gems/with_man-1.0/man")}#{File::PATH_SEPARATOR}/foo")
end
end
@@ -793,6 +793,8 @@ end
let(:full_name) { "bundler-#{Bundler::VERSION}" }
before do
+ skip "symlink destination exists" if Gem.win_platform?
+
FileUtils.ln_sf(gem_home, symlinked_gem_home)
gems_dir = File.join(gem_home, "gems")
specifications_dir = File.join(gem_home, "specifications")
@@ -1015,6 +1017,8 @@ end
end
it "error intelligently if the gemspec has a LoadError" do
+ skip "whitespace issue?" if Gem.win_platform?
+
ref = update_git "bar", :gemspec => false do |s|
s.write "bar.gemspec", "require 'foobarbaz'"
end.ref_for("HEAD")
@@ -1202,11 +1206,13 @@ end
describe "default gem activation" do
let(:exemptions) do
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new("2.7")
+ exempts = if Gem::Version.new(Gem::VERSION) >= Gem::Version.new("2.7")
%w[did_you_mean]
else
%w[io-console openssl]
end << "bundler"
+ exempts << "fiddle" if Gem.win_platform? && Gem::Version.new(Gem::VERSION) >= Gem::Version.new("2.7")
+ exempts
end
let(:activation_warning_hack) { strip_whitespace(<<-RUBY) }
@@ -1256,6 +1262,8 @@ end
end
it "activates no gems with bundle exec that is loaded" do
+ skip "not executable" if Gem.win_platform?
+
install_gemfile! ""
create_file("script.rb", "#!/usr/bin/env ruby\n\n#{code}")
FileUtils.chmod(0o777, bundled_app("script.rb"))
diff --git a/spec/runtime/with_unbundled_env_spec.rb b/spec/runtime/with_unbundled_env_spec.rb
index 4aaf9d499c..81fdf0aaea 100644
--- a/spec/runtime/with_unbundled_env_spec.rb
+++ b/spec/runtime/with_unbundled_env_spec.rb
@@ -24,7 +24,7 @@ RSpec.describe "Bundler.with_env helpers" do
it "should return the GEM_PATH present before bundle was activated" do
code = "print Bundler.original_env['GEM_PATH']"
- gem_path = ENV["GEM_PATH"] + ":/foo"
+ gem_path = ENV["GEM_PATH"] + "#{File::PATH_SEPARATOR}/foo"
with_gem_path_as(gem_path) do
bundle_exec_ruby!(code.dump)
expect(last_command.stdboth).to eq(gem_path)
@@ -35,9 +35,9 @@ RSpec.describe "Bundler.with_env helpers" do
create_file("exe.rb", <<-'RB')
count = ARGV.first.to_i
exit if count < 0
- STDERR.puts "#{count} #{ENV["PATH"].end_with?(":/foo")}"
+ STDERR.puts "#{count} #{ENV["PATH"].end_with?("#{File::PATH_SEPARATOR}/foo")}"
if count == 2
- ENV["PATH"] = "#{ENV["PATH"]}:/foo"
+ ENV["PATH"] = "#{ENV["PATH"]}#{File::PATH_SEPARATOR}/foo"
end
exec(Gem.ruby, __FILE__, (count - 1).to_s)
RB
@@ -170,6 +170,8 @@ RSpec.describe "Bundler.with_env helpers" do
end
it "runs system inside with_original_env" do
+ skip "obscure error" if Gem.win_platform?
+
system({ "BUNDLE_FOO" => "bar" }, "ruby -I#{lib_dir} -rbundler -e '#{code}'")
expect($?.exitstatus).to eq(42)
end
@@ -185,6 +187,8 @@ RSpec.describe "Bundler.with_env helpers" do
end
it "runs system inside with_clean_env" do
+ skip "obscure error" if Gem.win_platform?
+
system({ "BUNDLE_FOO" => "bar" }, "ruby -I#{lib_dir} -rbundler -e '#{code}'")
expect($?.exitstatus).to eq(42)
end
diff --git a/spec/support/helpers.rb b/spec/support/helpers.rb
index f0803453d2..ff1a9b6823 100644
--- a/spec/support/helpers.rb
+++ b/spec/support/helpers.rb
@@ -281,7 +281,7 @@ module Spec
gems.each do |g|
if g == :bundler
with_built_bundler {|gem_path| install_gem(gem_path) }
- elsif g.to_s =~ %r{\A(?:[A-Z]:)?/.*\.gem\z}
+ elsif g.to_s =~ %r{\A(?:[a-zA-Z]:)?/.*\.gem\z}
install_gem(g)
else
install_gem("#{gem_repo}/gems/#{g}.gem")
@@ -344,6 +344,8 @@ module Spec
end
def with_fake_man
+ skip "fake_man is not a Windows friendly binstub" if Gem.win_platform?
+
FileUtils.mkdir_p(tmp("fake_man"))
File.open(tmp("fake_man/man"), "w", 0o755) do |f|
f.puts "#!/usr/bin/env ruby\nputs ARGV.inspect\n"