зеркало из https://github.com/github/ruby.git
* lib/rubygems.rb: Search for gem deps file up the directory tree.
* test/rubygems/test_gem.rb: Test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38097 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
18a3774438
Коммит
5db8f99943
|
@ -1,3 +1,8 @@
|
|||
Sat Dec 1 09:42:13 2012 Eric Hodel <drbrain@segment7.net>
|
||||
|
||||
* lib/rubygems.rb: Search for gem deps file up the directory tree.
|
||||
* test/rubygems/test_gem.rb: Test for above.
|
||||
|
||||
Sat Dec 1 09:33:32 2012 Eric Hodel <drbrain@segment7.net>
|
||||
|
||||
* test/runner.rb: Set GEM_HOME, GEM_PATH and GEM_SKIP to empty set.
|
||||
|
|
|
@ -187,9 +187,28 @@ module Gem
|
|||
path = path.dup.untaint
|
||||
|
||||
if path == "-"
|
||||
path = GEM_DEP_FILES.find { |f| File.exists?(f) }
|
||||
here = Dir.pwd
|
||||
start = here
|
||||
|
||||
return unless path
|
||||
begin
|
||||
while true
|
||||
path = GEM_DEP_FILES.find { |f| File.exists?(f) }
|
||||
|
||||
if path
|
||||
path = File.join here, path
|
||||
break
|
||||
end
|
||||
|
||||
Dir.chdir ".."
|
||||
|
||||
# If we're at a toplevel, stop.
|
||||
return if Dir.pwd == here
|
||||
|
||||
here = Dir.pwd
|
||||
end
|
||||
ensure
|
||||
Dir.chdir start
|
||||
end
|
||||
end
|
||||
|
||||
return unless File.exists? path
|
||||
|
|
|
@ -1402,6 +1402,41 @@ class TestGem < Gem::TestCase
|
|||
assert_equal '["a-1", "b-1", "c-1"]', out.strip
|
||||
end
|
||||
|
||||
def test_looks_for_gemdeps_files_automatically_on_start_in_parent_dir
|
||||
util_clear_gems
|
||||
|
||||
a = new_spec "a", "1", nil, "lib/a.rb"
|
||||
b = new_spec "b", "1", nil, "lib/b.rb"
|
||||
c = new_spec "c", "1", nil, "lib/c.rb"
|
||||
|
||||
install_specs a, b, c
|
||||
|
||||
path = File.join @tempdir, "gem.deps.rb"
|
||||
|
||||
File.open path, "w" do |f|
|
||||
f.puts "gem 'a'"
|
||||
f.puts "gem 'b'"
|
||||
f.puts "gem 'c'"
|
||||
end
|
||||
|
||||
path = File.join(@tempdir, "gd-tmp")
|
||||
install_gem a, :install_dir => path
|
||||
install_gem b, :install_dir => path
|
||||
install_gem c, :install_dir => path
|
||||
|
||||
ENV['GEM_PATH'] = path
|
||||
ENV['RUBYGEMS_GEMDEPS'] = "-"
|
||||
|
||||
Dir.mkdir "sub1"
|
||||
out = Dir.chdir "sub1" do
|
||||
`#{Gem.ruby.untaint} -I #{LIB_PATH.untaint} -rubygems -e "p Gem.loaded_specs.values.map(&:full_name).sort"`
|
||||
end
|
||||
|
||||
Dir.rmdir "sub1"
|
||||
|
||||
assert_equal '["a-1", "b-1", "c-1"]', out.strip
|
||||
end
|
||||
|
||||
def with_plugin(path)
|
||||
test_plugin_path = File.expand_path("test/rubygems/plugin/#{path}",
|
||||
@@project_dir)
|
||||
|
|
Загрузка…
Ссылка в новой задаче