mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
170 lines
3.8 KiB
Ruby
170 lines
3.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe "Bundler.setup with multi platform stuff" do
|
|
it "raises a friendly error when gems are missing locally" do
|
|
gemfile <<-G
|
|
source "#{file_uri_for(gem_repo1)}"
|
|
gem "rack"
|
|
G
|
|
|
|
lockfile <<-G
|
|
GEM
|
|
remote: #{file_uri_for(gem_repo1)}/
|
|
specs:
|
|
rack (1.0)
|
|
|
|
PLATFORMS
|
|
#{local_tag}
|
|
|
|
DEPENDENCIES
|
|
rack
|
|
G
|
|
|
|
ruby <<-R
|
|
begin
|
|
require '#{lib_dir}/bundler'
|
|
Bundler.ui.silence { Bundler.setup }
|
|
rescue Bundler::GemNotFound => e
|
|
puts "WIN"
|
|
end
|
|
R
|
|
|
|
expect(out).to eq("WIN")
|
|
end
|
|
|
|
it "will resolve correctly on the current platform when the lockfile was targeted for a different one" do
|
|
lockfile <<-G
|
|
GEM
|
|
remote: #{file_uri_for(gem_repo1)}/
|
|
specs:
|
|
nokogiri (1.4.2-java)
|
|
weakling (= 0.0.3)
|
|
weakling (0.0.3)
|
|
|
|
PLATFORMS
|
|
java
|
|
|
|
DEPENDENCIES
|
|
nokogiri
|
|
G
|
|
|
|
simulate_platform "x86-darwin-10"
|
|
install_gemfile <<-G
|
|
source "#{file_uri_for(gem_repo1)}"
|
|
gem "nokogiri"
|
|
G
|
|
|
|
expect(the_bundle).to include_gems "nokogiri 1.4.2"
|
|
end
|
|
|
|
it "will add the resolve for the current platform" do
|
|
lockfile <<-G
|
|
GEM
|
|
remote: #{file_uri_for(gem_repo1)}/
|
|
specs:
|
|
nokogiri (1.4.2-java)
|
|
weakling (= 0.0.3)
|
|
weakling (0.0.3)
|
|
|
|
PLATFORMS
|
|
java
|
|
|
|
DEPENDENCIES
|
|
nokogiri
|
|
G
|
|
|
|
simulate_platform "x86-darwin-100"
|
|
|
|
install_gemfile <<-G
|
|
source "#{file_uri_for(gem_repo1)}"
|
|
gem "nokogiri"
|
|
gem "platform_specific"
|
|
G
|
|
|
|
expect(the_bundle).to include_gems "nokogiri 1.4.2", "platform_specific 1.0 x86-darwin-100"
|
|
end
|
|
|
|
it "allows specifying only-ruby-platform" do
|
|
simulate_platform "java"
|
|
|
|
install_gemfile <<-G
|
|
source "#{file_uri_for(gem_repo1)}"
|
|
gem "nokogiri"
|
|
gem "platform_specific"
|
|
G
|
|
|
|
bundle "config set force_ruby_platform true"
|
|
|
|
bundle "install"
|
|
|
|
expect(the_bundle).to include_gems "nokogiri 1.4.2", "platform_specific 1.0 RUBY"
|
|
end
|
|
|
|
it "allows specifying only-ruby-platform on windows with dependency platforms" do
|
|
simulate_windows do
|
|
install_gemfile <<-G
|
|
source "#{file_uri_for(gem_repo1)}"
|
|
gem "nokogiri", :platforms => [:mingw, :mswin, :x64_mingw, :jruby]
|
|
gem "platform_specific"
|
|
G
|
|
|
|
bundle "config set force_ruby_platform true"
|
|
|
|
bundle "install"
|
|
|
|
expect(the_bundle).to include_gems "platform_specific 1.0 RUBY"
|
|
expect(the_bundle).to not_include_gems "nokogiri"
|
|
end
|
|
end
|
|
|
|
it "allows specifying only-ruby-platform on windows with gemspec dependency" do
|
|
build_lib("foo", "1.0", :path => bundled_app) do |s|
|
|
s.add_dependency "rack"
|
|
end
|
|
|
|
gemfile <<-G
|
|
source "#{file_uri_for(gem_repo1)}"
|
|
gemspec
|
|
G
|
|
bundle :lock
|
|
|
|
simulate_windows do
|
|
bundle "config set force_ruby_platform true"
|
|
bundle "install"
|
|
|
|
expect(the_bundle).to include_gems "rack 1.0"
|
|
end
|
|
end
|
|
|
|
it "recovers when the lockfile is missing a platform-specific gem" do
|
|
build_repo2 do
|
|
build_gem "requires_platform_specific" do |s|
|
|
s.add_dependency "platform_specific"
|
|
end
|
|
end
|
|
simulate_windows x64_mingw do
|
|
lockfile <<-L
|
|
GEM
|
|
remote: #{file_uri_for(gem_repo2)}/
|
|
specs:
|
|
platform_specific (1.0-x86-mingw32)
|
|
requires_platform_specific (1.0)
|
|
platform_specific
|
|
|
|
PLATFORMS
|
|
x64-mingw32
|
|
x86-mingw32
|
|
|
|
DEPENDENCIES
|
|
requires_platform_specific
|
|
L
|
|
|
|
install_gemfile <<-G, :verbose => true
|
|
source "#{file_uri_for(gem_repo2)}"
|
|
gem "requires_platform_specific"
|
|
G
|
|
|
|
expect(the_bundle).to include_gem "platform_specific 1.0 x64-mingw32"
|
|
end
|
|
end
|
|
end
|