1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* 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:
drbrain 2012-12-01 00:42:36 +00:00
parent 18a3774438
commit 5db8f99943
3 changed files with 61 additions and 2 deletions

View file

@ -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> 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. * test/runner.rb: Set GEM_HOME, GEM_PATH and GEM_SKIP to empty set.

View file

@ -187,9 +187,28 @@ module Gem
path = path.dup.untaint path = path.dup.untaint
if path == "-" if path == "-"
here = Dir.pwd
start = here
begin
while true
path = GEM_DEP_FILES.find { |f| File.exists?(f) } path = GEM_DEP_FILES.find { |f| File.exists?(f) }
return unless path 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 end
return unless File.exists? path return unless File.exists? path

View file

@ -1402,6 +1402,41 @@ class TestGem < Gem::TestCase
assert_equal '["a-1", "b-1", "c-1"]', out.strip assert_equal '["a-1", "b-1", "c-1"]', out.strip
end 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) def with_plugin(path)
test_plugin_path = File.expand_path("test/rubygems/plugin/#{path}", test_plugin_path = File.expand_path("test/rubygems/plugin/#{path}",
@@project_dir) @@project_dir)