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
 |