2 # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4 # See LICENSE.txt for permissions.
8 require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
9 require File.join(File.expand_path(File.dirname(__FILE__)), 'simple_gem')
10 require 'rubygems/format'
12 class TestGemFormat < RubyGemTestCase
17 @simple_gem = SIMPLE_GEM
20 def test_from_file_by_path
23 gems = Dir[File.join(@gemhome, 'cache', '*.gem')]
25 names = [@a1, @a2, @a_evil9, @b2, @c1_2, @pl1].map do |spec|
29 gems_n_names = gems.sort.zip names
31 gems_n_names.each do |gemfile, name|
32 spec = Gem::Format.from_file_by_path(gemfile).spec
34 assert_equal name, spec.original_name
38 def test_from_file_by_path_nonexistent
39 assert_raise Gem::Exception do
40 Gem::Format.from_file_by_path '/nonexistent'
44 def test_from_io_garbled
45 e = assert_raise Gem::Package::FormatError do
47 Gem::Format.from_io(StringIO.new(@simple_gem.upcase))
50 assert_equal 'No metadata found!', e.message
52 e = assert_raise Gem::Package::FormatError do
54 Gem::Format.from_io(StringIO.new(@simple_gem.reverse))
57 assert_equal 'No metadata found!', e.message
59 e = assert_raise Gem::Package::FormatError do
60 # This was intentionally screws up YAML parsing.
61 Gem::Format.from_io(StringIO.new(@simple_gem.gsub(/:/, "boom")))
64 assert_equal 'No metadata found!', e.message