mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Merge RubyGems 3.2.25 and Bundler 2.2.25
This commit is contained in:
parent
679185d6c8
commit
41a2863780
224 changed files with 929 additions and 745 deletions
|
@ -653,10 +653,6 @@ EOF
|
|||
rescue ScriptError, StandardError => e
|
||||
msg = "There was an error while loading `#{path.basename}`: #{e.message}"
|
||||
|
||||
if e.is_a?(LoadError)
|
||||
msg += "\nDoes it try to require a relative path? That's been removed in Ruby 1.9"
|
||||
end
|
||||
|
||||
raise GemspecError, Dsl::DSLError.new(msg, path, e.backtrace, contents)
|
||||
end
|
||||
|
||||
|
|
|
@ -456,6 +456,12 @@ module Bundler
|
|||
"do in future versions. Instead please use `bundle config set cache_all true`, " \
|
||||
"and stop using this flag" if ARGV.include?("--all")
|
||||
|
||||
SharedHelpers.major_deprecation 2,
|
||||
"The `--path` flag is deprecated because its semantics are unclear. " \
|
||||
"Use `bundle config cache_path` to configure the path of your cache of gems, " \
|
||||
"and `bundle config path` to configure the path where your gems are installed, " \
|
||||
"and stop using this flag" if ARGV.include?("--path")
|
||||
|
||||
require_relative "cli/cache"
|
||||
Cache.new(options).run
|
||||
end
|
||||
|
|
|
@ -9,7 +9,7 @@ module Bundler
|
|||
end
|
||||
|
||||
def run
|
||||
Bundler.ui.level = "error" if options[:quiet]
|
||||
Bundler.ui.level = "warn" if options[:quiet]
|
||||
Bundler.settings.set_command_option_if_given :path, options[:path]
|
||||
Bundler.settings.set_command_option_if_given :cache_path, options["cache-path"]
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ module Bundler
|
|||
end
|
||||
|
||||
def run
|
||||
Bundler.ui.level = "error" if options[:quiet]
|
||||
Bundler.ui.level = "warn" if options[:quiet]
|
||||
Bundler.settings.validate!
|
||||
check!
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ module Bundler
|
|||
end
|
||||
|
||||
def run
|
||||
Bundler.ui.level = "error" if options[:quiet]
|
||||
Bundler.ui.level = "warn" if options[:quiet]
|
||||
|
||||
warn_if_root
|
||||
|
||||
|
@ -60,7 +60,7 @@ module Bundler
|
|||
installer = Installer.install(Bundler.root, definition, options)
|
||||
|
||||
Bundler.settings.temporary(:cache_all_platforms => options[:local] ? false : Bundler.settings[:cache_all_platforms]) do
|
||||
Bundler.load.cache if Bundler.app_cache.exist? && !options["no-cache"] && !Bundler.frozen_bundle?
|
||||
Bundler.load.cache(nil, options[:local]) if Bundler.app_cache.exist? && !options["no-cache"] && !Bundler.frozen_bundle?
|
||||
end
|
||||
|
||||
Bundler.ui.confirm "Bundle complete! #{dependencies_count_for(definition)}, #{gems_installed_for(definition)}."
|
||||
|
@ -83,22 +83,9 @@ module Bundler
|
|||
end
|
||||
|
||||
Bundler::CLI::Common.output_fund_metadata_summary
|
||||
rescue GemNotFound, VersionConflict => e
|
||||
if options[:local] && Bundler.app_cache.exist?
|
||||
Bundler.ui.warn "Some gems seem to be missing from your #{Bundler.settings.app_cache_path} directory."
|
||||
end
|
||||
|
||||
unless Bundler.definition.has_rubygems_remotes?
|
||||
Bundler.ui.warn <<-WARN, :wrap => true
|
||||
Your Gemfile has no gem server sources. If you need gems that are \
|
||||
not already on your machine, add a line like this to your Gemfile:
|
||||
source 'https://rubygems.org'
|
||||
WARN
|
||||
end
|
||||
raise e
|
||||
rescue Gem::InvalidSpecificationException => e
|
||||
rescue Gem::InvalidSpecificationException
|
||||
Bundler.ui.warn "You have one or more invalid gemspecs that need to be fixed."
|
||||
raise e
|
||||
raise
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -16,7 +16,13 @@ module Bundler
|
|||
specs = if @only_group.any? || @without_group.any?
|
||||
filtered_specs_by_groups
|
||||
else
|
||||
Bundler.load.specs
|
||||
begin
|
||||
Bundler.load.specs
|
||||
rescue GemNotFound => e
|
||||
Bundler.ui.error e.message
|
||||
Bundler.ui.warn "Install missing gems with `bundle install`."
|
||||
exit 1
|
||||
end
|
||||
end.reject {|s| s.name == "bundler" }.sort_by(&:name)
|
||||
|
||||
return Bundler.ui.info "No gems in the Gemfile" if specs.empty?
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require "shellwords"
|
||||
|
||||
module Bundler
|
||||
class CLI::Open
|
||||
attr_reader :options, :name
|
||||
|
@ -19,6 +17,7 @@ module Bundler
|
|||
else
|
||||
path = spec.full_gem_path
|
||||
Dir.chdir(path) do
|
||||
require "shellwords"
|
||||
command = Shellwords.split(editor) + [path]
|
||||
Bundler.with_original_env do
|
||||
system(*command)
|
||||
|
|
|
@ -9,7 +9,7 @@ module Bundler
|
|||
end
|
||||
|
||||
def run
|
||||
Bundler.ui.level = "error" if options[:quiet]
|
||||
Bundler.ui.level = "warn" if options[:quiet]
|
||||
|
||||
Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.feature_flag.plugins?
|
||||
|
||||
|
|
|
@ -133,7 +133,7 @@ module Bundler
|
|||
@unlock[:gems] ||= @dependencies.map(&:name)
|
||||
else
|
||||
eager_unlock = expand_dependencies(@unlock[:gems] || [], true)
|
||||
@unlock[:gems] = @locked_specs.for(eager_unlock, false, false, false).map(&:name)
|
||||
@unlock[:gems] = @locked_specs.for(eager_unlock, false, false).map(&:name)
|
||||
end
|
||||
|
||||
@dependency_changes = converge_dependencies
|
||||
|
@ -185,15 +185,7 @@ module Bundler
|
|||
#
|
||||
# @return [Bundler::SpecSet]
|
||||
def specs
|
||||
@specs ||= add_bundler_to(resolve.materialize(requested_dependencies))
|
||||
rescue GemNotFound => e # Handle yanked gem
|
||||
gem_name, gem_version = extract_gem_info(e)
|
||||
locked_gem = @locked_specs[gem_name].last
|
||||
raise if locked_gem.nil? || locked_gem.version.to_s != gem_version || !@remote
|
||||
raise GemNotFound, "Your bundle is locked to #{locked_gem} from #{locked_gem.source}, but that version can " \
|
||||
"no longer be found in that source. That means the author of #{locked_gem} has removed it. " \
|
||||
"You'll need to update your bundle to a version other than #{locked_gem} that hasn't been " \
|
||||
"removed in order to install."
|
||||
@specs ||= materialize(requested_dependencies)
|
||||
end
|
||||
|
||||
def new_specs
|
||||
|
@ -205,9 +197,7 @@ module Bundler
|
|||
end
|
||||
|
||||
def missing_specs
|
||||
missing = []
|
||||
resolve.materialize(requested_dependencies, missing)
|
||||
missing
|
||||
resolve.materialize(requested_dependencies).missing_specs
|
||||
end
|
||||
|
||||
def missing_specs?
|
||||
|
@ -241,7 +231,7 @@ module Bundler
|
|||
def specs_for(groups)
|
||||
groups = requested_groups if groups.empty?
|
||||
deps = dependencies_for(groups)
|
||||
add_bundler_to(resolve.materialize(expand_dependencies(deps)))
|
||||
materialize(expand_dependencies(deps))
|
||||
end
|
||||
|
||||
def dependencies_for(groups)
|
||||
|
@ -274,10 +264,6 @@ module Bundler
|
|||
end
|
||||
end
|
||||
|
||||
def has_rubygems_remotes?
|
||||
sources.rubygems_sources.any? {|s| s.remotes.any? }
|
||||
end
|
||||
|
||||
def spec_git_paths
|
||||
sources.git_sources.map {|s| File.realpath(s.path) if File.exist?(s.path) }.compact
|
||||
end
|
||||
|
@ -493,7 +479,23 @@ module Bundler
|
|||
|
||||
private
|
||||
|
||||
def add_bundler_to(specs)
|
||||
def materialize(dependencies)
|
||||
specs = resolve.materialize(dependencies)
|
||||
missing_specs = specs.missing_specs
|
||||
|
||||
if missing_specs.any?
|
||||
missing_specs.each do |s|
|
||||
locked_gem = @locked_specs[s.name].last
|
||||
next if locked_gem.nil? || locked_gem.version != s.version || !@remote
|
||||
raise GemNotFound, "Your bundle is locked to #{locked_gem} from #{locked_gem.source}, but that version can " \
|
||||
"no longer be found in that source. That means the author of #{locked_gem} has removed it. " \
|
||||
"You'll need to update your bundle to a version other than #{locked_gem} that hasn't been " \
|
||||
"removed in order to install."
|
||||
end
|
||||
|
||||
raise GemNotFound, "Could not find #{missing_specs.map(&:full_name).join(", ")} in any of the sources"
|
||||
end
|
||||
|
||||
unless specs["bundler"].any?
|
||||
bundler = sources.metadata_source.specs.search(Gem::Dependency.new("bundler", VERSION)).last
|
||||
specs["bundler"] = bundler
|
||||
|
@ -712,7 +714,7 @@ module Bundler
|
|||
@locked_specs.each do |s|
|
||||
# Replace the locked dependency's source with the equivalent source from the Gemfile
|
||||
dep = @dependencies.find {|d| s.satisfies?(d) }
|
||||
s.source = (dep && dep.source) || sources.get(s.source)
|
||||
s.source = (dep && dep.source) || sources.get(s.source) unless multisource_allowed?
|
||||
|
||||
# Don't add a spec to the list if its source is expired. For example,
|
||||
# if you change a Git gem to RubyGems.
|
||||
|
@ -730,7 +732,7 @@ module Bundler
|
|||
# if we won't need the source (according to the lockfile),
|
||||
# don't error if the path/git source isn't available
|
||||
next if @locked_specs.
|
||||
for(requested_dependencies, false, true, false).
|
||||
for(requested_dependencies, false, true).
|
||||
none? {|locked_spec| locked_spec.source == s.source }
|
||||
|
||||
raise
|
||||
|
@ -750,7 +752,7 @@ module Bundler
|
|||
|
||||
resolve = SpecSet.new(converged)
|
||||
@locked_specs_incomplete_for_platform = !resolve.for(expand_dependencies(requested_dependencies & deps), true, true)
|
||||
resolve = SpecSet.new(resolve.for(expand_dependencies(deps, true), false, false, false).reject{|s| @unlock[:gems].include?(s.name) })
|
||||
resolve = SpecSet.new(resolve.for(expand_dependencies(deps, true), false, false).reject{|s| @unlock[:gems].include?(s.name) })
|
||||
diff = nil
|
||||
|
||||
# Now, we unlock any sources that do not have anymore gems pinned to it
|
||||
|
@ -854,12 +856,6 @@ module Bundler
|
|||
current == proposed
|
||||
end
|
||||
|
||||
def extract_gem_info(error)
|
||||
# This method will extract the error message like "Could not find foo-1.2.3 in any of the sources"
|
||||
# to an array. The first element will be the gem name (e.g. foo), the second will be the version number.
|
||||
error.message.scan(/Could not find (\w+)-(\d+(?:\.\d+)+)/).flatten
|
||||
end
|
||||
|
||||
def compute_requires
|
||||
dependencies.reduce({}) do |requires, dep|
|
||||
next requires unless dep.should_include?
|
||||
|
|
|
@ -447,8 +447,21 @@ repo_name ||= user_name
|
|||
end
|
||||
|
||||
def check_rubygems_source_safety
|
||||
return unless @sources.aggregate_global_source?
|
||||
if @sources.implicit_global_source?
|
||||
implicit_global_source_warning
|
||||
elsif @sources.aggregate_global_source?
|
||||
multiple_global_source_warning
|
||||
end
|
||||
end
|
||||
|
||||
def implicit_global_source_warning
|
||||
Bundler::SharedHelpers.major_deprecation 2, "This Gemfile does not include an explicit global source. " \
|
||||
"Not using an explicit global source may result in a different lockfile being generated depending on " \
|
||||
"the gems you have installed locally before bundler is run." \
|
||||
"Instead, define a global source in your Gemfile like this: source \"https://rubygems.org\"."
|
||||
end
|
||||
|
||||
def multiple_global_source_warning
|
||||
if Bundler.feature_flag.bundler_3_mode?
|
||||
msg = "This Gemfile contains multiple primary sources. " \
|
||||
"Each source after the first must include a block to indicate which gems " \
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require "shellwords"
|
||||
|
||||
module Bundler
|
||||
class GemInstaller
|
||||
attr_reader :spec, :standalone, :worker, :force, :installer
|
||||
|
@ -31,34 +29,23 @@ module Bundler
|
|||
|
||||
def specific_failure_message(e)
|
||||
message = "#{e.class}: #{e.message}\n"
|
||||
message += " " + e.backtrace.join("\n ") + "\n\n" if Bundler.ui.debug?
|
||||
message += " " + e.backtrace.join("\n ") + "\n\n"
|
||||
message = message.lines.first + Bundler.ui.add_color(message.lines.drop(1).join, :clear)
|
||||
message + Bundler.ui.add_color(failure_message, :red)
|
||||
end
|
||||
|
||||
def failure_message
|
||||
return install_error_message if spec.source.options["git"]
|
||||
"#{install_error_message}\n#{gem_install_message}"
|
||||
install_error_message
|
||||
end
|
||||
|
||||
def install_error_message
|
||||
"An error occurred while installing #{spec.name} (#{spec.version}), and Bundler cannot continue."
|
||||
end
|
||||
|
||||
def gem_install_message
|
||||
source = spec.source
|
||||
return unless source.respond_to?(:remotes)
|
||||
|
||||
if source.remotes.size == 1
|
||||
"Make sure that `gem install #{spec.name} -v '#{spec.version}' --source '#{source.remotes.first}'` succeeds before bundling."
|
||||
else
|
||||
"Make sure that `gem install #{spec.name} -v '#{spec.version}'` succeeds before bundling."
|
||||
end
|
||||
end
|
||||
|
||||
def spec_settings
|
||||
# Fetch the build settings, if there are any
|
||||
if settings = Bundler.settings["build.#{spec.name}"]
|
||||
require "shellwords"
|
||||
Shellwords.shellsplit(settings)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -195,6 +195,7 @@ module Bundler
|
|||
platform = platform ? Gem::Platform.new(platform) : Gem::Platform::RUBY
|
||||
@current_spec = LazySpecification.new(name, version, platform)
|
||||
@current_spec.source = @current_source
|
||||
@current_source.add_dependency_names(name)
|
||||
|
||||
@specs[@current_spec.identifier] = @current_spec
|
||||
elsif spaces.size == 6
|
||||
|
|
|
@ -61,7 +61,10 @@ module Bundler
|
|||
|
||||
def build_extensions
|
||||
extension_cache_path = options[:bundler_extension_cache_path]
|
||||
return super unless extension_cache_path && extension_dir = spec.extension_dir
|
||||
unless extension_cache_path && extension_dir = spec.extension_dir
|
||||
require "shellwords" # compensate missing require in rubygems before version 3.2.25
|
||||
return super
|
||||
end
|
||||
|
||||
extension_dir = Pathname.new(extension_dir)
|
||||
build_complete = SharedHelpers.filesystem_access(extension_cache_path.join("gem.build_complete"), :read, &:file?)
|
||||
|
@ -71,6 +74,7 @@ module Bundler
|
|||
FileUtils.cp_r extension_cache_path, spec.extension_dir
|
||||
end
|
||||
else
|
||||
require "shellwords" # compensate missing require in rubygems before version 3.2.25
|
||||
super
|
||||
if extension_dir.directory? # not made for gems without extensions
|
||||
SharedHelpers.filesystem_access(extension_cache_path.parent, &:mkpath)
|
||||
|
|
|
@ -22,10 +22,6 @@ module Bundler
|
|||
|
||||
# Activate the specs
|
||||
load_paths = specs.map do |spec|
|
||||
unless spec.loaded_from
|
||||
raise GemNotFound, "#{spec.full_name} is missing. Run `bundle install` to get it."
|
||||
end
|
||||
|
||||
check_for_activated_spec!(spec)
|
||||
|
||||
Bundler.rubygems.mark_loaded(spec)
|
||||
|
@ -104,7 +100,7 @@ module Bundler
|
|||
|
||||
alias_method :gems, :specs
|
||||
|
||||
def cache(custom_path = nil)
|
||||
def cache(custom_path = nil, local = false)
|
||||
cache_path = Bundler.app_cache(custom_path)
|
||||
SharedHelpers.filesystem_access(cache_path) do |p|
|
||||
FileUtils.mkdir_p(p)
|
||||
|
@ -112,7 +108,20 @@ module Bundler
|
|||
|
||||
Bundler.ui.info "Updating files in #{Bundler.settings.app_cache_path}"
|
||||
|
||||
specs_to_cache = Bundler.settings[:cache_all_platforms] ? @definition.resolve.materialized_for_all_platforms : specs
|
||||
specs_to_cache = if Bundler.settings[:cache_all_platforms]
|
||||
@definition.resolve.materialized_for_all_platforms
|
||||
else
|
||||
begin
|
||||
specs
|
||||
rescue GemNotFound
|
||||
if local
|
||||
Bundler.ui.warn "Some gems seem to be missing from your #{Bundler.settings.app_cache_path} directory."
|
||||
end
|
||||
|
||||
raise
|
||||
end
|
||||
end
|
||||
|
||||
specs_to_cache.each do |spec|
|
||||
next if spec.name == "bundler"
|
||||
next if spec.source.is_a?(Source::Gemspec)
|
||||
|
|
|
@ -428,6 +428,8 @@ module Bundler
|
|||
def global_config_file
|
||||
if ENV["BUNDLE_CONFIG"] && !ENV["BUNDLE_CONFIG"].empty?
|
||||
Pathname.new(ENV["BUNDLE_CONFIG"])
|
||||
elsif ENV["BUNDLE_USER_CONFIG"] && !ENV["BUNDLE_USER_CONFIG"].empty?
|
||||
Pathname.new(ENV["BUNDLE_USER_CONFIG"])
|
||||
elsif Bundler.rubygems.user_home && !Bundler.rubygems.user_home.empty?
|
||||
Pathname.new(Bundler.rubygems.user_home).join(".bundle/config")
|
||||
end
|
||||
|
|
|
@ -9,10 +9,10 @@ if Bundler::SharedHelpers.in_bundle?
|
|||
begin
|
||||
Bundler.ui.silence { Bundler.setup }
|
||||
rescue Bundler::BundlerError => e
|
||||
Bundler.ui.warn "\e[31m#{e.message}\e[0m"
|
||||
Bundler.ui.error e.message
|
||||
Bundler.ui.warn e.backtrace.join("\n") if ENV["DEBUG"]
|
||||
if e.is_a?(Bundler::GemNotFound)
|
||||
Bundler.ui.warn "\e[33mRun `bundle install` to install missing gems.\e[0m"
|
||||
Bundler.ui.warn "Run `bundle install` to install missing gems."
|
||||
end
|
||||
exit e.status_code
|
||||
end
|
||||
|
|
|
@ -152,13 +152,6 @@ module Bundler
|
|||
Bundler.ui.warn message
|
||||
end
|
||||
|
||||
def trap(signal, override = false, &block)
|
||||
prior = Signal.trap(signal) do
|
||||
block.call
|
||||
prior.call unless override
|
||||
end
|
||||
end
|
||||
|
||||
def ensure_same_dependencies(spec, old_deps, new_deps)
|
||||
new_deps = new_deps.reject {|d| d.type == :development }
|
||||
old_deps = old_deps.reject {|d| d.type == :development }
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require "shellwords"
|
||||
|
||||
module Bundler
|
||||
class Source
|
||||
class Git
|
||||
|
@ -224,6 +222,7 @@ module Bundler
|
|||
end
|
||||
|
||||
def check_allowed(command)
|
||||
require "shellwords"
|
||||
command_with_no_credentials = URICredentialsFilter.credential_filtered_string("git #{command.shelljoin}", uri)
|
||||
raise GitNotAllowedError.new(command_with_no_credentials) unless allow?
|
||||
command_with_no_credentials
|
||||
|
|
|
@ -71,6 +71,10 @@ module Bundler
|
|||
@remotes.size > 1
|
||||
end
|
||||
|
||||
def no_remotes?
|
||||
@remotes.size == 0
|
||||
end
|
||||
|
||||
def can_lock?(spec)
|
||||
return super unless multiple_remotes?
|
||||
include?(spec.source)
|
||||
|
|
|
@ -37,6 +37,10 @@ module Bundler
|
|||
global_rubygems_source.multiple_remotes?
|
||||
end
|
||||
|
||||
def implicit_global_source?
|
||||
global_rubygems_source.no_remotes?
|
||||
end
|
||||
|
||||
def add_path_source(options = {})
|
||||
if options["gemspec"]
|
||||
add_source_to_list Source::Gemspec.new(options), path_sources
|
||||
|
@ -117,7 +121,8 @@ module Bundler
|
|||
def replace_sources!(replacement_sources)
|
||||
return false if replacement_sources.empty?
|
||||
|
||||
@path_sources, @git_sources, @plugin_sources = map_sources(replacement_sources)
|
||||
@rubygems_sources, @path_sources, @git_sources, @plugin_sources = map_sources(replacement_sources)
|
||||
@global_rubygems_source = global_replacement_source(replacement_sources)
|
||||
|
||||
different_sources?(lock_sources, replacement_sources)
|
||||
end
|
||||
|
@ -152,13 +157,21 @@ module Bundler
|
|||
end
|
||||
|
||||
def map_sources(replacement_sources)
|
||||
[path_sources, git_sources, plugin_sources].map do |sources|
|
||||
[@rubygems_sources, @path_sources, @git_sources, @plugin_sources].map do |sources|
|
||||
sources.map do |source|
|
||||
replacement_sources.find {|s| s == source } || source
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def global_replacement_source(replacement_sources)
|
||||
replacement_source = replacement_sources.find {|s| s == global_rubygems_source }
|
||||
return global_rubygems_source unless replacement_source
|
||||
|
||||
replacement_source.local!
|
||||
replacement_source
|
||||
end
|
||||
|
||||
def different_sources?(lock_sources, replacement_sources)
|
||||
!equal_sources?(lock_sources, replacement_sources) && !equivalent_sources?(lock_sources, replacement_sources)
|
||||
end
|
||||
|
@ -202,7 +215,7 @@ module Bundler
|
|||
end
|
||||
|
||||
def equal_source?(source, other_source)
|
||||
return source.include?(other_source) if source.is_a?(Source::Rubygems) && other_source.is_a?(Source::Rubygems) && !merged_gem_lockfile_sections?
|
||||
return source.include?(other_source) if source.is_a?(Source::Rubygems) && other_source.is_a?(Source::Rubygems)
|
||||
|
||||
source == other_source
|
||||
end
|
||||
|
|
|
@ -11,7 +11,7 @@ module Bundler
|
|||
@specs = specs
|
||||
end
|
||||
|
||||
def for(dependencies, check = false, match_current_platform = false, raise_on_missing = true)
|
||||
def for(dependencies, check = false, match_current_platform = false)
|
||||
handled = []
|
||||
deps = dependencies.dup
|
||||
specs = []
|
||||
|
@ -33,11 +33,6 @@ module Bundler
|
|||
end
|
||||
elsif check
|
||||
return false
|
||||
elsif raise_on_missing
|
||||
others = lookup[dep.name] if match_current_platform
|
||||
message = "Unable to find a spec satisfying #{dep} in the set. Perhaps the lockfile is corrupted?"
|
||||
message += " Found #{others.join(", ")} that did not match the current platform." if others && !others.empty?
|
||||
raise GemNotFound, message
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -71,52 +66,35 @@ module Bundler
|
|||
lookup.dup
|
||||
end
|
||||
|
||||
def materialize(deps, missing_specs = nil)
|
||||
materialized = self.for(deps, false, true, !missing_specs)
|
||||
|
||||
materialized.group_by(&:source).each do |source, specs|
|
||||
next unless specs.any?{|s| s.is_a?(LazySpecification) }
|
||||
|
||||
source.local!
|
||||
names = -> { specs.map(&:name).uniq }
|
||||
source.double_check_for(names)
|
||||
end
|
||||
def materialize(deps)
|
||||
materialized = self.for(deps, false, true)
|
||||
|
||||
materialized.map! do |s|
|
||||
next s unless s.is_a?(LazySpecification)
|
||||
spec = s.__materialize__
|
||||
unless spec
|
||||
unless missing_specs
|
||||
raise GemNotFound, "Could not find #{s.full_name} in any of the sources"
|
||||
end
|
||||
missing_specs << s
|
||||
end
|
||||
spec
|
||||
s.source.local!
|
||||
s.__materialize__ || s
|
||||
end
|
||||
SpecSet.new(missing_specs ? materialized.compact : materialized)
|
||||
SpecSet.new(materialized)
|
||||
end
|
||||
|
||||
# Materialize for all the specs in the spec set, regardless of what platform they're for
|
||||
# This is in contrast to how for does platform filtering (and specifically different from how `materialize` calls `for` only for the current platform)
|
||||
# @return [Array<Gem::Specification>]
|
||||
def materialized_for_all_platforms
|
||||
@specs.group_by(&:source).each do |source, specs|
|
||||
next unless specs.any?{|s| s.is_a?(LazySpecification) }
|
||||
|
||||
source.local!
|
||||
source.remote!
|
||||
names = -> { specs.map(&:name).uniq }
|
||||
source.double_check_for(names)
|
||||
end
|
||||
|
||||
@specs.map do |s|
|
||||
next s unless s.is_a?(LazySpecification)
|
||||
s.source.local!
|
||||
s.source.remote!
|
||||
spec = s.__materialize__
|
||||
raise GemNotFound, "Could not find #{s.full_name} in any of the sources" unless spec
|
||||
spec
|
||||
end
|
||||
end
|
||||
|
||||
def missing_specs
|
||||
@specs.select {|s| s.is_a?(LazySpecification) }
|
||||
end
|
||||
|
||||
def merge(set)
|
||||
arr = sorted.dup
|
||||
set.each do |set_spec|
|
||||
|
|
|
@ -60,16 +60,16 @@ m = Module.new do
|
|||
Regexp.last_match(1)
|
||||
end
|
||||
|
||||
def bundler_version
|
||||
@bundler_version ||=
|
||||
def bundler_requirement
|
||||
@bundler_requirement ||=
|
||||
env_var_version || cli_arg_version ||
|
||||
lockfile_version
|
||||
bundler_requirement_for(lockfile_version)
|
||||
end
|
||||
|
||||
def bundler_requirement
|
||||
return "#{Gem::Requirement.default}.a" unless bundler_version
|
||||
def bundler_requirement_for(version)
|
||||
return "#{Gem::Requirement.default}.a" unless version
|
||||
|
||||
bundler_gem_version = Gem::Version.new(bundler_version)
|
||||
bundler_gem_version = Gem::Version.new(version)
|
||||
|
||||
requirement = bundler_gem_version.approximate_recommendation
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# frozen_string_literal: false
|
||||
|
||||
module Bundler
|
||||
VERSION = "2.2.24".freeze
|
||||
VERSION = "2.2.25".freeze
|
||||
|
||||
def self.bundler_major_version
|
||||
@bundler_major_version ||= VERSION.split(".").first.to_i
|
||||
|
|
|
@ -26,7 +26,7 @@ module Bundler
|
|||
@func = func
|
||||
@size = size
|
||||
@threads = nil
|
||||
SharedHelpers.trap("INT") { abort_threads }
|
||||
@previous_interrupt_handler = nil
|
||||
end
|
||||
|
||||
# Enqueue a request to be executed in the worker pool
|
||||
|
@ -68,13 +68,16 @@ module Bundler
|
|||
# so as worker threads after retrieving it, shut themselves down
|
||||
def stop_threads
|
||||
return unless @threads
|
||||
|
||||
@threads.each { @request_queue.enq POISON }
|
||||
@threads.each(&:join)
|
||||
|
||||
remove_interrupt_handler
|
||||
|
||||
@threads = nil
|
||||
end
|
||||
|
||||
def abort_threads
|
||||
return unless @threads
|
||||
Bundler.ui.debug("\n#{caller.join("\n")}")
|
||||
@threads.each(&:exit)
|
||||
exit 1
|
||||
|
@ -94,11 +97,23 @@ module Bundler
|
|||
end
|
||||
end.compact
|
||||
|
||||
add_interrupt_handler unless @threads.empty?
|
||||
|
||||
return if creation_errors.empty?
|
||||
|
||||
message = "Failed to create threads for the #{name} worker: #{creation_errors.map(&:to_s).uniq.join(", ")}"
|
||||
raise ThreadCreationError, message if @threads.empty?
|
||||
Bundler.ui.info message
|
||||
end
|
||||
|
||||
def add_interrupt_handler
|
||||
@previous_interrupt_handler = trap("INT") { abort_threads }
|
||||
end
|
||||
|
||||
def remove_interrupt_handler
|
||||
return unless @previous_interrupt_handler
|
||||
|
||||
trap "INT", @previous_interrupt_handler
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
require 'rbconfig'
|
||||
|
||||
module Gem
|
||||
VERSION = "3.2.24".freeze
|
||||
VERSION = "3.2.25".freeze
|
||||
end
|
||||
|
||||
# Must be first since it unloads the prelude from 1.9.2
|
||||
|
@ -628,12 +628,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|||
rescue ::LoadError
|
||||
# If we can't load psych, that's fine, go on.
|
||||
else
|
||||
# If 'yaml' has already been required, then we have to
|
||||
# be sure to switch it over to the newly loaded psych.
|
||||
if defined?(YAML::ENGINE) && YAML::ENGINE.yamler != "psych"
|
||||
YAML::ENGINE.yamler = "psych"
|
||||
end
|
||||
|
||||
require 'rubygems/psych_additions'
|
||||
require 'rubygems/psych_tree'
|
||||
end
|
||||
|
@ -641,10 +635,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|||
require 'yaml'
|
||||
require 'rubygems/safe_yaml'
|
||||
|
||||
# Now that we're sure some kind of yaml library is loaded, pull
|
||||
# in our hack to deal with Syck's DefaultKey ugliness.
|
||||
require 'rubygems/syck_hack'
|
||||
|
||||
@yaml_loaded = true
|
||||
end
|
||||
|
||||
|
|
|
@ -320,7 +320,8 @@ if you believe they were disclosed to a third party.
|
|||
config = load_file(credentials_path).merge(host => api_key)
|
||||
|
||||
dirname = File.dirname credentials_path
|
||||
FileUtils.mkdir_p(dirname) unless File.exist? dirname
|
||||
require 'fileutils'
|
||||
FileUtils.mkdir_p(dirname)
|
||||
|
||||
Gem.load_yaml
|
||||
|
||||
|
@ -457,9 +458,8 @@ if you believe they were disclosed to a third party.
|
|||
|
||||
# Writes out this config file, replacing its source.
|
||||
def write
|
||||
unless File.exist?(File.dirname(config_file_name))
|
||||
FileUtils.mkdir_p File.dirname(config_file_name)
|
||||
end
|
||||
require 'fileutils'
|
||||
FileUtils.mkdir_p File.dirname(config_file_name)
|
||||
|
||||
File.open config_file_name, 'w' do |io|
|
||||
io.write to_yaml
|
||||
|
|
|
@ -57,6 +57,7 @@ class Gem::Ext::Builder
|
|||
p(command)
|
||||
end
|
||||
results << "current directory: #{dir}"
|
||||
require "shellwords"
|
||||
results << command.shelljoin
|
||||
|
||||
require "open3"
|
||||
|
|
|
@ -5,8 +5,6 @@
|
|||
# See LICENSE.txt for permissions.
|
||||
#++
|
||||
|
||||
require 'shellwords'
|
||||
|
||||
class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
||||
def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_dir=Dir.pwd)
|
||||
require 'fileutils'
|
||||
|
@ -40,6 +38,7 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|||
begin
|
||||
# workaround for https://github.com/oracle/truffleruby/issues/2115
|
||||
siteconf_path = RUBY_ENGINE == "truffleruby" ? siteconf.path.dup : siteconf.path
|
||||
require "shellwords"
|
||||
cmd = Gem.ruby.shellsplit << "-I" << File.expand_path("../../..", __FILE__) <<
|
||||
"-r" << get_relative_path(siteconf_path, extension_dir) << File.basename(extension)
|
||||
cmd.push(*args)
|
||||
|
|
|
@ -5,8 +5,6 @@
|
|||
# See LICENSE.txt for permissions.
|
||||
#++
|
||||
|
||||
require "shellwords"
|
||||
|
||||
class Gem::Ext::RakeBuilder < Gem::Ext::Builder
|
||||
def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_dir=Dir.pwd)
|
||||
if File.basename(extension) =~ /mkrf_conf/i
|
||||
|
@ -16,6 +14,7 @@ class Gem::Ext::RakeBuilder < Gem::Ext::Builder
|
|||
rake = ENV['rake']
|
||||
|
||||
if rake
|
||||
require "shellwords"
|
||||
rake = rake.shellsplit
|
||||
else
|
||||
begin
|
||||
|
|
|
@ -6,7 +6,6 @@ require 'rubygems/s3_uri_signer'
|
|||
require 'rubygems/uri_formatter'
|
||||
require 'rubygems/uri_parsing'
|
||||
require 'rubygems/user_interaction'
|
||||
require 'resolv'
|
||||
|
||||
##
|
||||
# RemoteFetcher handles the details of fetching gems and gem information from
|
||||
|
|
|
@ -194,24 +194,19 @@ class Gem::Requirement
|
|||
end
|
||||
|
||||
def marshal_dump # :nodoc:
|
||||
fix_syck_default_key_in_requirements
|
||||
|
||||
[@requirements]
|
||||
end
|
||||
|
||||
def marshal_load(array) # :nodoc:
|
||||
@requirements = array[0]
|
||||
|
||||
fix_syck_default_key_in_requirements
|
||||
raise TypeError, "wrong @requirements" unless Array === @requirements
|
||||
end
|
||||
|
||||
def yaml_initialize(tag, vals) # :nodoc:
|
||||
vals.each do |ivar, val|
|
||||
instance_variable_set "@#{ivar}", val
|
||||
end
|
||||
|
||||
Gem.load_yaml
|
||||
fix_syck_default_key_in_requirements
|
||||
end
|
||||
|
||||
def init_with(coder) # :nodoc:
|
||||
|
@ -246,8 +241,7 @@ class Gem::Requirement
|
|||
def satisfied_by?(version)
|
||||
raise ArgumentError, "Need a Gem::Version: #{version.inspect}" unless
|
||||
Gem::Version === version
|
||||
# #28965: syck has a bug with unquoted '=' YAML.loading as YAML::DefaultKey
|
||||
requirements.all? {|op, rv| (OPS[op] || OPS["="]).call version, rv }
|
||||
requirements.all? {|op, rv| OPS[op].call version, rv }
|
||||
end
|
||||
|
||||
alias :=== :satisfied_by?
|
||||
|
@ -289,19 +283,6 @@ class Gem::Requirement
|
|||
def _tilde_requirements
|
||||
@_tilde_requirements ||= _sorted_requirements.select {|r| r.first == "~>" }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def fix_syck_default_key_in_requirements # :nodoc:
|
||||
Gem.load_yaml
|
||||
|
||||
# Fixup the Syck DefaultKey bug
|
||||
@requirements.each do |r|
|
||||
if r[0].kind_of? Gem::SyckDefaultKey
|
||||
r[0] = "="
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class Gem::Version
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
require 'base64'
|
||||
require 'digest'
|
||||
require 'rubygems/openssl'
|
||||
|
||||
|
|
|
@ -17,8 +17,6 @@ module Gem
|
|||
Gem::Specification
|
||||
Gem::Version
|
||||
Gem::Version::Requirement
|
||||
YAML::Syck::DefaultKey
|
||||
Syck::DefaultKey
|
||||
].freeze
|
||||
|
||||
PERMITTED_SYMBOLS = %w[
|
||||
|
|
|
@ -1690,12 +1690,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|||
when String then
|
||||
if DateTimeFormat =~ date
|
||||
Time.utc($1.to_i, $2.to_i, $3.to_i)
|
||||
|
||||
# Workaround for where the date format output from psych isn't
|
||||
# parsed as a Time object by syck and thus comes through as a
|
||||
# string.
|
||||
elsif /\A(\d{4})-(\d{2})-(\d{2}) \d{2}:\d{2}:\d{2}\.\d+?Z\z/ =~ date
|
||||
Time.utc($1.to_i, $2.to_i, $3.to_i)
|
||||
else
|
||||
raise(Gem::InvalidSpecificationException,
|
||||
"invalid date format in specification: #{date.inspect}")
|
||||
|
|
|
@ -1,77 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
# :stopdoc:
|
||||
|
||||
# Hack to handle syck's DefaultKey bug
|
||||
#
|
||||
# This file is always loaded AFTER either syck or psych are already
|
||||
# loaded. It then looks at what constants are available and creates
|
||||
# a consistent view on all rubys.
|
||||
#
|
||||
# All this is so that there is always a YAML::Syck::DefaultKey
|
||||
# class no matter if the full yaml library has loaded or not.
|
||||
#
|
||||
|
||||
module YAML # :nodoc:
|
||||
# In newer 1.9.2, there is a Syck toplevel constant instead of it
|
||||
# being underneath YAML. If so, reference it back under YAML as
|
||||
# well.
|
||||
if defined? ::Syck
|
||||
# for tests that change YAML::ENGINE
|
||||
# 1.8 does not support the second argument to const_defined?
|
||||
remove_const :Syck rescue nil
|
||||
|
||||
Syck = ::Syck
|
||||
|
||||
# JRuby's "Syck" is called "Yecht"
|
||||
elsif defined? YAML::Yecht
|
||||
Syck = YAML::Yecht
|
||||
|
||||
# Otherwise, if there is no YAML::Syck, then we've got just psych
|
||||
# loaded, so lets define a stub for DefaultKey.
|
||||
elsif !defined? YAML::Syck
|
||||
module Syck
|
||||
class DefaultKey # :nodoc:
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Now that we've got something that is always here, define #to_s
|
||||
# so when code tries to use this, it at least just shows up like it
|
||||
# should.
|
||||
module Syck
|
||||
class DefaultKey
|
||||
remove_method :to_s rescue nil
|
||||
|
||||
def to_s
|
||||
'='
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
SyntaxError = Error unless defined? SyntaxError
|
||||
end
|
||||
|
||||
# Sometime in the 1.9 dev cycle, the Syck constant was moved from under YAML
|
||||
# to be a toplevel constant. So gemspecs created under these versions of Syck
|
||||
# will have references to Syck::DefaultKey.
|
||||
#
|
||||
# So we need to be sure that we reference Syck at the toplevel too so that
|
||||
# we can always load these kind of gemspecs.
|
||||
#
|
||||
if !defined?(Syck)
|
||||
Syck = YAML::Syck
|
||||
end
|
||||
|
||||
# Now that we've got Syck setup in all the right places, store
|
||||
# a reference to the DefaultKey class inside Gem. We do this so that
|
||||
# if later on YAML, etc are redefined, we've still got a consistent
|
||||
# place to find the DefaultKey class for comparison.
|
||||
|
||||
module Gem
|
||||
# for tests that change YAML::ENGINE
|
||||
remove_const :SyckDefaultKey if const_defined? :SyckDefaultKey
|
||||
|
||||
SyckDefaultKey = YAML::Syck::DefaultKey
|
||||
end
|
||||
|
||||
# :startdoc:
|
|
@ -129,18 +129,18 @@ RSpec.describe "bundle executable" do
|
|||
|
||||
context "with --verbose" do
|
||||
it "prints the running command" do
|
||||
gemfile ""
|
||||
gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
bundle "info bundler", :verbose => true
|
||||
expect(out).to start_with("Running `bundle info bundler --verbose` with bundler #{Bundler::VERSION}")
|
||||
end
|
||||
|
||||
it "doesn't print defaults" do
|
||||
install_gemfile "", :verbose => true
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\"", :verbose => true
|
||||
expect(out).to start_with("Running `bundle install --verbose` with bundler #{Bundler::VERSION}")
|
||||
end
|
||||
|
||||
it "doesn't print defaults" do
|
||||
install_gemfile "", :verbose => true
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\"", :verbose => true
|
||||
expect(out).to start_with("Running `bundle install --verbose` with bundler #{Bundler::VERSION}")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -241,4 +241,21 @@ RSpec.describe Bundler::Dsl do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#check_primary_source_safety" do
|
||||
context "when a global source is not defined implicitly" do
|
||||
it "will raise a major deprecation warning" do
|
||||
not_a_global_source = double("not-a-global-source", :no_remotes? => true)
|
||||
allow(Bundler::Source::Rubygems).to receive(:new).and_return(not_a_global_source)
|
||||
|
||||
warning = "This Gemfile does not include an explicit global source. " \
|
||||
"Not using an explicit global source may result in a different lockfile being generated depending on " \
|
||||
"the gems you have installed locally before bundler is run." \
|
||||
"Instead, define a global source in your Gemfile like this: source \"https://rubygems.org\"."
|
||||
expect(Bundler::SharedHelpers).to receive(:major_deprecation).with(2, warning)
|
||||
|
||||
subject.check_primary_source_safety
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -73,7 +73,7 @@ RSpec.describe Bundler::Env do
|
|||
|
||||
context "when there is a Gemfile and a lockfile and print_gemfile is true" do
|
||||
before do
|
||||
gemfile "gem 'rack', '1.0.0'"
|
||||
gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem 'rack', '1.0.0'"
|
||||
|
||||
lockfile <<-L
|
||||
GEM
|
||||
|
@ -137,7 +137,7 @@ RSpec.describe Bundler::Env do
|
|||
end
|
||||
|
||||
before do
|
||||
gemfile("gemspec")
|
||||
gemfile("source \"#{file_uri_for(gem_repo1)}\"; gemspec")
|
||||
|
||||
File.open(bundled_app.join("foo.gemspec"), "wb") do |f|
|
||||
f.write(gemspec)
|
||||
|
|
|
@ -5,7 +5,7 @@ RSpec.describe Bundler::Plugin::Index do
|
|||
|
||||
before do
|
||||
allow(Bundler::SharedHelpers).to receive(:find_gemfile).and_return(bundled_app_gemfile)
|
||||
gemfile ""
|
||||
gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
path = lib_path(plugin_name)
|
||||
index.register_plugin("new-plugin", path.to_s, [path.join("lib").to_s], commands, sources, hooks)
|
||||
end
|
||||
|
|
|
@ -30,4 +30,18 @@ RSpec.describe Bundler::Source::Rubygems do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#no_remotes?" do
|
||||
context "when no remote provided" do
|
||||
it "returns a truthy value" do
|
||||
expect(described_class.new("remotes" => []).no_remotes?).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
context "when a remote provided" do
|
||||
it "returns a falsey value" do
|
||||
expect(described_class.new("remotes" => ["https://rubygems.org"]).no_remotes?).to be_falsey
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -441,4 +441,19 @@ RSpec.describe Bundler::SourceList do
|
|||
source_list.remote!
|
||||
end
|
||||
end
|
||||
|
||||
describe "implicit_global_source?" do
|
||||
context "when a global rubygem source provided" do
|
||||
it "returns a falsy value" do
|
||||
source_list.add_global_rubygems_remote("https://rubygems.org")
|
||||
|
||||
expect(source_list.implicit_global_source?).to be_falsey
|
||||
end
|
||||
end
|
||||
context "when no global rubygem source provided" do
|
||||
it "returns a truthy value" do
|
||||
expect(source_list.implicit_global_source?).to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -19,4 +19,51 @@ RSpec.describe Bundler::Worker do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "handling interrupts" do
|
||||
let(:status) do
|
||||
pid = Process.fork do
|
||||
$stderr.reopen File.new("/dev/null", "w")
|
||||
Signal.trap "INT", previous_interrupt_handler
|
||||
subject.enq "a"
|
||||
subject.stop unless interrupt_before_stopping
|
||||
Process.kill "INT", Process.pid
|
||||
end
|
||||
|
||||
Process.wait2(pid).last
|
||||
end
|
||||
|
||||
before do
|
||||
skip "requires Process.fork" unless Process.respond_to?(:fork)
|
||||
end
|
||||
|
||||
context "when interrupted before stopping" do
|
||||
let(:interrupt_before_stopping) { true }
|
||||
let(:previous_interrupt_handler) { ->(*) { exit 0 } }
|
||||
|
||||
it "aborts" do
|
||||
expect(status.exitstatus).to eq(1)
|
||||
end
|
||||
end
|
||||
|
||||
context "when interrupted after stopping" do
|
||||
let(:interrupt_before_stopping) { false }
|
||||
|
||||
context "when the previous interrupt handler was the default" do
|
||||
let(:previous_interrupt_handler) { "DEFAULT" }
|
||||
|
||||
it "uses the default interrupt handler" do
|
||||
expect(status).to be_signaled
|
||||
end
|
||||
end
|
||||
|
||||
context "when the previous interrupt handler was customized" do
|
||||
let(:previous_interrupt_handler) { ->(*) { exit 42 } }
|
||||
|
||||
it "restores the custom interrupt handler after stopping" do
|
||||
expect(status.exitstatus).to eq(42)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
8
spec/bundler/cache/gems_spec.rb
vendored
8
spec/bundler/cache/gems_spec.rb
vendored
|
@ -4,6 +4,7 @@ RSpec.describe "bundle cache" do
|
|||
shared_examples_for "when there are only gemsources" do
|
||||
before :each do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'rack'
|
||||
G
|
||||
|
||||
|
@ -39,6 +40,7 @@ RSpec.describe "bundle cache" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
G
|
||||
|
||||
|
@ -49,6 +51,7 @@ RSpec.describe "bundle cache" do
|
|||
system_gems "rack-1.0.0", :path => default_bundle_path
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
G
|
||||
|
||||
|
@ -64,6 +67,7 @@ RSpec.describe "bundle cache" do
|
|||
cache_gems "rack-1.0.0"
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
G
|
||||
|
||||
|
@ -100,7 +104,7 @@ RSpec.describe "bundle cache" do
|
|||
|
||||
it "uses builtin gems when installing to system gems" do
|
||||
bundle "config set path.system true"
|
||||
install_gemfile %(gem 'builtin_gem', '1.0.2')
|
||||
install_gemfile %(source "#{file_uri_for(gem_repo1)}"; gem 'builtin_gem', '1.0.2')
|
||||
expect(the_bundle).to include_gems("builtin_gem 1.0.2")
|
||||
end
|
||||
|
||||
|
@ -134,6 +138,7 @@ RSpec.describe "bundle cache" do
|
|||
bundle "config set path.system true"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'builtin_gem', '1.0.2'
|
||||
G
|
||||
|
||||
|
@ -302,6 +307,7 @@ RSpec.describe "bundle cache" do
|
|||
:path => bundled_app("vendor/cache")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo-bundler"
|
||||
G
|
||||
|
||||
|
|
9
spec/bundler/cache/git_spec.rb
vendored
9
spec/bundler/cache/git_spec.rb
vendored
|
@ -18,6 +18,7 @@ RSpec.describe "bundle cache with git" do
|
|||
ref = git.ref_for("master", 11)
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -36,6 +37,7 @@ RSpec.describe "bundle cache with git" do
|
|||
ref = git.ref_for("master", 11)
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -55,6 +57,7 @@ RSpec.describe "bundle cache with git" do
|
|||
build_git "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -72,6 +75,7 @@ RSpec.describe "bundle cache with git" do
|
|||
old_ref = git.ref_for("master", 11)
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -102,6 +106,7 @@ RSpec.describe "bundle cache with git" do
|
|||
old_ref = git.ref_for("master", 11)
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -130,6 +135,7 @@ RSpec.describe "bundle cache with git" do
|
|||
ref = git.ref_for("master", 11)
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => '#{lib_path("foo-invalid")}', :branch => :master
|
||||
G
|
||||
|
||||
|
@ -160,6 +166,7 @@ RSpec.describe "bundle cache with git" do
|
|||
sys_exec "git commit -m \"submodulator\"", :dir => lib_path("has_submodule-1.0")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("has_submodule-1.0")}", :submodules => true do
|
||||
gem "has_submodule"
|
||||
end
|
||||
|
@ -183,6 +190,7 @@ RSpec.describe "bundle cache with git" do
|
|||
update_git("foo") {|s| s.write "foo.gemspec", spec_lines.join("\n") }
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
bundle "config set cache_all true"
|
||||
|
@ -197,6 +205,7 @@ RSpec.describe "bundle cache with git" do
|
|||
build_git "foo"
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
bundle "config set cache_all true"
|
||||
|
|
12
spec/bundler/cache/path_spec.rb
vendored
12
spec/bundler/cache/path_spec.rb
vendored
|
@ -5,6 +5,7 @@ RSpec.describe "bundle cache with path" do
|
|||
build_lib "foo", :path => bundled_app("lib/foo")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => '#{bundled_app("lib/foo")}'
|
||||
G
|
||||
|
||||
|
@ -18,6 +19,7 @@ RSpec.describe "bundle cache with path" do
|
|||
build_lib "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -36,6 +38,7 @@ RSpec.describe "bundle cache with path" do
|
|||
build_lib libname, :path => libpath
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "#{libname}", :path => '#{libpath}'
|
||||
G
|
||||
|
||||
|
@ -51,6 +54,7 @@ RSpec.describe "bundle cache with path" do
|
|||
build_lib "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -73,6 +77,7 @@ RSpec.describe "bundle cache with path" do
|
|||
build_lib "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -84,6 +89,7 @@ RSpec.describe "bundle cache with path" do
|
|||
build_lib "bar"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "bar", :path => '#{lib_path("bar-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -95,6 +101,7 @@ RSpec.describe "bundle cache with path" do
|
|||
build_lib "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -107,6 +114,7 @@ RSpec.describe "bundle cache with path" do
|
|||
build_lib "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -119,6 +127,7 @@ RSpec.describe "bundle cache with path" do
|
|||
build_lib "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -127,6 +136,7 @@ RSpec.describe "bundle cache with path" do
|
|||
build_lib "bar"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => '#{lib_path("foo-1.0")}'
|
||||
gem "bar", :path => '#{lib_path("bar-1.0")}'
|
||||
G
|
||||
|
@ -139,6 +149,7 @@ RSpec.describe "bundle cache with path" do
|
|||
build_lib "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -147,6 +158,7 @@ RSpec.describe "bundle cache with path" do
|
|||
build_lib "baz"
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => '#{lib_path("foo-1.0")}'
|
||||
gem "baz", :path => '#{lib_path("baz-1.0")}'
|
||||
G
|
||||
|
|
|
@ -140,8 +140,15 @@ RSpec.describe "bundle binstubs <gem>" do
|
|||
it "runs the correct version of bundler" do
|
||||
sys_exec "bin/bundle install", :env => { "BUNDLER_VERSION" => "999.999.999" }, :raise_on_error => false
|
||||
expect(exitstatus).to eq(42)
|
||||
expect(err).to include("Activating bundler (~> 999.999) failed:").
|
||||
and include("To install the version of bundler this project requires, run `gem install bundler -v '~> 999.999'`")
|
||||
expect(err).to include("Activating bundler (999.999.999) failed:").
|
||||
and include("To install the version of bundler this project requires, run `gem install bundler -v '999.999.999'`")
|
||||
end
|
||||
|
||||
it "runs the correct version of bundler even if a higher version is installed" do
|
||||
system_gems "bundler-999.999.998", "bundler-999.999.999"
|
||||
|
||||
sys_exec "bin/bundle install", :env => { "BUNDLER_VERSION" => "999.999.998", "DEBUG" => "1" }, :raise_on_error => false
|
||||
expect(out).to include %(Using bundler 999.999.998\n)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -215,8 +222,8 @@ RSpec.describe "bundle binstubs <gem>" do
|
|||
it "calls through to the explicit bundler version" do
|
||||
sys_exec "bin/bundle update --bundler=999.999.999", :raise_on_error => false
|
||||
expect(exitstatus).to eq(42)
|
||||
expect(err).to include("Activating bundler (~> 999.999) failed:").
|
||||
and include("To install the version of bundler this project requires, run `gem install bundler -v '~> 999.999'`")
|
||||
expect(err).to include("Activating bundler (999.999.999) failed:").
|
||||
and include("To install the version of bundler this project requires, run `gem install bundler -v '999.999.999'`")
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -254,6 +261,7 @@ RSpec.describe "bundle binstubs <gem>" do
|
|||
s.executables = %w[foo]
|
||||
end
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo")}"
|
||||
G
|
||||
|
||||
|
@ -269,6 +277,7 @@ RSpec.describe "bundle binstubs <gem>" do
|
|||
s.executables = %w[foo]
|
||||
end
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => "#{lib_path("foo")}"
|
||||
G
|
||||
|
||||
|
|
|
@ -319,6 +319,7 @@ RSpec.describe "bundle check" do
|
|||
describe "when using only scoped rubygems sources" do
|
||||
before do
|
||||
gemfile <<~G
|
||||
source "#{file_uri_for(gem_repo2)}"
|
||||
source "#{file_uri_for(gem_repo1)}" do
|
||||
gem "rack"
|
||||
end
|
||||
|
@ -343,6 +344,7 @@ RSpec.describe "bundle check" do
|
|||
end
|
||||
|
||||
gemfile <<~G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
source "#{file_uri_for(gem_repo4)}" do
|
||||
gem "depends_on_rack"
|
||||
end
|
||||
|
@ -355,6 +357,7 @@ RSpec.describe "bundle check" do
|
|||
expect(out).to include("The Gemfile's dependencies are satisfied")
|
||||
expect(lockfile).to eq <<~L
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
GEM
|
||||
|
|
|
@ -261,6 +261,7 @@ RSpec.describe "bundle clean" do
|
|||
revision = revision_for(lib_path("rails"))
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "activesupport", :git => "#{lib_path("rails")}", :ref => '#{revision}'
|
||||
G
|
||||
|
||||
|
@ -625,21 +626,19 @@ RSpec.describe "bundle clean" do
|
|||
end
|
||||
|
||||
it "when using --force, it doesn't remove default gem binaries" do
|
||||
skip "does not work on ruby 3.0 because it changes the path to look for default gems, tsort is a default gem there, and we can't install it either like we do with fiddle because it doesn't yet exist" unless RUBY_VERSION < "3.0.0"
|
||||
skip "does not work on old rubies because the realworld gems that need to be installed don't support them" if RUBY_VERSION < "2.7.0"
|
||||
|
||||
skip "does not work on rubygems versions where `--install_dir` doesn't respect --default" unless Gem::Installer.for_spec(loaded_gemspec, :install_dir => "/foo").default_spec_file == "/foo/specifications/default/bundler-#{Bundler::VERSION}.gemspec" # Since rubygems 3.2.0.rc.2
|
||||
|
||||
default_irb_version = ruby "gem 'irb', '< 999999'; require 'irb'; puts IRB::VERSION", :raise_on_error => false
|
||||
skip "irb isn't a default gem" if default_irb_version.empty?
|
||||
|
||||
build_repo2 do
|
||||
# simulate executable for default gem
|
||||
build_gem "irb", default_irb_version, :to_system => true, :default => true do |s|
|
||||
s.executables = "irb"
|
||||
end
|
||||
# simulate executable for default gem
|
||||
build_gem "irb", default_irb_version, :to_system => true, :default => true do |s|
|
||||
s.executables = "irb"
|
||||
end
|
||||
|
||||
realworld_system_gems "fiddle --version 1.0.0"
|
||||
realworld_system_gems "fiddle --version 1.0.6", "tsort --version 0.1.0", "pathname --version 0.1.0", "set --version 1.0.1"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo2)}"
|
||||
|
@ -869,6 +868,7 @@ RSpec.describe "bundle clean" do
|
|||
expect(very_simple_binary_extensions_dir).to exist
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "very_simple_git_binary", :git => "#{lib_path("very_simple_git_binary-1.0")}", :ref => "#{revision}"
|
||||
G
|
||||
|
||||
|
@ -878,6 +878,7 @@ RSpec.describe "bundle clean" do
|
|||
expect(very_simple_binary_extensions_dir).to exist
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
G
|
||||
|
||||
bundle "install"
|
||||
|
|
|
@ -76,6 +76,20 @@ RSpec.describe ".bundle/config" do
|
|||
end
|
||||
end
|
||||
|
||||
describe "config location" do
|
||||
let(:bundle_user_config) { File.join(Dir.home, ".config/bundler") }
|
||||
|
||||
before do
|
||||
Dir.mkdir File.dirname(bundle_user_config)
|
||||
end
|
||||
|
||||
it "can be configured through BUNDLE_USER_CONFIG" do
|
||||
bundle "config set path vendor", :env => { "BUNDLE_USER_CONFIG" => bundle_user_config }
|
||||
bundle "config get path", :env => { "BUNDLE_USER_CONFIG" => bundle_user_config }
|
||||
expect(out).to include("Set for the current user (#{bundle_user_config}): \"vendor\"")
|
||||
end
|
||||
end
|
||||
|
||||
describe "global" do
|
||||
before(:each) do
|
||||
install_gemfile <<-G
|
||||
|
@ -321,7 +335,7 @@ E
|
|||
end
|
||||
|
||||
describe "quoting" do
|
||||
before(:each) { gemfile "# no gems" }
|
||||
before(:each) { gemfile "source \"#{file_uri_for(gem_repo1)}\"" }
|
||||
let(:long_string) do
|
||||
"--with-xml2-include=/usr/pkg/include/libxml2 --with-xml2-lib=/usr/pkg/lib " \
|
||||
"--with-xslt-dir=/usr/pkg"
|
||||
|
|
|
@ -8,6 +8,7 @@ RSpec.describe "bundle exec" do
|
|||
|
||||
it "works with --gemfile flag" do
|
||||
create_file "CustomGemfile", <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack", "1.0.0"
|
||||
G
|
||||
|
||||
|
@ -17,6 +18,7 @@ RSpec.describe "bundle exec" do
|
|||
|
||||
it "activates the correct gem" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack", "0.9.1"
|
||||
G
|
||||
|
||||
|
@ -26,6 +28,7 @@ RSpec.describe "bundle exec" do
|
|||
|
||||
it "works and prints no warnings when HOME is not writable" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack", "0.9.1"
|
||||
G
|
||||
|
||||
|
@ -36,6 +39,7 @@ RSpec.describe "bundle exec" do
|
|||
|
||||
it "works when the bins are in ~/.bundle" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
G
|
||||
|
||||
|
@ -45,6 +49,7 @@ RSpec.describe "bundle exec" do
|
|||
|
||||
it "works when running from a random directory" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
G
|
||||
|
||||
|
@ -54,37 +59,39 @@ RSpec.describe "bundle exec" do
|
|||
end
|
||||
|
||||
it "works when exec'ing something else" do
|
||||
install_gemfile 'gem "rack"'
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem \"rack\""
|
||||
bundle "exec echo exec"
|
||||
expect(out).to eq("exec")
|
||||
end
|
||||
|
||||
it "works when exec'ing to ruby" do
|
||||
install_gemfile 'gem "rack"'
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem \"rack\""
|
||||
bundle "exec ruby -e 'puts %{hi}'"
|
||||
expect(out).to eq("hi")
|
||||
end
|
||||
|
||||
it "works when exec'ing to rubygems" do
|
||||
install_gemfile 'gem "rack"'
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem \"rack\""
|
||||
bundle "exec #{gem_cmd} --version"
|
||||
expect(out).to eq(Gem::VERSION)
|
||||
end
|
||||
|
||||
it "works when exec'ing to rubygems through sh -c" do
|
||||
install_gemfile 'gem "rack"'
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem \"rack\""
|
||||
bundle "exec sh -c '#{gem_cmd} --version'"
|
||||
expect(out).to eq(Gem::VERSION)
|
||||
end
|
||||
|
||||
it "works when exec'ing back to bundler with a lockfile that doesn't include the current platform" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack", "0.9.1"
|
||||
G
|
||||
|
||||
# simulate lockfile generated with old version not including specific platform
|
||||
lockfile <<-L
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
rack (0.9.1)
|
||||
|
||||
|
@ -110,20 +117,20 @@ RSpec.describe "bundle exec" do
|
|||
Process.setproctitle("1-2-3-4-5-6-7")
|
||||
puts `ps -ocommand= -p#{$$}`
|
||||
RUBY
|
||||
create_file "Gemfile"
|
||||
create_file "Gemfile", "source \"#{file_uri_for(gem_repo1)}\""
|
||||
create_file "a.rb", script_that_changes_its_own_title_and_checks_if_picked_up_by_ps_unix_utility
|
||||
bundle "exec ruby a.rb"
|
||||
expect(out).to eq("1-2-3-4-5-6-7")
|
||||
end
|
||||
|
||||
it "accepts --verbose" do
|
||||
install_gemfile 'gem "rack"'
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem \"rack\""
|
||||
bundle "exec --verbose echo foobar"
|
||||
expect(out).to eq("foobar")
|
||||
end
|
||||
|
||||
it "passes --verbose to command if it is given after the command" do
|
||||
install_gemfile 'gem "rack"'
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem \"rack\""
|
||||
bundle "exec echo --verbose"
|
||||
expect(out).to eq("--verbose")
|
||||
end
|
||||
|
@ -147,7 +154,7 @@ RSpec.describe "bundle exec" do
|
|||
end
|
||||
G
|
||||
|
||||
install_gemfile ""
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
sys_exec "#{Gem.ruby} #{command.path}"
|
||||
|
||||
expect(out).to be_empty
|
||||
|
@ -155,7 +162,7 @@ RSpec.describe "bundle exec" do
|
|||
end
|
||||
|
||||
it "accepts --keep-file-descriptors" do
|
||||
install_gemfile ""
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
bundle "exec --keep-file-descriptors echo foobar"
|
||||
|
||||
expect(err).to be_empty
|
||||
|
@ -164,7 +171,7 @@ RSpec.describe "bundle exec" do
|
|||
it "can run a command named --verbose" do
|
||||
skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform?
|
||||
|
||||
install_gemfile 'gem "rack"'
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem \"rack\""
|
||||
File.open(bundled_app("--verbose"), "w") do |f|
|
||||
f.puts "#!/bin/sh"
|
||||
f.puts "echo foobar"
|
||||
|
@ -210,7 +217,7 @@ RSpec.describe "bundle exec" do
|
|||
before do
|
||||
skip "irb isn't a default gem" if default_irb_version.empty?
|
||||
|
||||
install_gemfile ""
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
end
|
||||
|
||||
it "uses version provided by ruby" do
|
||||
|
@ -325,6 +332,7 @@ RSpec.describe "bundle exec" do
|
|||
skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform?
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
G
|
||||
|
||||
|
@ -343,6 +351,7 @@ RSpec.describe "bundle exec" do
|
|||
skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform?
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
G
|
||||
|
||||
|
@ -359,6 +368,7 @@ RSpec.describe "bundle exec" do
|
|||
|
||||
it "errors nicely when the argument doesn't exist" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
G
|
||||
|
||||
|
@ -370,6 +380,7 @@ RSpec.describe "bundle exec" do
|
|||
|
||||
it "errors nicely when the argument is not executable" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
G
|
||||
|
||||
|
@ -381,6 +392,7 @@ RSpec.describe "bundle exec" do
|
|||
|
||||
it "errors nicely when no arguments are passed" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
G
|
||||
|
||||
|
@ -412,6 +424,7 @@ RSpec.describe "bundle exec" do
|
|||
skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform?
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
G
|
||||
|
||||
|
@ -496,6 +509,7 @@ RSpec.describe "bundle exec" do
|
|||
describe "run from a random directory" do
|
||||
before(:each) do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
G
|
||||
end
|
||||
|
@ -519,6 +533,7 @@ RSpec.describe "bundle exec" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "fizz", :path => "#{File.expand_path(home("fizz"))}"
|
||||
G
|
||||
end
|
||||
|
@ -543,6 +558,7 @@ RSpec.describe "bundle exec" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "fizz_git", :git => "#{lib_path("fizz_git-1.0")}"
|
||||
G
|
||||
end
|
||||
|
@ -566,6 +582,7 @@ RSpec.describe "bundle exec" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "fizz_no_gemspec", "1.0", :git => "#{lib_path("fizz_no_gemspec-1.0")}"
|
||||
G
|
||||
end
|
||||
|
@ -612,6 +629,7 @@ RSpec.describe "bundle exec" do
|
|||
end
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -627,6 +645,8 @@ RSpec.describe "bundle exec" do
|
|||
skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform?
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
|
||||
module Monkey
|
||||
def bin_path(a,b,c)
|
||||
raise Gem::GemNotFoundException.new('Fail')
|
||||
|
@ -660,6 +680,7 @@ RSpec.describe "bundle exec" do
|
|||
bundled_app(path).chmod(0o755)
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
G
|
||||
end
|
||||
|
@ -806,6 +827,7 @@ RSpec.describe "bundle exec" do
|
|||
context "when Bundler.setup fails", :bundler => "< 3" do
|
||||
before do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'rack', '2'
|
||||
G
|
||||
ENV["BUNDLER_FORCE_TTY"] = "true"
|
||||
|
@ -814,9 +836,9 @@ RSpec.describe "bundle exec" do
|
|||
let(:exit_code) { Bundler::GemNotFound.new.status_code }
|
||||
let(:expected) { "" }
|
||||
let(:expected_err) { <<-EOS.strip }
|
||||
\e[31mCould not find gem 'rack (= 2)' in locally installed gems.
|
||||
The source contains the following versions of 'rack': 0.9.1, 1.0.0\e[0m
|
||||
\e[33mRun `bundle install` to install missing gems.\e[0m
|
||||
Could not find gem 'rack (= 2)' in rubygems repository #{file_uri_for(gem_repo1)}/ or installed locally.
|
||||
The source contains the following versions of 'rack': 0.9.1, 1.0.0
|
||||
Run `bundle install` to install missing gems.
|
||||
EOS
|
||||
|
||||
it "runs" do
|
||||
|
@ -832,6 +854,7 @@ The source contains the following versions of 'rack': 0.9.1, 1.0.0\e[0m
|
|||
context "when Bundler.setup fails", :bundler => "3" do
|
||||
before do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'rack', '2'
|
||||
G
|
||||
ENV["BUNDLER_FORCE_TTY"] = "true"
|
||||
|
@ -840,9 +863,9 @@ The source contains the following versions of 'rack': 0.9.1, 1.0.0\e[0m
|
|||
let(:exit_code) { Bundler::GemNotFound.new.status_code }
|
||||
let(:expected) { "" }
|
||||
let(:expected_err) { <<-EOS.strip }
|
||||
\e[31mCould not find gem 'rack (= 2)' in locally installed gems.
|
||||
The source contains the following versions of 'rack': 1.0.0\e[0m
|
||||
\e[33mRun `bundle install` to install missing gems.\e[0m
|
||||
Could not find gem 'rack (= 2)' in rubygems repository #{file_uri_for(gem_repo1)}/ or installed locally.
|
||||
The source contains the following versions of 'rack': 1.0.0
|
||||
Run `bundle install` to install missing gems.
|
||||
EOS
|
||||
|
||||
it "runs" do
|
||||
|
@ -1020,7 +1043,7 @@ __FILE__: #{path.to_s.inspect}
|
|||
before do
|
||||
skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform?
|
||||
|
||||
install_gemfile ""
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
end
|
||||
|
||||
it "does not undo the monkeypatches" do
|
||||
|
@ -1079,7 +1102,7 @@ __FILE__: #{path.to_s.inspect}
|
|||
RUBY
|
||||
|
||||
# A Gemfile needs to be in the root to trick bundler's root resolution
|
||||
create_file(bundled_app("Gemfile"))
|
||||
create_file(bundled_app("Gemfile"), "source \"#{file_uri_for(gem_repo1)}\"")
|
||||
|
||||
bundle "install"
|
||||
end
|
||||
|
@ -1110,7 +1133,7 @@ __FILE__: #{path.to_s.inspect}
|
|||
skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform?
|
||||
skip "openssl isn't a default gem" if expected.empty?
|
||||
|
||||
install_gemfile "" # must happen before installing the broken system gem
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" # must happen before installing the broken system gem
|
||||
|
||||
build_repo4 do
|
||||
build_gem "openssl", openssl_version do |s|
|
||||
|
@ -1151,6 +1174,7 @@ __FILE__: #{path.to_s.inspect}
|
|||
build_git "simple_git_binary", &:add_c_extension
|
||||
bundle "config set --local path .bundle"
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "simple_git_binary", :git => '#{lib_path("simple_git_binary-1.0")}'
|
||||
G
|
||||
end
|
||||
|
|
|
@ -111,6 +111,7 @@ RSpec.describe "bundle info" do
|
|||
|
||||
it "prints out git info" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
expect(the_bundle).to include_gems "foo 1.0"
|
||||
|
@ -126,6 +127,7 @@ RSpec.describe "bundle info" do
|
|||
@revision = revision_for(lib_path("foo-1.0"))[0...6]
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}", :branch => "omg"
|
||||
G
|
||||
expect(the_bundle).to include_gems "foo 1.0.omg"
|
||||
|
@ -137,6 +139,7 @@ RSpec.describe "bundle info" do
|
|||
it "doesn't print the branch when tied to a ref" do
|
||||
sha = revision_for(lib_path("foo-1.0"))
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}", :ref => "#{sha}"
|
||||
G
|
||||
|
||||
|
@ -147,6 +150,7 @@ RSpec.describe "bundle info" do
|
|||
it "handles when a version is a '-' prerelease" do
|
||||
@git = build_git("foo", "1.0.0-beta.1", :path => lib_path("foo"))
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", "1.0.0-beta.1", :git => "#{lib_path("foo")}"
|
||||
G
|
||||
expect(the_bundle).to include_gems "foo 1.0.0.pre.beta.1"
|
||||
|
|
|
@ -334,11 +334,15 @@ RSpec.describe "bundle install with gem sources" do
|
|||
gem "rack"
|
||||
G
|
||||
|
||||
expect(err).to include("Your Gemfile has no gem server sources")
|
||||
expect(err).to include("This Gemfile does not include an explicit global source. " \
|
||||
"Not using an explicit global source may result in a different lockfile being generated depending on " \
|
||||
"the gems you have installed locally before bundler is run." \
|
||||
"Instead, define a global source in your Gemfile like this: source \"https://rubygems.org\".")
|
||||
end
|
||||
|
||||
it "creates a Gemfile.lock on a blank Gemfile" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
G
|
||||
|
||||
expect(File.exist?(bundled_app_lock)).to eq(true)
|
||||
|
@ -448,7 +452,7 @@ RSpec.describe "bundle install with gem sources" do
|
|||
|
||||
expect(last_command.stdboth).not_to match(/Error Report/i)
|
||||
expect(err).to include("An error occurred while installing ajp-rails (0.0.0), and Bundler cannot continue.").
|
||||
and include("Make sure that `gem install ajp-rails -v '0.0.0' --source '#{file_uri_for(gem_repo2)}/'` succeeds before bundling.")
|
||||
and include("Bundler::APIResponseInvalidDependenciesError")
|
||||
end
|
||||
|
||||
it "doesn't blow up when the local .bundle/config is empty" do
|
||||
|
@ -482,6 +486,7 @@ RSpec.describe "bundle install with gem sources" do
|
|||
install_gemfile <<-G, :raise_on_error => false
|
||||
::RUBY_VERSION = '2.0.1'
|
||||
ruby '~> 2.2'
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
G
|
||||
expect(err).to include("Your Ruby version is 2.0.1, but your Gemfile specified ~> 2.2")
|
||||
end
|
||||
|
@ -493,12 +498,14 @@ RSpec.describe "bundle install with gem sources" do
|
|||
::RUBY_VERSION = '2.1.3'
|
||||
::RUBY_PATCHLEVEL = 100
|
||||
ruby '~> 2.1.0'
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
G
|
||||
end
|
||||
|
||||
it "writes current Ruby version to Gemfile.lock" do
|
||||
lockfile_should_be <<-L
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -519,10 +526,12 @@ RSpec.describe "bundle install with gem sources" do
|
|||
::RUBY_VERSION = '2.2.3'
|
||||
::RUBY_PATCHLEVEL = 100
|
||||
ruby '~> 2.2.0'
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
G
|
||||
|
||||
lockfile_should_be <<-L
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -540,6 +549,7 @@ RSpec.describe "bundle install with gem sources" do
|
|||
|
||||
it "does not crash when unlocking" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
ruby '>= 2.1.0'
|
||||
G
|
||||
|
||||
|
@ -558,6 +568,7 @@ RSpec.describe "bundle install with gem sources" do
|
|||
|
||||
build_lib "foo"
|
||||
gemfile = <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'foo', :path => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
File.open("#{root_dir}/Gemfile", "w") do |file|
|
||||
|
@ -574,6 +585,7 @@ RSpec.describe "bundle install with gem sources" do
|
|||
|
||||
build_lib "foo", :path => root_dir
|
||||
gemfile = <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gemspec
|
||||
G
|
||||
File.open("#{root_dir}/Gemfile", "w") do |file|
|
||||
|
@ -585,16 +597,48 @@ RSpec.describe "bundle install with gem sources" do
|
|||
end
|
||||
|
||||
describe "when requesting a quiet install via --quiet" do
|
||||
it "should be quiet" do
|
||||
it "should be quiet if there are no warnings" do
|
||||
bundle "config set force_ruby_platform true"
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'rack'
|
||||
G
|
||||
|
||||
bundle :install, :quiet => true, :raise_on_error => false
|
||||
expect(err).to include("Could not find gem 'rack'")
|
||||
expect(err).to_not include("Your Gemfile has no gem server sources")
|
||||
bundle :install, :quiet => true
|
||||
expect(out).to be_empty
|
||||
expect(err).to be_empty
|
||||
end
|
||||
|
||||
it "should still display warnings and errors" do
|
||||
bundle "config set force_ruby_platform true"
|
||||
|
||||
create_file("install_with_warning.rb", <<~RUBY)
|
||||
require "#{lib_dir}/bundler"
|
||||
require "#{lib_dir}/bundler/cli"
|
||||
require "#{lib_dir}/bundler/cli/install"
|
||||
|
||||
module RunWithWarning
|
||||
def run
|
||||
super
|
||||
rescue
|
||||
Bundler.ui.warn "BOOOOO"
|
||||
raise
|
||||
end
|
||||
end
|
||||
|
||||
Bundler::CLI::Install.prepend(RunWithWarning)
|
||||
RUBY
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'non-existing-gem'
|
||||
G
|
||||
|
||||
bundle :install, :quiet => true, :raise_on_error => false, :env => { "RUBYOPT" => "-r#{bundled_app("install_with_warning.rb")}" }
|
||||
expect(out).to be_empty
|
||||
expect(err).to include("Could not find gem 'non-existing-gem'")
|
||||
expect(err).to include("BOOOOO")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -105,6 +105,7 @@ RSpec.describe "bundle open" do
|
|||
skip "No default gems available on this test run" if default_gems.empty?
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "json"
|
||||
G
|
||||
end
|
||||
|
|
|
@ -66,7 +66,7 @@ RSpec.describe "bundle update" do
|
|||
end
|
||||
|
||||
it "doesn't delete the Gemfile.lock file if something goes wrong" do
|
||||
install_gemfile ""
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo2)}"
|
||||
|
@ -96,19 +96,19 @@ RSpec.describe "bundle update" do
|
|||
before { bundle "config set update_requires_all_flag true" }
|
||||
|
||||
it "errors when passed nothing" do
|
||||
install_gemfile ""
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
bundle :update, :raise_on_error => false
|
||||
expect(err).to eq("To update everything, pass the `--all` flag.")
|
||||
end
|
||||
|
||||
it "errors when passed --all and another option" do
|
||||
install_gemfile ""
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
bundle "update --all foo", :raise_on_error => false
|
||||
expect(err).to eq("Cannot specify --all along with specific options.")
|
||||
end
|
||||
|
||||
it "updates everything when passed --all" do
|
||||
install_gemfile ""
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
bundle "update --all"
|
||||
expect(out).to include("Bundle updated!")
|
||||
end
|
||||
|
@ -753,6 +753,7 @@ RSpec.describe "bundle update in more complicated situations" do
|
|||
build_git "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => '#{lib_path("foo-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -769,6 +770,7 @@ RSpec.describe "bundle update in more complicated situations" do
|
|||
build_git "rack"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo2)}"
|
||||
gem "rack", :git => '#{lib_path("rack-1.0")}'
|
||||
G
|
||||
|
||||
|
@ -922,6 +924,7 @@ RSpec.describe "bundle update --ruby" do
|
|||
::RUBY_VERSION = '2.1.3'
|
||||
::RUBY_PATCHLEVEL = 100
|
||||
ruby '~> 2.1.0'
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
G
|
||||
end
|
||||
|
||||
|
@ -930,6 +933,7 @@ RSpec.describe "bundle update --ruby" do
|
|||
gemfile <<-G
|
||||
::RUBY_VERSION = '2.1.4'
|
||||
::RUBY_PATCHLEVEL = 222
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
G
|
||||
end
|
||||
it "removes the Ruby from the Gemfile.lock" do
|
||||
|
@ -937,6 +941,7 @@ RSpec.describe "bundle update --ruby" do
|
|||
|
||||
lockfile_should_be <<-L
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -956,6 +961,7 @@ RSpec.describe "bundle update --ruby" do
|
|||
::RUBY_VERSION = '2.1.4'
|
||||
::RUBY_PATCHLEVEL = 222
|
||||
ruby '~> 2.1.0'
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
G
|
||||
end
|
||||
it "updates the Gemfile.lock with the latest version" do
|
||||
|
@ -963,6 +969,7 @@ RSpec.describe "bundle update --ruby" do
|
|||
|
||||
lockfile_should_be <<-L
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -985,6 +992,7 @@ RSpec.describe "bundle update --ruby" do
|
|||
::RUBY_VERSION = '2.2.2'
|
||||
::RUBY_PATCHLEVEL = 505
|
||||
ruby '~> 2.1.0'
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
G
|
||||
end
|
||||
it "shows a helpful error message" do
|
||||
|
@ -1000,6 +1008,7 @@ RSpec.describe "bundle update --ruby" do
|
|||
::RUBY_VERSION = '1.8.3'
|
||||
::RUBY_PATCHLEVEL = 55
|
||||
ruby '~> 1.8.0'
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
G
|
||||
end
|
||||
it "updates the Gemfile.lock with the latest version" do
|
||||
|
@ -1007,6 +1016,7 @@ RSpec.describe "bundle update --ruby" do
|
|||
|
||||
lockfile_should_be <<-L
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -1248,7 +1258,7 @@ RSpec.describe "bundle update conservative" do
|
|||
|
||||
context "error handling" do
|
||||
before do
|
||||
gemfile ""
|
||||
gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
end
|
||||
|
||||
it "raises if too many flags are provided" do
|
||||
|
|
|
@ -75,6 +75,7 @@ RSpec.describe "bundle install with :allow_offline_install" do
|
|||
git = build_git "a", "1.0.0", :path => lib_path("a")
|
||||
update_git("a", :path => git.path, :branch => "new_branch")
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "a", :git => #{git.path.to_s.dump}
|
||||
G
|
||||
|
||||
|
@ -84,6 +85,7 @@ RSpec.describe "bundle install with :allow_offline_install" do
|
|||
|
||||
break_git_remote_ops! do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "a", :git => #{git.path.to_s.dump}, :branch => "new_branch"
|
||||
G
|
||||
end
|
||||
|
|
|
@ -53,6 +53,7 @@ RSpec.describe "install in deployment or frozen mode" do
|
|||
it "works if you exclude a group with a git gem" do
|
||||
build_git "foo"
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
group :test do
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
end
|
||||
|
@ -76,6 +77,7 @@ RSpec.describe "install in deployment or frozen mode" do
|
|||
build_lib "foo", :path => lib_path("nested/foo")
|
||||
build_lib "bar", :path => lib_path("nested/bar")
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", "1.0", :path => "#{lib_path("nested")}"
|
||||
gem "bar", :path => "#{lib_path("nested")}"
|
||||
G
|
||||
|
@ -88,6 +90,7 @@ RSpec.describe "install in deployment or frozen mode" do
|
|||
it "works when path gems are specified twice" do
|
||||
build_lib "foo", :path => lib_path("nested/foo")
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => "#{lib_path("nested/foo")}"
|
||||
gem "foo", :path => "#{lib_path("nested/foo")}"
|
||||
G
|
||||
|
@ -110,6 +113,7 @@ RSpec.describe "install in deployment or frozen mode" do
|
|||
|
||||
it "works with sources given by a block" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
source "#{file_uri_for(gem_repo1)}" do
|
||||
gem "rack"
|
||||
end
|
||||
|
@ -431,6 +435,7 @@ You have deleted from the Gemfile:
|
|||
it "works fine after bundle package and bundle install --local" do
|
||||
build_lib "foo", :path => lib_path("foo")
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => "#{lib_path("foo")}"
|
||||
G
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
RSpec.describe "bundle install" do
|
||||
context "installing a gem fails" do
|
||||
it "prints out why that gem was being installed" do
|
||||
it "prints out why that gem was being installed and the underlying error" do
|
||||
build_repo2 do
|
||||
build_gem "activesupport", "2.3.2" do |s|
|
||||
s.extensions << "Rakefile"
|
||||
|
@ -18,102 +18,9 @@ RSpec.describe "bundle install" do
|
|||
source "#{file_uri_for(gem_repo2)}"
|
||||
gem "rails"
|
||||
G
|
||||
expect(err).to start_with("Gem::Ext::BuildError: ERROR: Failed to build gem native extension.")
|
||||
expect(err).to end_with(<<-M.strip)
|
||||
An error occurred while installing activesupport (2.3.2), and Bundler cannot continue.
|
||||
Make sure that `gem install activesupport -v '2.3.2' --source '#{file_uri_for(gem_repo2)}/'` succeeds before bundling.
|
||||
|
||||
In Gemfile:
|
||||
rails was resolved to 2.3.2, which depends on
|
||||
actionmailer was resolved to 2.3.2, which depends on
|
||||
activesupport
|
||||
M
|
||||
end
|
||||
|
||||
context "when installing a git gem" do
|
||||
it "does not tell the user to run 'gem install'" do
|
||||
build_git "activesupport", "2.3.2", :path => lib_path("activesupport") do |s|
|
||||
s.extensions << "Rakefile"
|
||||
s.write "Rakefile", <<-RUBY
|
||||
task :default do
|
||||
abort "make installing activesupport-2.3.2 fail"
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rails"
|
||||
gem "activesupport", :git => "#{lib_path("activesupport")}"
|
||||
G
|
||||
|
||||
expect(err).to end_with(<<-M.strip)
|
||||
An error occurred while installing activesupport (2.3.2), and Bundler cannot continue.
|
||||
|
||||
In Gemfile:
|
||||
rails was resolved to 2.3.2, which depends on
|
||||
actionmailer was resolved to 2.3.2, which depends on
|
||||
activesupport
|
||||
M
|
||||
end
|
||||
end
|
||||
|
||||
context "when installing a gem using a git block" do
|
||||
it "does not tell the user to run 'gem install'" do
|
||||
build_git "activesupport", "2.3.2", :path => lib_path("activesupport") do |s|
|
||||
s.extensions << "Rakefile"
|
||||
s.write "Rakefile", <<-RUBY
|
||||
task :default do
|
||||
abort "make installing activesupport-2.3.2 fail"
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rails"
|
||||
|
||||
git "#{lib_path("activesupport")}" do
|
||||
gem "activesupport"
|
||||
end
|
||||
G
|
||||
|
||||
expect(err).to end_with(<<-M.strip)
|
||||
An error occurred while installing activesupport (2.3.2), and Bundler cannot continue.
|
||||
|
||||
|
||||
In Gemfile:
|
||||
rails was resolved to 2.3.2, which depends on
|
||||
actionmailer was resolved to 2.3.2, which depends on
|
||||
activesupport
|
||||
M
|
||||
end
|
||||
end
|
||||
|
||||
it "prints out the hint for the remote source when available" do
|
||||
build_repo2 do
|
||||
build_gem "activesupport", "2.3.2" do |s|
|
||||
s.extensions << "Rakefile"
|
||||
s.write "Rakefile", <<-RUBY
|
||||
task :default do
|
||||
abort "make installing activesupport-2.3.2 fail"
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
end
|
||||
|
||||
build_repo4 do
|
||||
build_gem "a"
|
||||
end
|
||||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo4)}"
|
||||
source "#{file_uri_for(gem_repo2)}" do
|
||||
gem "rails"
|
||||
end
|
||||
G
|
||||
expect(err).to end_with(<<-M.strip)
|
||||
An error occurred while installing activesupport (2.3.2), and Bundler cannot continue.
|
||||
Make sure that `gem install activesupport -v '2.3.2' --source '#{file_uri_for(gem_repo2)}/'` succeeds before bundling.
|
||||
|
||||
In Gemfile:
|
||||
rails was resolved to 2.3.2, which depends on
|
||||
|
|
|
@ -11,12 +11,14 @@ RSpec.describe "bundle install with gemfile that uses eval_gemfile" do
|
|||
context "eval-ed Gemfile points to an internal gemspec" do
|
||||
before do
|
||||
create_file "Gemfile-other", <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gemspec :path => 'gems/gunks'
|
||||
G
|
||||
end
|
||||
|
||||
it "installs the gemspec specified gem" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
eval_gemfile 'Gemfile-other'
|
||||
G
|
||||
expect(out).to include("Resolving dependencies")
|
||||
|
@ -35,6 +37,8 @@ RSpec.describe "bundle install with gemfile that uses eval_gemfile" do
|
|||
end
|
||||
|
||||
create_file bundled_app("gems/Gemfile"), <<-G
|
||||
source "#{file_uri_for(gem_repo2)}"
|
||||
|
||||
gemspec :path => "\#{__dir__}/gunks"
|
||||
|
||||
source "#{file_uri_for(gem_repo2)}" do
|
||||
|
@ -62,10 +66,12 @@ RSpec.describe "bundle install with gemfile that uses eval_gemfile" do
|
|||
before do
|
||||
build_lib("a", :path => bundled_app("gems/a"))
|
||||
create_file bundled_app("nested/Gemfile-nested"), <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "a", :path => "../gems/a"
|
||||
G
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
eval_gemfile "nested/Gemfile-nested"
|
||||
G
|
||||
end
|
||||
|
@ -89,6 +95,7 @@ RSpec.describe "bundle install with gemfile that uses eval_gemfile" do
|
|||
|
||||
it "installs the gemspec specified gem" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
eval_gemfile 'other/Gemfile-other'
|
||||
gemspec :path => 'gems/gunks'
|
||||
G
|
||||
|
|
|
@ -210,6 +210,7 @@ RSpec.describe "bundle install from an existing gemspec" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gemspec
|
||||
G
|
||||
|
||||
|
@ -263,6 +264,7 @@ RSpec.describe "bundle install from an existing gemspec" do
|
|||
build_lib "omg", "2.0", :path => lib_path("omg")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gemspec :path => "#{lib_path("omg")}"
|
||||
G
|
||||
|
||||
|
|
|
@ -62,6 +62,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
update_git "foo"
|
||||
|
||||
install_gemfile bundled_app2("Gemfile"), <<-G, :dir => bundled_app2
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("foo-1.0")}" do
|
||||
gem 'foo'
|
||||
end
|
||||
|
@ -84,6 +85,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
build_git "foo"
|
||||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", "1.1", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -98,6 +100,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
platforms :jruby do
|
||||
gem "only_java", "1.2", :git => "#{lib_path("only_java-1.0-java")}"
|
||||
end
|
||||
|
@ -119,6 +122,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
platforms :jruby do
|
||||
gem "only_java", "1.2", :git => "#{lib_path("only_java-1.1-java")}"
|
||||
end
|
||||
|
@ -187,6 +191,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
|
||||
it "works" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("foo-1.0")}", :ref => "#{@revision}" do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -202,6 +207,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
|
||||
it "works when the revision is a symbol" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("foo-1.0")}", :ref => #{@revision.to_sym.inspect} do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -230,6 +236,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("foo-1.0")}", :ref => "refs/bundler/1" do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -246,6 +253,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
|
||||
it "works when the revision is a non-head ref and it was previously downloaded" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("foo-1.0")}" do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -264,6 +272,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("foo-1.0")}", :ref => "refs/bundler/1" do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -284,6 +293,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
bundle "config set global_gem_cache true"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("foo-1.0")}" do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -306,6 +316,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
update_git("foo", :path => repo, :branch => branch)
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{repo}", :branch => #{branch.dump} do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -322,6 +333,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
update_git("foo", :path => repo, :branch => branch)
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{repo}", :branch => #{branch.dump} do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -339,6 +351,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
update_git("foo", :path => repo, :branch => branch)
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{repo}", :branch => #{branch.dump} do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -357,6 +370,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
update_git("foo", :path => repo, :tag => tag)
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{repo}", :tag => #{tag.dump} do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -373,6 +387,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
update_git("foo", :path => repo, :tag => tag)
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{repo}", :tag => #{tag.dump} do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -390,6 +405,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
update_git("foo", :path => repo, :tag => tag)
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{repo}", :tag => #{tag.dump} do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -705,6 +721,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
build_lib "hi2u", :path => lib_path("hi2u")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path("hi2u")}" do
|
||||
gem "omg"
|
||||
gem "hi2u"
|
||||
|
@ -721,6 +738,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
update_git "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}", :ref => "#{@revision}"
|
||||
G
|
||||
|
||||
|
@ -785,6 +803,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
build_git "foo", "1.0"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", "1.0", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -806,6 +825,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
|
||||
it "catches git errors and spits out useful output" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", "1.0", :git => "omgomg"
|
||||
G
|
||||
|
||||
|
@ -820,6 +840,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
build_git "foo", :path => lib_path("foo space-1.0")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo space-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -830,6 +851,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
build_git "forced", "1.0"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("forced-1.0")}" do
|
||||
gem 'forced'
|
||||
end
|
||||
|
@ -858,6 +880,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
sys_exec "git commit -m \"submodulator\"", :dir => lib_path("has_submodule-1.0")
|
||||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("has_submodule-1.0")}" do
|
||||
gem "has_submodule"
|
||||
end
|
||||
|
@ -876,6 +899,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
sys_exec "git commit -m \"submodulator\"", :dir => lib_path("has_submodule-1.0")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("has_submodule-1.0")}", :submodules => true do
|
||||
gem "has_submodule"
|
||||
end
|
||||
|
@ -892,6 +916,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
sys_exec "git commit -m \"submodulator\"", :dir => lib_path("has_submodule-1.0")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("has_submodule-1.0")}" do
|
||||
gem "has_submodule"
|
||||
end
|
||||
|
@ -906,6 +931,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
git = build_git "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("foo-1.0")}" do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -915,6 +941,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
update_git "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("foo-1.0")}", :ref => "#{git.ref_for("HEAD^")}" do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -932,6 +959,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
build_git "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -945,6 +973,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
build_git "foo"
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -959,6 +988,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
FileUtils.touch(default_bundle_path("bundler"))
|
||||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -976,6 +1006,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
build_git "bar", :path => lib_path("nested")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("nested")}"
|
||||
gem "bar", :git => "#{lib_path("nested")}"
|
||||
G
|
||||
|
@ -1033,6 +1064,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
build_git "valim"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "valim", :git => "#{file_uri_for(lib_path("valim-1.0"))}"
|
||||
G
|
||||
|
||||
|
@ -1058,11 +1090,13 @@ RSpec.describe "bundle install with git sources" do
|
|||
revision = revision_for(lib_path("foo-1.0"))
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{file_uri_for(lib_path("foo-1.0"))}", :ref => "#{revision}"
|
||||
G
|
||||
expect(out).to_not match(/Revision.*does not exist/)
|
||||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{file_uri_for(lib_path("foo-1.0"))}", :ref => "deadbeef"
|
||||
G
|
||||
expect(err).to include("Revision deadbeef does not exist in the repository")
|
||||
|
@ -1089,6 +1123,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
it "runs pre-install hooks" do
|
||||
build_git "foo"
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -1108,6 +1143,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
it "runs post-install hooks" do
|
||||
build_git "foo"
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -1127,6 +1163,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
it "complains if the install hook fails" do
|
||||
build_git "foo"
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -1403,6 +1440,7 @@ In Gemfile:
|
|||
build_git "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("foo-1.0")}" do
|
||||
gem 'foo'
|
||||
end
|
||||
|
@ -1419,6 +1457,7 @@ In Gemfile:
|
|||
build_git "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("foo-1.0")}" do
|
||||
gem 'foo'
|
||||
end
|
||||
|
@ -1448,6 +1487,7 @@ In Gemfile:
|
|||
build_git "foo", "1.0", :path => lib_path("foo")
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo")}", :branch => "master"
|
||||
G
|
||||
|
||||
|
@ -1463,6 +1503,7 @@ In Gemfile:
|
|||
|
||||
it "does not display the password" do
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "https://#{credentials}@github.com/company/private-repo" do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -1478,6 +1519,7 @@ In Gemfile:
|
|||
|
||||
it "displays the oauth scheme but not the oauth token" do
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "https://#{credentials}:x-oauth-basic@github.com/company/private-repo" do
|
||||
gem "foo"
|
||||
end
|
||||
|
|
|
@ -16,6 +16,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
build_lib "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path("foo-1.0")}" do
|
||||
gem 'foo'
|
||||
end
|
||||
|
@ -28,6 +29,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
build_lib "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'foo', :path => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -40,6 +42,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
relative_path = lib_path("foo-1.0").relative_path_from(bundled_app)
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'foo', :path => "#{relative_path}"
|
||||
G
|
||||
|
||||
|
@ -52,6 +55,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
relative_path = lib_path("foo-1.0").relative_path_from(Pathname.new("~").expand_path)
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'foo', :path => "~/#{relative_path}"
|
||||
G
|
||||
|
||||
|
@ -66,6 +70,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
relative_path = lib_path("foo-1.0").relative_path_from(Pathname.new("/home/#{username}").expand_path)
|
||||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'foo', :path => "~#{username}/#{relative_path}"
|
||||
G
|
||||
expect(err).to match("There was an error while trying to use the path `~#{username}/#{relative_path}`.")
|
||||
|
@ -76,6 +81,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
build_lib "foo", :path => bundled_app("foo-1.0")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'foo', :path => "./foo-1.0"
|
||||
G
|
||||
|
||||
|
@ -87,6 +93,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
build_lib "aaa", :path => lib_path("demo/aaa")
|
||||
|
||||
gemfile = <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gemspec
|
||||
gem "aaa", :path => "./aaa"
|
||||
G
|
||||
|
@ -105,6 +112,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
aaa (1.0)
|
||||
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -128,6 +136,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
build_lib "foo", :path => bundled_app("foo-1.0")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'foo', :path => File.expand_path("../foo-1.0", __FILE__)
|
||||
G
|
||||
|
||||
|
@ -167,6 +176,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
build_lib "foo", "1.0.0", :path => lib_path("omg/foo")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "omg", :path => "#{lib_path("omg")}"
|
||||
G
|
||||
|
||||
|
@ -177,6 +187,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
build_lib "omg", "2.0", :path => lib_path("omg")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "omg", :path => "#{lib_path("omg")}"
|
||||
G
|
||||
|
||||
|
@ -200,6 +211,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "premailer", :path => "#{lib_path("premailer")}"
|
||||
G
|
||||
|
||||
|
@ -221,6 +233,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -304,6 +317,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gemspec :path => "#{lib_path("foo")}"
|
||||
G
|
||||
|
||||
|
@ -317,6 +331,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gemspec :path => "#{lib_path("foo")}", :name => "foo"
|
||||
G
|
||||
|
||||
|
@ -329,6 +344,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G, :verbose => true
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path("foo-1.0")}" do
|
||||
gem 'foo'
|
||||
end
|
||||
|
@ -346,6 +362,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
lib_path("foo-1.0").join("bin/performance").mkpath
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'foo', '1.0', :path => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
expect(err).to be_empty
|
||||
|
@ -355,6 +372,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
build_lib "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'foo', :path => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -367,6 +385,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
build_lib "hi2u"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path}" do
|
||||
gem "omg"
|
||||
gem "hi2u"
|
||||
|
@ -385,6 +404,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => "#{lib_path("foo")}"
|
||||
gem "omg", :path => "#{lib_path("omg")}"
|
||||
G
|
||||
|
@ -396,6 +416,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
build_lib "foo", :gemspec => false
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", "1.0", :path => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -411,12 +432,13 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
specs:
|
||||
|
||||
GEM
|
||||
remote: http://rubygems.org
|
||||
remote: http://rubygems.org/
|
||||
L
|
||||
|
||||
FileUtils.mkdir_p(bundled_app("vendor/bar"))
|
||||
|
||||
install_gemfile <<-G
|
||||
source "http://rubygems.org"
|
||||
gem "bar", "1.0.0", path: "vendor/bar", require: "bar/nyard"
|
||||
G
|
||||
end
|
||||
|
@ -461,6 +483,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -476,6 +499,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
build_lib "bar", "1.0", :path => lib_path("foo/bar")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => "#{lib_path("foo")}"
|
||||
G
|
||||
end
|
||||
|
@ -720,6 +744,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
it "runs pre-install hooks" do
|
||||
build_git "foo"
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -739,6 +764,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
it "runs post-install hooks" do
|
||||
build_git "foo"
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -758,6 +784,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
it "complains if the install hook fails" do
|
||||
build_git "foo"
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -788,6 +815,7 @@ RSpec.describe "bundle install with explicit source paths" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => "#{lib_path("foo-1.0")}"
|
||||
gem "bar", :path => "#{lib_path("bar-1.0")}"
|
||||
G
|
||||
|
|
|
@ -400,6 +400,7 @@ RSpec.describe "bundle install with platform conditionals" do
|
|||
build_git "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
platform :#{not_local_tag} do
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
end
|
||||
|
|
|
@ -1074,6 +1074,7 @@ RSpec.describe "bundle install with gems on multiple sources" do
|
|||
build_lib "foo"
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack", :source => "https://gem.repo1"
|
||||
gem "foo", :path => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
@ -1309,6 +1310,8 @@ RSpec.describe "bundle install with gems on multiple sources" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G, :artifice => "compact_index", :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
|
||||
source "https://gem.repo4" do
|
||||
gem "depends_on_rack"
|
||||
end
|
||||
|
@ -1338,6 +1341,7 @@ RSpec.describe "bundle install with gems on multiple sources" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G, :artifice => "compact_index", :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
source "https://gem.repo4" do
|
||||
gem "depends_on_rack"
|
||||
end
|
||||
|
|
|
@ -173,6 +173,7 @@ RSpec.describe "bundle install with specific platforms" do
|
|||
git = build_git "pg_array_parser", "1.0"
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "pg_array_parser", :git => "#{lib_path("pg_array_parser-1.0")}"
|
||||
G
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@ RSpec.describe "bundle install" do
|
|||
context "with duplicated gems" do
|
||||
it "will display a warning" do
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
|
||||
gem 'rails', '~> 4.0.0'
|
||||
gem 'rails', '~> 4.0.0'
|
||||
G
|
||||
|
@ -54,6 +56,8 @@ RSpec.describe "bundle install" do
|
|||
context "with deprecated features" do
|
||||
it "reports that lib is an invalid option" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
|
||||
gem "rack", :lib => "rack"
|
||||
G
|
||||
|
||||
|
@ -86,6 +90,8 @@ RSpec.describe "bundle install" do
|
|||
context "with a Gemfile containing non-US-ASCII characters" do
|
||||
it "reads the Gemfile with the UTF-8 encoding by default" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
|
||||
str = "Il était une fois ..."
|
||||
puts "The source encoding is: " + str.encoding.name
|
||||
G
|
||||
|
@ -99,6 +105,8 @@ RSpec.describe "bundle install" do
|
|||
# NOTE: This works thanks to #eval interpreting the magic encoding comment
|
||||
install_gemfile <<-G
|
||||
# encoding: iso-8859-1
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
|
||||
str = "Il #{"\xE9".dup.force_encoding("binary")}tait une fois ..."
|
||||
puts "The source encoding is: " + str.encoding.name
|
||||
G
|
||||
|
|
|
@ -930,6 +930,7 @@ Either installing with `--full-index` or running `bundle update rails` should fi
|
|||
|
||||
it "does not duplicate specs in the lockfile when updating and a dependency is not installed" do
|
||||
install_gemfile <<-G, :artifice => "compact_index"
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
source "#{source_uri}" do
|
||||
gem "rails"
|
||||
gem "activemerchant"
|
||||
|
|
|
@ -78,6 +78,7 @@ RSpec.describe "installing a gem with native extensions", :ruby_repo do
|
|||
bundle "config set build.c_extension --with-c_extension=hello"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "c_extension", :git => #{lib_path("c_extension-1.0").to_s.dump}
|
||||
G
|
||||
|
||||
|
@ -126,11 +127,13 @@ RSpec.describe "installing a gem with native extensions", :ruby_repo do
|
|||
|
||||
# 1st time, require only one gem -- only one of the extensions gets built.
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "c_extension_one", :git => #{lib_path("gems").to_s.dump}
|
||||
G
|
||||
|
||||
# 2nd time, require both gems -- we need both extensions to be built now.
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "c_extension_one", :git => #{lib_path("gems").to_s.dump}
|
||||
gem "c_extension_two", :git => #{lib_path("gems").to_s.dump}
|
||||
G
|
||||
|
@ -171,6 +174,7 @@ RSpec.describe "installing a gem with native extensions", :ruby_repo do
|
|||
bundle "config set build.c_extension --with-c_extension=hello --with-c_extension_bundle-dir=hola"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "c_extension", :git => #{lib_path("c_extension-1.0").to_s.dump}
|
||||
G
|
||||
|
||||
|
|
|
@ -108,6 +108,45 @@ RSpec.shared_examples "bundle install --standalone" do
|
|||
include_examples "common functionality"
|
||||
end
|
||||
|
||||
describe "with default gems and a lockfile", :ruby_repo do
|
||||
before do
|
||||
skip "does not work on rubygems versions where `--install_dir` doesn't respect --default" unless Gem::Installer.for_spec(loaded_gemspec, :install_dir => "/foo").default_spec_file == "/foo/specifications/default/bundler-#{Bundler::VERSION}.gemspec" # Since rubygems 3.2.0.rc.2
|
||||
skip "does not work on old rubies because the realworld gems that need to be installed don't support them" if RUBY_VERSION < "2.7.0"
|
||||
|
||||
realworld_system_gems "fiddle --version 1.0.6", "tsort --version 0.1.0"
|
||||
|
||||
necessary_system_gems = ["optparse --version 0.1.1", "psych --version 3.3.2", "yaml --version 0.1.1", "logger --version 1.4.3", "etc --version 1.2.0"]
|
||||
necessary_system_gems += ["shellwords --version 0.1.0", "base64 --version 0.1.0", "resolv --version 0.2.1"] if Gem.rubygems_version < Gem::Version.new("3.3.3.a")
|
||||
realworld_system_gems(*necessary_system_gems, :path => scoped_gem_path(bundled_app("bundle")))
|
||||
|
||||
build_gem "foo", "1.0.0", :to_system => true, :default => true do |s|
|
||||
s.add_dependency "bar"
|
||||
end
|
||||
|
||||
build_gem "bar", "1.0.0", :to_system => true, :default => true
|
||||
|
||||
build_repo4 do
|
||||
build_gem "foo", "1.0.0" do |s|
|
||||
s.add_dependency "bar"
|
||||
end
|
||||
|
||||
build_gem "bar", "1.0.0"
|
||||
end
|
||||
|
||||
gemfile <<-G
|
||||
source "https://gem.repo4"
|
||||
gem "foo"
|
||||
G
|
||||
|
||||
bundle "lock", :dir => cwd, :artifice => "compact_index"
|
||||
end
|
||||
|
||||
it "works" do
|
||||
bundle "config set --local path #{bundled_app("bundle")}"
|
||||
bundle :install, :standalone => true, :dir => cwd, :artifice => "compact_index", :env => { "BUNDLER_GEM_DEFAULT_DIR" => system_gem_path.to_s }
|
||||
end
|
||||
end
|
||||
|
||||
describe "with gems with native extension", :ruby_repo do
|
||||
before do
|
||||
bundle "config set --local path #{bundled_app("bundle")}"
|
||||
|
@ -146,6 +185,7 @@ RSpec.shared_examples "bundle install --standalone" do
|
|||
end
|
||||
bundle "config set --local path #{bundled_app("bundle")}"
|
||||
install_gemfile <<-G, :standalone => true, :dir => cwd, :raise_on_error => false
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "bar", :git => "#{lib_path("bar-1.0")}"
|
||||
G
|
||||
end
|
||||
|
|
|
@ -21,6 +21,7 @@ RSpec.describe "bundle install" do
|
|||
build_lib "yaml_spec", :gemspec => :yaml
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'yaml_spec', :path => "#{lib_path("yaml_spec-1.0")}"
|
||||
G
|
||||
expect(err).to be_empty
|
||||
|
@ -57,6 +58,7 @@ RSpec.describe "bundle install" do
|
|||
G
|
||||
|
||||
install_gemfile <<-G, :env => { "LANG" => "C" }
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gemspec
|
||||
G
|
||||
|
||||
|
@ -82,6 +84,7 @@ RSpec.describe "bundle install" do
|
|||
G
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gemspec
|
||||
G
|
||||
|
||||
|
@ -96,6 +99,7 @@ RSpec.describe "bundle install" do
|
|||
|
||||
install_gemfile <<-G
|
||||
ruby '#{RUBY_VERSION}', :engine_version => '#{RUBY_VERSION}', :engine => 'ruby'
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gemspec
|
||||
G
|
||||
expect(the_bundle).to include_gems "foo 1.0"
|
||||
|
@ -109,6 +113,7 @@ RSpec.describe "bundle install" do
|
|||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
ruby '#{RUBY_VERSION}', :engine_version => '#{RUBY_VERSION}', :engine => 'ruby', :patchlevel => '#{RUBY_PATCHLEVEL}'
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gemspec
|
||||
G
|
||||
expect(the_bundle).to include_gems "foo 1.0"
|
||||
|
@ -123,6 +128,7 @@ RSpec.describe "bundle install" do
|
|||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
ruby '#{RUBY_VERSION}', :engine_version => '#{RUBY_VERSION}', :engine => 'ruby', :patchlevel => '#{patchlevel}'
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gemspec
|
||||
G
|
||||
|
||||
|
@ -140,6 +146,7 @@ RSpec.describe "bundle install" do
|
|||
|
||||
install_gemfile <<-G, :raise_on_error => false
|
||||
ruby '#{version}', :engine_version => '#{version}', :engine => 'ruby'
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gemspec
|
||||
G
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ RSpec.describe "bundle install" do
|
|||
build_git "foo", "1.0", :path => lib_path("foo")
|
||||
|
||||
install_gemfile <<-G, :verbose => true
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{file_uri_for(lib_path("foo"))}"
|
||||
G
|
||||
|
||||
|
@ -17,6 +18,7 @@ RSpec.describe "bundle install" do
|
|||
build_git "foo", "1.0", :path => lib_path("foo"), :default_branch => "main"
|
||||
|
||||
install_gemfile <<-G, :verbose => true
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{file_uri_for(lib_path("foo"))}"
|
||||
G
|
||||
|
||||
|
@ -34,6 +36,7 @@ RSpec.describe "bundle install" do
|
|||
update_git "foo", "3.0", :path => lib_path("foo"), :gemspec => true
|
||||
|
||||
install_gemfile <<-G, :verbose => true
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{file_uri_for(lib_path("foo"))}", :ref => "master~2"
|
||||
G
|
||||
|
||||
|
@ -51,6 +54,7 @@ RSpec.describe "bundle install" do
|
|||
revision = build_git("foo").ref_for("HEAD")
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{file_uri_for(lib_path("foo-1.0"))}", :group => :development
|
||||
G
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ RSpec.describe "bundle install" do
|
|||
|
||||
before do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
end
|
||||
|
|
|
@ -70,4 +70,35 @@ RSpec.context "when using gem before installing" do
|
|||
expect(err).to_not include("If you haven't changed sources, that means the author of rack (0.9.1) has removed it.")
|
||||
expect(err).to_not include("You'll need to update your bundle to a different version of rack (0.9.1) that hasn't been removed in order to install.")
|
||||
end
|
||||
|
||||
it "does not suggest the author has yanked the gem when using more than one gem, but shows all gems that couldn't be found in the source" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack", "0.9.1"
|
||||
gem "rack_middleware", "1.0"
|
||||
G
|
||||
|
||||
lockfile <<-L
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}
|
||||
specs:
|
||||
rack (0.9.1)
|
||||
rack_middleware (1.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
rack (= 0.9.1)
|
||||
rack_middleware (1.0)
|
||||
L
|
||||
|
||||
bundle :list, :raise_on_error => false
|
||||
|
||||
expect(err).to include("Could not find rack-0.9.1, rack_middleware-1.0 in any of the sources")
|
||||
expect(err).to include("Install missing gems with `bundle install`.")
|
||||
expect(err).to_not include("Your bundle is locked to rack (0.9.1), but that version could not be found in any of the sources listed in your Gemfile.")
|
||||
expect(err).to_not include("If you haven't changed sources, that means the author of rack (0.9.1) has removed it.")
|
||||
expect(err).to_not include("You'll need to update your bundle to a different version of rack (0.9.1) that hasn't been removed in order to install.")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -5,6 +5,7 @@ RSpec.describe "bundle lock with git gems" do
|
|||
build_git "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'foo', :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
end
|
||||
|
|
|
@ -322,6 +322,8 @@ RSpec.describe "the lockfile format" do
|
|||
bundle "config set http://localgemserver.test/ user:pass"
|
||||
|
||||
install_gemfile(<<-G, :artifice => "endpoint_strict_basic_authentication", :quiet => true)
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
|
||||
source "http://localgemserver.test/" do
|
||||
|
||||
end
|
||||
|
@ -333,6 +335,7 @@ RSpec.describe "the lockfile format" do
|
|||
|
||||
lockfile_should_be <<-G
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
GEM
|
||||
|
@ -388,6 +391,7 @@ RSpec.describe "the lockfile format" do
|
|||
git = build_git "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -399,6 +403,7 @@ RSpec.describe "the lockfile format" do
|
|||
foo (1.0)
|
||||
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -455,6 +460,7 @@ RSpec.describe "the lockfile format" do
|
|||
git = build_git "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("foo-1.0")}" do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -468,6 +474,7 @@ RSpec.describe "the lockfile format" do
|
|||
foo (1.0)
|
||||
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -486,6 +493,7 @@ RSpec.describe "the lockfile format" do
|
|||
update_git "foo", :branch => "omg"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}", :branch => "omg"
|
||||
G
|
||||
|
||||
|
@ -498,6 +506,7 @@ RSpec.describe "the lockfile format" do
|
|||
foo (1.0)
|
||||
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -516,6 +525,7 @@ RSpec.describe "the lockfile format" do
|
|||
update_git "foo", :tag => "omg"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}", :tag => "omg"
|
||||
G
|
||||
|
||||
|
@ -528,6 +538,7 @@ RSpec.describe "the lockfile format" do
|
|||
foo (1.0)
|
||||
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -545,6 +556,7 @@ RSpec.describe "the lockfile format" do
|
|||
build_lib "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -555,6 +567,7 @@ RSpec.describe "the lockfile format" do
|
|||
foo (1.0)
|
||||
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -572,6 +585,7 @@ RSpec.describe "the lockfile format" do
|
|||
build_lib "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :path => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -586,6 +600,7 @@ RSpec.describe "the lockfile format" do
|
|||
foo (1.0)
|
||||
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -821,6 +836,7 @@ RSpec.describe "the lockfile format" do
|
|||
build_lib "foo", :path => bundled_app("foo")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "foo" do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -833,6 +849,7 @@ RSpec.describe "the lockfile format" do
|
|||
foo (1.0)
|
||||
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -850,6 +867,7 @@ RSpec.describe "the lockfile format" do
|
|||
build_lib "foo", :path => bundled_app(File.join("..", "foo"))
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "../foo" do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -862,6 +880,7 @@ RSpec.describe "the lockfile format" do
|
|||
foo (1.0)
|
||||
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -879,6 +898,7 @@ RSpec.describe "the lockfile format" do
|
|||
build_lib "foo", :path => bundled_app("foo")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path File.expand_path("../foo", __FILE__) do
|
||||
gem "foo"
|
||||
end
|
||||
|
@ -891,6 +911,7 @@ RSpec.describe "the lockfile format" do
|
|||
foo (1.0)
|
||||
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -908,6 +929,7 @@ RSpec.describe "the lockfile format" do
|
|||
build_lib("foo", :path => tmp.join("foo"))
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gemspec :path => "../foo"
|
||||
G
|
||||
|
||||
|
@ -918,6 +940,7 @@ RSpec.describe "the lockfile format" do
|
|||
foo (1.0)
|
||||
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
|
|
@ -165,6 +165,28 @@ RSpec.describe "major deprecations" do
|
|||
pending "fails with a helpful error", :bundler => "3"
|
||||
end
|
||||
|
||||
context "bundle cache --path" do
|
||||
before do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
G
|
||||
|
||||
bundle "cache --path foo", :raise_on_error => false
|
||||
end
|
||||
|
||||
it "should print a deprecation warning", :bundler => "< 3" do
|
||||
expect(deprecations).to include(
|
||||
"The `--path` flag is deprecated because its semantics are unclear. " \
|
||||
"Use `bundle config cache_path` to configure the path of your cache of gems, " \
|
||||
"and `bundle config path` to configure the path where your gems are installed, " \
|
||||
"and stop using this flag"
|
||||
)
|
||||
end
|
||||
|
||||
pending "fails with a helpful error", :bundler => "3"
|
||||
end
|
||||
|
||||
describe "bundle config" do
|
||||
describe "old list interface" do
|
||||
before do
|
||||
|
@ -311,7 +333,7 @@ RSpec.describe "major deprecations" do
|
|||
end
|
||||
|
||||
it "should print a proper warning, and use gems.rb" do
|
||||
create_file "gems.rb"
|
||||
create_file "gems.rb", "source \"#{file_uri_for(gem_repo1)}\""
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack"
|
||||
|
@ -462,7 +484,7 @@ RSpec.describe "major deprecations" do
|
|||
|
||||
context "when Bundler.setup is run in a ruby script" do
|
||||
before do
|
||||
create_file "gems.rb"
|
||||
create_file "gems.rb", "source \"#{file_uri_for(gem_repo1)}\""
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack", :group => :test
|
||||
|
@ -607,7 +629,7 @@ The :gist git source is deprecated, and will be removed in the future. Add this
|
|||
before do
|
||||
graphviz_version = RUBY_VERSION >= "2.4" ? "1.2.5" : "1.2.4"
|
||||
realworld_system_gems "ruby-graphviz --version #{graphviz_version}"
|
||||
create_file "gems.rb"
|
||||
create_file "gems.rb", "source \"#{file_uri_for(gem_repo1)}\""
|
||||
bundle "viz"
|
||||
end
|
||||
|
||||
|
|
|
@ -213,11 +213,13 @@ G
|
|||
|
||||
it "handles when there is a locked requirement" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
ruby "< 1.8.7"
|
||||
G
|
||||
|
||||
lockfile <<-L
|
||||
GEM
|
||||
remote: #{file_uri_for(gem_repo1)}/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
|
@ -238,6 +240,7 @@ G
|
|||
|
||||
it "handles when there is a requirement in the gemfile" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
ruby ">= 1.8.7"
|
||||
G
|
||||
|
||||
|
@ -247,6 +250,7 @@ G
|
|||
|
||||
it "handles when there are multiple requirements in the gemfile" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
ruby ">= 1.8.7", "< 2.0.0"
|
||||
G
|
||||
|
||||
|
@ -685,6 +689,7 @@ G
|
|||
|
||||
it "copies the .gem file to vendor/cache when ruby version matches" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'rack'
|
||||
|
||||
#{ruby_version_correct}
|
||||
|
@ -708,6 +713,7 @@ G
|
|||
|
||||
it "fails if the ruby version doesn't match" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'rack'
|
||||
|
||||
#{ruby_version_incorrect}
|
||||
|
@ -719,6 +725,7 @@ G
|
|||
|
||||
it "fails if the engine doesn't match" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'rack'
|
||||
|
||||
#{engine_incorrect}
|
||||
|
@ -730,6 +737,7 @@ G
|
|||
|
||||
it "fails if the engine version doesn't match", :jruby do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'rack'
|
||||
|
||||
#{engine_version_incorrect}
|
||||
|
@ -762,6 +770,7 @@ G
|
|||
|
||||
it "copies the .gem file to vendor/cache when ruby version matches" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'rack'
|
||||
|
||||
#{ruby_version_correct}
|
||||
|
@ -785,6 +794,7 @@ G
|
|||
|
||||
it "fails if the ruby version doesn't match" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'rack'
|
||||
|
||||
#{ruby_version_incorrect}
|
||||
|
@ -796,6 +806,7 @@ G
|
|||
|
||||
it "fails if the engine doesn't match" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'rack'
|
||||
|
||||
#{engine_incorrect}
|
||||
|
@ -807,6 +818,7 @@ G
|
|||
|
||||
it "fails if the engine version doesn't match", :jruby do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'rack'
|
||||
|
||||
#{engine_version_incorrect}
|
||||
|
@ -837,6 +849,7 @@ G
|
|||
|
||||
it "activates the correct gem when ruby version matches" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack", "0.9.1"
|
||||
|
||||
#{ruby_version_correct}
|
||||
|
@ -849,6 +862,7 @@ G
|
|||
it "activates the correct gem when ruby version matches any engine", :jruby do
|
||||
system_gems "rack-1.0.0", "rack-0.9.1", :path => default_bundle_path
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack", "0.9.1"
|
||||
|
||||
#{ruby_version_correct_engineless}
|
||||
|
@ -860,6 +874,7 @@ G
|
|||
|
||||
it "fails when the ruby version doesn't match" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack", "0.9.1"
|
||||
|
||||
#{ruby_version_incorrect}
|
||||
|
@ -871,6 +886,7 @@ G
|
|||
|
||||
it "fails when the engine doesn't match" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack", "0.9.1"
|
||||
|
||||
#{engine_incorrect}
|
||||
|
|
|
@ -214,6 +214,7 @@ RSpec.describe "bundler plugin install" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
plugin 'ga-plugin', :git => "#{lib_path("ga-plugin-1.0")}"
|
||||
G
|
||||
|
||||
|
@ -227,6 +228,7 @@ RSpec.describe "bundler plugin install" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
plugin 'ga-plugin', :path => "#{lib_path("ga-plugin-1.0")}"
|
||||
G
|
||||
|
||||
|
|
|
@ -63,6 +63,7 @@ RSpec.describe "Running bin/* commands" do
|
|||
end
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack", :path => "#{lib_path("rack")}"
|
||||
G
|
||||
|
||||
|
|
|
@ -48,6 +48,7 @@ RSpec.describe "bundler/inline#gemfile" do
|
|||
it "requires the gems" do
|
||||
script <<-RUBY
|
||||
gemfile do
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path}" do
|
||||
gem "two"
|
||||
end
|
||||
|
@ -58,6 +59,7 @@ RSpec.describe "bundler/inline#gemfile" do
|
|||
|
||||
script <<-RUBY, :raise_on_error => false
|
||||
gemfile do
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path}" do
|
||||
gem "eleven"
|
||||
end
|
||||
|
@ -139,6 +141,7 @@ RSpec.describe "bundler/inline#gemfile" do
|
|||
require '#{entrypoint}'
|
||||
options = { :ui => Bundler::UI::Shell.new }
|
||||
gemfile(false, options) do
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path}" do
|
||||
gem "two"
|
||||
end
|
||||
|
@ -168,6 +171,7 @@ RSpec.describe "bundler/inline#gemfile" do
|
|||
baz_ref = build_git("baz", "2.0.0").ref_for("HEAD")
|
||||
script <<-RUBY
|
||||
gemfile do
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => #{lib_path("foo-1.0.0").to_s.dump}
|
||||
gem "baz", :git => #{lib_path("baz-2.0.0").to_s.dump}, :ref => #{baz_ref.dump}
|
||||
end
|
||||
|
@ -184,12 +188,14 @@ RSpec.describe "bundler/inline#gemfile" do
|
|||
script <<-RUBY
|
||||
gemfile do
|
||||
path "#{lib_path}" do
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "two"
|
||||
end
|
||||
end
|
||||
|
||||
gemfile do
|
||||
path "#{lib_path}" do
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "four"
|
||||
end
|
||||
end
|
||||
|
@ -367,6 +373,7 @@ RSpec.describe "bundler/inline#gemfile" do
|
|||
|
||||
script <<-RUBY, :dir => tmp("path_without_gemfile")
|
||||
gemfile do
|
||||
source "#{file_uri_for(gem_repo2)}"
|
||||
path "#{lib_path}" do
|
||||
gem "foo", require: false
|
||||
end
|
||||
|
|
|
@ -46,6 +46,7 @@ RSpec.describe "Bundler.require" do
|
|||
end
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path}" do
|
||||
gem "one", :group => :bar, :require => %w[baz qux]
|
||||
gem "two"
|
||||
|
@ -112,6 +113,7 @@ RSpec.describe "Bundler.require" do
|
|||
|
||||
it "raises an exception if a require is specified but the file does not exist" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path}" do
|
||||
gem "two", :require => 'fail'
|
||||
end
|
||||
|
@ -130,6 +132,7 @@ RSpec.describe "Bundler.require" do
|
|||
end
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path}" do
|
||||
gem "faulty"
|
||||
end
|
||||
|
@ -146,6 +149,7 @@ RSpec.describe "Bundler.require" do
|
|||
end
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path}" do
|
||||
gem "loadfuuu"
|
||||
end
|
||||
|
@ -172,6 +176,7 @@ RSpec.describe "Bundler.require" do
|
|||
|
||||
it "requires gem names that are namespaced" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path '#{lib_path}' do
|
||||
gem 'jquery-rails'
|
||||
end
|
||||
|
@ -186,6 +191,8 @@ RSpec.describe "Bundler.require" do
|
|||
s.write "lib/brcrypt.rb", "BCrypt = '1.0.0'"
|
||||
end
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
|
||||
path "#{lib_path}" do
|
||||
gem "bcrypt-ruby"
|
||||
end
|
||||
|
@ -202,6 +209,7 @@ RSpec.describe "Bundler.require" do
|
|||
|
||||
it "does not mangle explicitly given requires" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path}" do
|
||||
gem 'jquery-rails', :require => 'jquery-rails'
|
||||
end
|
||||
|
@ -219,6 +227,7 @@ RSpec.describe "Bundler.require" do
|
|||
end
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path}" do
|
||||
gem "load-fuuu"
|
||||
end
|
||||
|
@ -242,6 +251,7 @@ RSpec.describe "Bundler.require" do
|
|||
end
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path}" do
|
||||
gem "load-fuuu"
|
||||
end
|
||||
|
@ -300,6 +310,7 @@ RSpec.describe "Bundler.require" do
|
|||
|
||||
it "works when the gems are in the Gemfile in the correct order" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path}" do
|
||||
gem "two"
|
||||
gem "one"
|
||||
|
@ -318,6 +329,7 @@ RSpec.describe "Bundler.require" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "multi_gem", :require => "one", :group => :one
|
||||
gem "multi_gem", :require => "two", :group => :two
|
||||
G
|
||||
|
@ -341,6 +353,7 @@ RSpec.describe "Bundler.require" do
|
|||
|
||||
it "fails when the gems are in the Gemfile in the wrong order" do
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
path "#{lib_path}" do
|
||||
gem "one"
|
||||
gem "two"
|
||||
|
@ -358,6 +371,7 @@ RSpec.describe "Bundler.require" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "busted_require"
|
||||
G
|
||||
|
||||
|
@ -396,6 +410,7 @@ RSpec.describe "Bundler.require" do
|
|||
build_git "foo"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
|
|
|
@ -430,6 +430,7 @@ RSpec.describe "Bundler.setup" do
|
|||
build_git "rack", "1.0.0"
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rack", :git => "#{lib_path("rack-1.0.0")}"
|
||||
G
|
||||
end
|
||||
|
@ -857,7 +858,7 @@ end
|
|||
end
|
||||
|
||||
it "should not remove itself from the LOAD_PATH and require a different copy of 'bundler/setup'" do
|
||||
install_gemfile ""
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
|
||||
ruby <<-R, :env => { "GEM_PATH" => symlinked_gem_home }
|
||||
TracePoint.trace(:class) do |tp|
|
||||
|
@ -906,6 +907,7 @@ end
|
|||
FileUtils.rm(File.join(path, "foo.gemspec"))
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'foo', '1.2.3', :path => 'vendor/foo'
|
||||
G
|
||||
|
||||
|
@ -926,6 +928,7 @@ end
|
|||
FileUtils.rm(File.join(absolute_path, "foo.gemspec"))
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'foo', '1.2.3', :path => '#{relative_path}'
|
||||
G
|
||||
|
||||
|
@ -944,6 +947,7 @@ end
|
|||
build_git "no_gemspec", :gemspec => false
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "no_gemspec", "1.0", :git => "#{lib_path("no_gemspec-1.0")}"
|
||||
G
|
||||
end
|
||||
|
@ -1046,6 +1050,7 @@ end
|
|||
end
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "bar", :git => "#{lib_path("bar-1.0")}"
|
||||
G
|
||||
end
|
||||
|
@ -1066,7 +1071,6 @@ end
|
|||
|
||||
expect(err.lines.map(&:chomp)).to include(
|
||||
a_string_starting_with("[!] There was an error while loading `bar.gemspec`:"),
|
||||
a_string_starting_with("Does it try to require a relative path? That's been removed in Ruby 1.9."),
|
||||
" # from #{default_bundle_path "bundler", "gems", "bar-1.0-#{ref[0, 12]}", "bar.gemspec"}:1",
|
||||
" > require 'foobarbaz'"
|
||||
)
|
||||
|
@ -1093,6 +1097,7 @@ end
|
|||
describe "when Bundler is bundled" do
|
||||
it "doesn't blow up" do
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "bundler", :path => "#{root}"
|
||||
G
|
||||
|
||||
|
@ -1224,7 +1229,7 @@ end
|
|||
|
||||
describe "with gemified standard libraries" do
|
||||
it "does not load Psych" do
|
||||
gemfile ""
|
||||
gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
ruby <<-RUBY
|
||||
require '#{entrypoint}/setup'
|
||||
puts defined?(Psych::VERSION) ? Psych::VERSION : "undefined"
|
||||
|
@ -1237,7 +1242,7 @@ end
|
|||
end
|
||||
|
||||
it "does not load openssl" do
|
||||
install_gemfile ""
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
ruby <<-RUBY
|
||||
require "bundler/setup"
|
||||
puts defined?(OpenSSL) || "undefined"
|
||||
|
@ -1296,13 +1301,13 @@ end
|
|||
RUBY
|
||||
|
||||
it "activates no gems with -rbundler/setup" do
|
||||
install_gemfile ""
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
ruby code, :env => { "RUBYOPT" => activation_warning_hack_rubyopt + " -rbundler/setup" }
|
||||
expect(out).to eq("{}")
|
||||
end
|
||||
|
||||
it "activates no gems with bundle exec" do
|
||||
install_gemfile ""
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
create_file("script.rb", code)
|
||||
bundle "exec ruby ./script.rb", :env => { "RUBYOPT" => activation_warning_hack_rubyopt }
|
||||
expect(out).to eq("{}")
|
||||
|
@ -1311,7 +1316,7 @@ end
|
|||
it "activates no gems with bundle exec that is loaded" do
|
||||
skip "not executable" if Gem.win_platform?
|
||||
|
||||
install_gemfile ""
|
||||
install_gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
create_file("script.rb", "#!/usr/bin/env ruby\n\n#{code}")
|
||||
FileUtils.chmod(0o777, bundled_app("script.rb"))
|
||||
bundle "exec ./script.rb", :artifice => nil, :env => { "RUBYOPT" => activation_warning_hack_rubyopt }
|
||||
|
|
|
@ -8,7 +8,7 @@ RSpec.describe "Bundler.with_env helpers" do
|
|||
|
||||
def build_bundler_context(options = {})
|
||||
bundle "config set path vendor/bundle"
|
||||
gemfile ""
|
||||
gemfile "source \"#{file_uri_for(gem_repo1)}\""
|
||||
bundle "install", options
|
||||
end
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ RSpec.describe "bundle update" do
|
|||
update_git "foo", :branch => "omg"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("foo-1.0")}", :branch => "omg" do
|
||||
gem 'foo'
|
||||
end
|
||||
|
@ -28,6 +29,7 @@ RSpec.describe "bundle update" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rails", :git => "#{file_uri_for(lib_path("rails"))}"
|
||||
G
|
||||
|
||||
|
@ -40,6 +42,7 @@ RSpec.describe "bundle update" do
|
|||
update_git "foo", :branch => "omg", :path => lib_path("foo")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
git "#{lib_path("foo")}", :branch => "omg" do
|
||||
gem 'foo'
|
||||
end
|
||||
|
@ -61,6 +64,7 @@ RSpec.describe "bundle update" do
|
|||
end
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{file_uri_for(lib_path("foo"))}"
|
||||
gem "bar"
|
||||
G
|
||||
|
@ -79,12 +83,14 @@ RSpec.describe "bundle update" do
|
|||
build_git "foo", :path => lib_path("foo_two")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", "1.0", :git => "#{file_uri_for(lib_path("foo_one"))}"
|
||||
G
|
||||
|
||||
FileUtils.rm_rf lib_path("foo_one")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", "1.0", :git => "#{file_uri_for(lib_path("foo_two"))}"
|
||||
G
|
||||
|
||||
|
@ -100,6 +106,7 @@ RSpec.describe "bundle update" do
|
|||
update_git "foo", :push => "master"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'foo', :git => "#{@remote.path}"
|
||||
G
|
||||
|
||||
|
@ -108,6 +115,7 @@ RSpec.describe "bundle update" do
|
|||
update_git "foo", :push => "fubar"
|
||||
|
||||
gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem 'foo', :git => "#{@remote.path}", :tag => "fubar"
|
||||
G
|
||||
|
||||
|
@ -183,6 +191,7 @@ RSpec.describe "bundle update" do
|
|||
build_git "foo", "1.0"
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "foo", :git => "#{file_uri_for(lib_path("foo-1.0"))}"
|
||||
G
|
||||
|
||||
|
@ -214,6 +223,7 @@ RSpec.describe "bundle update" do
|
|||
build_git "rails", "2.3.2", :path => lib_path("rails")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "rails", :git => "#{file_uri_for(lib_path("rails"))}"
|
||||
G
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ RSpec.describe "path sources" do
|
|||
build_lib "activesupport", "2.3.5", :path => lib_path("rails/activesupport")
|
||||
|
||||
install_gemfile <<-G
|
||||
source "#{file_uri_for(gem_repo1)}"
|
||||
gem "activesupport", :path => "#{lib_path("rails/activesupport")}"
|
||||
G
|
||||
|
||||
|
|
Binary file not shown.
|
@ -52,32 +52,28 @@ require 'rubygems/mock_gem_ui'
|
|||
module Gem
|
||||
|
||||
##
|
||||
# Allows setting the gem path searcher. This method is available when
|
||||
# requiring 'rubygems/test_case'
|
||||
# Allows setting the gem path searcher.
|
||||
|
||||
def self.searcher=(searcher)
|
||||
@searcher = searcher
|
||||
end
|
||||
|
||||
##
|
||||
# Allows toggling Windows behavior. This method is available when requiring
|
||||
# 'rubygems/test_case'
|
||||
# Allows toggling Windows behavior.
|
||||
|
||||
def self.win_platform=(val)
|
||||
@@win_platform = val
|
||||
end
|
||||
|
||||
##
|
||||
# Allows setting path to Ruby. This method is available when requiring
|
||||
# 'rubygems/test_case'
|
||||
# Allows setting path to Ruby.
|
||||
|
||||
def self.ruby=(ruby)
|
||||
@ruby = ruby
|
||||
end
|
||||
|
||||
##
|
||||
# When rubygems/test_case is required the default user interaction is a
|
||||
# MockGemUi.
|
||||
# Sets the default user interaction to a MockGemUi.
|
||||
|
||||
module DefaultUserInteraction
|
||||
@ui = Gem::MockGemUi.new
|
||||
|
@ -88,8 +84,7 @@ require "rubygems/command"
|
|||
|
||||
class Gem::Command
|
||||
##
|
||||
# Allows resetting the hash of specific args per command. This method is
|
||||
# available when requiring 'rubygems/test_case'
|
||||
# Allows resetting the hash of specific args per command.
|
||||
|
||||
def self.specific_extra_args_hash=(value)
|
||||
@specific_extra_args_hash = value
|
||||
|
@ -111,8 +106,6 @@ class Gem::TestCase < Test::Unit::TestCase
|
|||
|
||||
attr_accessor :uri # :nodoc:
|
||||
|
||||
TEST_PATH = ENV.fetch('RUBYGEMS_TEST_PATH', File.expand_path('../../../test/rubygems', __FILE__))
|
||||
|
||||
def assert_activate(expected, *specs)
|
||||
specs.each do |spec|
|
||||
case spec
|
||||
|
@ -1304,7 +1297,7 @@ Also, a list:
|
|||
end
|
||||
|
||||
def ruby_with_rubygems_in_load_path
|
||||
[Gem.ruby, "-I", File.expand_path("..", __dir__)]
|
||||
[Gem.ruby, "-I", File.expand_path("../../lib", __dir__)]
|
||||
end
|
||||
|
||||
def with_clean_path_to_ruby
|
||||
|
@ -1335,8 +1328,8 @@ Also, a list:
|
|||
end
|
||||
end
|
||||
|
||||
@@good_rake = "#{rubybin} #{escape_path(TEST_PATH, 'good_rake.rb')}"
|
||||
@@bad_rake = "#{rubybin} #{escape_path(TEST_PATH, 'bad_rake.rb')}"
|
||||
@@good_rake = "#{rubybin} #{escape_path(__dir__, 'good_rake.rb')}"
|
||||
@@bad_rake = "#{rubybin} #{escape_path(__dir__, 'bad_rake.rb')}"
|
||||
|
||||
##
|
||||
# Construct a new Gem::Dependency.
|
||||
|
@ -1523,12 +1516,12 @@ Also, a list:
|
|||
|
||||
def self.cert_path(cert_name)
|
||||
if 32 == (Time.at(2**32) rescue 32)
|
||||
cert_file = "#{TEST_PATH}/#{cert_name}_cert_32.pem"
|
||||
cert_file = "#{__dir__}/#{cert_name}_cert_32.pem"
|
||||
|
||||
return cert_file if File.exist? cert_file
|
||||
end
|
||||
|
||||
"#{TEST_PATH}/#{cert_name}_cert.pem"
|
||||
"#{__dir__}/#{cert_name}_cert.pem"
|
||||
end
|
||||
|
||||
##
|
||||
|
@ -1546,7 +1539,7 @@ Also, a list:
|
|||
# Returns the path to the key named +key_name+ from <tt>test/rubygems</tt>
|
||||
|
||||
def self.key_path(key_name)
|
||||
"#{TEST_PATH}/#{key_name}_key.pem"
|
||||
"#{__dir__}/#{key_name}_key.pem"
|
||||
end
|
||||
|
||||
# :stopdoc:
|
||||
|
@ -1607,4 +1600,4 @@ class Object
|
|||
end
|
||||
end
|
||||
|
||||
require 'rubygems/test_utilities'
|
||||
require_relative 'utilities'
|
|
@ -1,5 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
require 'rubygems/test_case'
|
||||
require_relative 'helper'
|
||||
require 'rubygems/installer'
|
||||
|
||||
class Gem::Installer
|
|
@ -1,5 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
require 'rubygems/test_case'
|
||||
require_relative '../helper'
|
||||
require 'rubygems/package'
|
||||
|
||||
##
|
|
@ -1,5 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
require 'rubygems/test_case'
|
||||
require_relative 'helper'
|
||||
require 'net/http'
|
||||
require 'rubygems/openssl'
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
require 'rubygems/test_case'
|
||||
require_relative 'helper'
|
||||
require 'rubygems'
|
||||
require 'shellwords'
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
require 'rubygems/test_case'
|
||||
require_relative 'helper'
|
||||
require 'rubygems/deprecate'
|
||||
|
||||
class TestDeprecate < Gem::TestCase
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# coding: US-ASCII
|
||||
require 'rubygems/test_case'
|
||||
require_relative 'helper'
|
||||
require 'rubygems'
|
||||
require 'rubygems/command'
|
||||
require 'rubygems/installer'
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
require 'rubygems/test_case'
|
||||
require_relative 'helper'
|
||||
require 'rubygems/available_set'
|
||||
require 'rubygems/security'
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
require 'rubygems/test_case'
|
||||
require_relative 'helper'
|
||||
|
||||
class TestGemBundlerVersionFinder < Gem::TestCase
|
||||
def setup
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
require 'rubygems/test_case'
|
||||
require_relative 'helper'
|
||||
require 'rubygems/command'
|
||||
|
||||
class Gem::Command
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
require 'rubygems/test_case'
|
||||
require_relative 'helper'
|
||||
require 'rubygems/command_manager'
|
||||
|
||||
class TestGemCommandManager < Gem::TestCase
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
require 'rubygems/test_case'
|
||||
require_relative 'helper'
|
||||
require 'rubygems/commands/build_command'
|
||||
require 'rubygems/package'
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
require 'rubygems/test_case'
|
||||
require_relative 'helper'
|
||||
require 'rubygems/commands/cert_command'
|
||||
|
||||
unless Gem::HAVE_OPENSSL
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
require 'rubygems/test_case'
|
||||
require_relative 'helper'
|
||||
require 'rubygems/commands/check_command'
|
||||
|
||||
class TestGemCommandsCheckCommand < Gem::TestCase
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
require 'rubygems/test_case'
|
||||
require_relative 'helper'
|
||||
require 'rubygems/commands/cleanup_command'
|
||||
require 'rubygems/installer'
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue