mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-08 22:45:43 +00:00
85 lines
2.8 KiB
Diff
85 lines
2.8 KiB
Diff
|
From f5bbf838c8b13369a61c6756355305388df5824f Mon Sep 17 00:00:00 2001
|
||
|
From: Tim Moore <tmoore@incrementalism.net>
|
||
|
Date: Tue, 31 Dec 2013 17:39:45 +1100
|
||
|
Subject: [PATCH] Fix installing gem from file without dependencies.
|
||
|
|
||
|
Commit 9437ccc fixed the ability to install remote gems that was accidentally
|
||
|
broken by d97fba1, but in the process accidentally broke installing from local
|
||
|
files.
|
||
|
|
||
|
This also changes the order to check for local first, to avoid unnecessary
|
||
|
network requests in the case where the gem is local.
|
||
|
|
||
|
Closes #760.
|
||
|
---
|
||
|
lib/rubygems/commands/install_command.rb | 20 ++++++++++++--------
|
||
|
test/rubygems/test_gem_commands_install_command.rb | 14 ++++++++++++++
|
||
|
2 files changed, 26 insertions(+), 8 deletions(-)
|
||
|
|
||
|
diff --git a/lib/rubygems/commands/install_command.rb b/lib/rubygems/commands/install_command.rb
|
||
|
index 4485eb1..8219eef 100644
|
||
|
--- a/lib/rubygems/commands/install_command.rb
|
||
|
+++ b/lib/rubygems/commands/install_command.rb
|
||
|
@@ -228,7 +228,18 @@ to write the specification by hand. For example:
|
||
|
def install_gem_without_dependencies name, req # :nodoc:
|
||
|
gem = nil
|
||
|
|
||
|
- if remote? then
|
||
|
+ if local? then
|
||
|
+ if name =~ /\.gem$/ and File.file? name then
|
||
|
+ source = Gem::Source::SpecificFile.new name
|
||
|
+ spec = source.spec
|
||
|
+ else
|
||
|
+ source = Gem::Source::Local.new
|
||
|
+ spec = source.find_gem name, req
|
||
|
+ end
|
||
|
+ gem = source.download spec if spec
|
||
|
+ end
|
||
|
+
|
||
|
+ if remote? and not gem then
|
||
|
dependency = Gem::Dependency.new name, req
|
||
|
dependency.prerelease = options[:prerelease]
|
||
|
|
||
|
@@ -236,13 +247,6 @@ to write the specification by hand. For example:
|
||
|
gem = fetcher.download_to_cache dependency
|
||
|
end
|
||
|
|
||
|
- if local? and not gem then
|
||
|
- source = Gem::Source::Local.new
|
||
|
- spec = source.find_gem name, req
|
||
|
-
|
||
|
- gem = source.download spec
|
||
|
- end
|
||
|
-
|
||
|
inst = Gem::Installer.new gem, options
|
||
|
inst.install
|
||
|
|
||
|
diff --git a/test/rubygems/test_gem_commands_install_command.rb b/test/rubygems/test_gem_commands_install_command.rb
|
||
|
index 76ea6b4..a5917c0 100644
|
||
|
--- a/test/rubygems/test_gem_commands_install_command.rb
|
||
|
+++ b/test/rubygems/test_gem_commands_install_command.rb
|
||
|
@@ -560,6 +560,20 @@ ERROR: Possible alternatives: non_existent_with_hint
|
||
|
assert_equal %w[a-2], @cmd.installed_specs.map { |spec| spec.full_name }
|
||
|
end
|
||
|
|
||
|
+ def test_install_gem_ignore_dependencies_specific_file
|
||
|
+ spec = quick_spec 'a', 2
|
||
|
+
|
||
|
+ util_build_gem spec
|
||
|
+
|
||
|
+ FileUtils.mv spec.cache_file, @tempdir
|
||
|
+
|
||
|
+ @cmd.options[:ignore_dependencies] = true
|
||
|
+
|
||
|
+ @cmd.install_gem File.join(@tempdir, spec.file_name), nil
|
||
|
+
|
||
|
+ assert_equal %w[a-2], @cmd.installed_specs.map { |spec| spec.full_name }
|
||
|
+ end
|
||
|
+
|
||
|
def test_parses_requirement_from_gemname
|
||
|
spec_fetcher do |fetcher|
|
||
|
fetcher.gem 'a', 2
|
||
|
--
|
||
|
1.8.5.2
|
||
|
|