aboutsummaryrefslogtreecommitdiffstats
path: root/test/rubygems/test_gem_server.rb
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-11-10 17:51:40 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-11-10 17:51:40 +0000
commit4f6779bac7b4e294bc473782d60cbd071f0d0f8d (patch)
treed37b54da20f8c0adf2d98e810aacc8259b0602ff /test/rubygems/test_gem_server.rb
parent31d355aaa9436e2b24efd5e6501cabd876267c46 (diff)
downloadruby-4f6779bac7b4e294bc473782d60cbd071f0d0f8d.tar.gz
* lib/rubygems: Update to RubyGems master 4bdc4f2. Important changes
in this commit: RubyGems now chooses the test server port reliably. Patch by akr. Partial implementation of bundler's Gemfile format. Refactorings to improve the new resolver. Fixes bugs in the resolver. * test/rubygems: Tests for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43643 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems/test_gem_server.rb')
-rw-r--r--test/rubygems/test_gem_server.rb106
1 files changed, 105 insertions, 1 deletions
diff --git a/test/rubygems/test_gem_server.rb b/test/rubygems/test_gem_server.rb
index d50d3525ff..bf30399db2 100644
--- a/test/rubygems/test_gem_server.rb
+++ b/test/rubygems/test_gem_server.rb
@@ -85,6 +85,30 @@ class TestGemServer < Gem::TestCase
Marshal.load(@res.body)
end
+ def test_latest_specs_gemdirs
+ data = StringIO.new "GET /latest_specs.#{Gem.marshal_version} HTTP/1.0\r\n\r\n"
+ dir = "#{@gemhome}2"
+
+ spec = quick_spec 'z', 9
+
+ specs_dir = File.join dir, 'specifications'
+ FileUtils.mkdir_p specs_dir
+
+ open File.join(specs_dir, spec.spec_name), 'w' do |io|
+ io.write spec.to_ruby
+ end
+
+ server = Gem::Server.new dir, process_based_port, false
+
+ @req.parse data
+
+ server.latest_specs @req, @res
+
+ assert_equal 200, @res.status
+
+ assert_equal [['z', v(9), Gem::Platform::RUBY]], Marshal.load(@res.body)
+ end
+
def test_latest_specs_gz
data = StringIO.new "GET /latest_specs.#{Gem.marshal_version}.gz HTTP/1.0\r\n\r\n"
@req.parse data
@@ -120,8 +144,41 @@ class TestGemServer < Gem::TestCase
assert_equal 2, @server.server.listeners.length
end
+ def test_quick_gemdirs
+ data = StringIO.new "GET /quick/Marshal.4.8/z-9.gemspec.rz HTTP/1.0\r\n\r\n"
+ dir = "#{@gemhome}2"
+
+ server = Gem::Server.new dir, process_based_port, false
+
+ @req.parse data
+
+ server.quick @req, @res
+
+ assert_equal 404, @res.status
+
+ spec = quick_spec 'z', 9
+
+ specs_dir = File.join dir, 'specifications'
+
+ FileUtils.mkdir_p specs_dir
+
+ open File.join(specs_dir, spec.spec_name), 'w' do |io|
+ io.write spec.to_ruby
+ end
+
+ data.rewind
+
+ req = WEBrick::HTTPRequest.new :Logger => nil
+ res = WEBrick::HTTPResponse.new :HTTPVersion => '1.0'
+ req.parse data
+
+ server.quick req, res
+
+ assert_equal 200, res.status
+ end
+
def test_quick_missing
- data = StringIO.new "GET /quick/z-9.gemspec.rz HTTP/1.0\r\n\r\n"
+ data = StringIO.new "GET /quick/Marshal.4.8/z-9.gemspec.rz HTTP/1.0\r\n\r\n"
@req.parse data
@server.quick @req, @res
@@ -188,6 +245,29 @@ class TestGemServer < Gem::TestCase
assert_equal 'text/html', @res['content-type']
end
+ def test_root_gemdirs
+ data = StringIO.new "GET / HTTP/1.0\r\n\r\n"
+ dir = "#{@gemhome}2"
+
+ spec = quick_spec 'z', 9
+
+ specs_dir = File.join dir, 'specifications'
+ FileUtils.mkdir_p specs_dir
+
+ open File.join(specs_dir, spec.spec_name), 'w' do |io|
+ io.write spec.to_ruby
+ end
+
+ server = Gem::Server.new dir, process_based_port, false
+
+ @req.parse data
+
+ server.root @req, @res
+
+ assert_equal 200, @res.status
+ assert_match 'z 9', @res.body
+ end
+
def test_specs
data = StringIO.new "GET /specs.#{Gem.marshal_version} HTTP/1.0\r\n\r\n"
@req.parse data
@@ -203,6 +283,30 @@ class TestGemServer < Gem::TestCase
Marshal.load(@res.body)
end
+ def test_specs_gemdirs
+ data = StringIO.new "GET /specs.#{Gem.marshal_version} HTTP/1.0\r\n\r\n"
+ dir = "#{@gemhome}2"
+
+ spec = quick_spec 'z', 9
+
+ specs_dir = File.join dir, 'specifications'
+ FileUtils.mkdir_p specs_dir
+
+ open File.join(specs_dir, spec.spec_name), 'w' do |io|
+ io.write spec.to_ruby
+ end
+
+ server = Gem::Server.new dir, process_based_port, false
+
+ @req.parse data
+
+ server.specs @req, @res
+
+ assert_equal 200, @res.status
+
+ assert_equal [['z', v(9), Gem::Platform::RUBY]], Marshal.load(@res.body)
+ end
+
def test_specs_gz
data = StringIO.new "GET /specs.#{Gem.marshal_version}.gz HTTP/1.0\r\n\r\n"
@req.parse data