diff options
Diffstat (limited to 'trunk/test/rubygems')
74 files changed, 0 insertions, 12556 deletions
diff --git a/trunk/test/rubygems/bogussources.rb b/trunk/test/rubygems/bogussources.rb deleted file mode 100644 index 008e3a1de5..0000000000 --- a/trunk/test/rubygems/bogussources.rb +++ /dev/null @@ -1,8 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'rubygems' -Gem.use_paths("test/mock/gems") diff --git a/trunk/test/rubygems/data/gem-private_key.pem b/trunk/test/rubygems/data/gem-private_key.pem deleted file mode 100644 index 3e4be4cd9a..0000000000 --- a/trunk/test/rubygems/data/gem-private_key.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpQIBAAKCAQEAz0tTOtsJuHDKAEXrQx0f6DUEzBEUTSLR1fk0iEHsY9rDCQxm -sw5Bf2UnVhdD03B4/XzIK+pat2CMQc37/vLIBuVgS7g/fzatGiM0m5rAHtycr0XU -8Ek6zjx4iSv70OLjybY+/utHCEc838awGDMCFR21jYxgATPVwqAIyasvwbKh/Vhw -uErFPqT9G8BKTHsaX+H+ADIRH001OmWkjB6EyjF05114kNMa0+2C7daV9hoBL3md -hCt6zOGcapl/9LkGxhcNEUB/So16V1ZQldg9macGyWktyNTSfctlF+f8okAmicG3 -XIwaW8UTmjFCmvDs/h1R/uKpe2IOHz87n29d2QIDAQABAoIBAQCR6n/nyg+JmTtX -/d+hGns/RTLfQpZ7xarXZ9gmoeD4WSE42VXhbIOGXXnXDAFecKl6Jb/xycGZm4if -OZPM3rEWyZeDNWrc7WvkHiwF7GSYVMqmRg2iJqoSSla+mAtl+pBFiNfHMW6K0Tp0 -erOyFRW+L2+A9/MMZaRun6AP9URkn0jz2kwmMFf+6szmzVn6fPFzZDRI+hEeaDmi -LBzSrfrddrIBX+xGEoBj6RmfnKBCSUVSSxOauYjd4mVjVYxvMH4SV1hXDUS5GPl5 -MbCiBb7bpNIg/8ljMoRrQiqk0XwwS7MaCqPtMhUtpSmC/zSjAfmoN7AOc/Xh69cQ -OCMNZH9BAoGBAPBlsuuU6fg0gVTKDdR12jHx03uRRt8/nPxHnpJkZCIh9XKh1LtY -bkumi9HZpp3mzDiaGg/rwfCwNckKx8NLhICLgkric6ClrKftxTu6C8tBAb5YDi6u -74KYnV8lMY/unzBtIloPgM3uluS292POmrWZpKwhvHLD71MewzMor5HFAoGBANy/ -mwsBs8i3Gzk8Twjq8effhPpE7kpxhC7bhwmjX3q41EjQWDT8M6xb1P9dRSsCIebi -kqP1yhl27dJpA8r5WqE/z89xhBvObAGRv41eXxOI0LaH2k5lJQrUeSC+51dy+BEB -T3GXD4C5ezZHQ8Wz/oL73uikrfhD+AqOZT2YbMEFAoGBAJvWEWpOGm3f+4bvhI+Z -5lxCG4oa3wqRvj58XvsfQRovUWGCLtlTtgwsZq8enLf3iaOXohV4Czzvva4Z4u1i -4v5BcbEBo1scixRBOn5BWKvl9C9j/a2dkX3jWQD4p2xaj69gz8f6DNFyPTb+tNhq -cjgO5YUASZ1MDrSfWIKteULRAoGAZkZv8x2KyofrmQ0UITGZerDYz4t4TA1kDMGx -QwnqhtVzpXjCJWpkFotFmDsCfPaz9mErR8PtKvcrIL1/AF+fWe5Sve3+I1P0PpXk -hf8fVdGhwbAXuRKrouTmagGI9b9Sp65PvHUcvasyJufFwqeuV8mScX87CzeSiHGI -/ozMdnECgYEAq4+losrhe0DEmiC9zVPvwRXjbSixDsSJxHfOcqIsZqhUgBiZ4TJD -SrkuukrMZib6BAD+PtCJS1TBbJyyvL3QecizhHSIh3ZnT0HnaRPatLEYmU65+3kE -kTqL4ik92bJnnWowy677sydl1lzBJDVa9ZlTs7BFSd8y/0DZaUxGg2I= ------END RSA PRIVATE KEY----- diff --git a/trunk/test/rubygems/data/gem-public_cert.pem b/trunk/test/rubygems/data/gem-public_cert.pem deleted file mode 100644 index 885bf7f369..0000000000 --- a/trunk/test/rubygems/data/gem-public_cert.pem +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMREwDwYDVQQDDAhydWJ5 -Z2VtczEXMBUGCgmSJomT8ixkARkWB2V4YW1wbGUxEzARBgoJkiaJk/IsZAEZFgNj -b20wHhcNMDcwODAyMDMyNTQyWhcNMDgwODAxMDMyNTQyWjBBMREwDwYDVQQDDAhy -dWJ5Z2VtczEXMBUGCgmSJomT8ixkARkWB2V4YW1wbGUxEzARBgoJkiaJk/IsZAEZ -FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPS1M62wm4cMoA -RetDHR/oNQTMERRNItHV+TSIQexj2sMJDGazDkF/ZSdWF0PTcHj9fMgr6lq3YIxB -zfv+8sgG5WBLuD9/Nq0aIzSbmsAe3JyvRdTwSTrOPHiJK/vQ4uPJtj7+60cIRzzf -xrAYMwIVHbWNjGABM9XCoAjJqy/BsqH9WHC4SsU+pP0bwEpMexpf4f4AMhEfTTU6 -ZaSMHoTKMXTnXXiQ0xrT7YLt1pX2GgEveZ2EK3rM4ZxqmX/0uQbGFw0RQH9KjXpX -VlCV2D2ZpwbJaS3I1NJ9y2UX5/yiQCaJwbdcjBpbxROaMUKa8Oz+HVH+4ql7Yg4f -Pzufb13ZAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW -BBRYTAoj4cn8CWZMHFnHGQgoO5jyFTANBgkqhkiG9w0BAQUFAAOCAQEATRrJC05l -dOmx67Sy3bU+AVXkOr7B9nn2Myqo9uSIAncPoElN6aHr/Q8wOOjtok4r0JcHPe1e -eotDCZUE1Jkl13Tpv26rOfOOUHtGlyAIAtpsUGOraaJkSut4WKLr1/KckyAAEtgP -c13A0s0mEiWFRuYxIdEi54561pTT2qQBE/DUPGoYD5rUg9XYAlSovMMwG99Oca7L -cI6vCymr1bzzddExoywBNOy0fbBT62I3ICBGbH5yOVVKVmlxeo2Zp10FCj0kDrnq -OuMJSDr5I2XPYqoC+W4YSbwn55o2jGIUX1lOq2Hvj4tFgSxlnJZn0tUhBfR3gSOn -IFnrqu8PlZsLFw== ------END CERTIFICATE----- diff --git a/trunk/test/rubygems/fake_certlib/openssl.rb b/trunk/test/rubygems/fake_certlib/openssl.rb deleted file mode 100644 index 948110f078..0000000000 --- a/trunk/test/rubygems/fake_certlib/openssl.rb +++ /dev/null @@ -1,7 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -fail LoadError, "no such file to load -- openssl" diff --git a/trunk/test/rubygems/functional.rb b/trunk/test/rubygems/functional.rb deleted file mode 100644 index 4838167324..0000000000 --- a/trunk/test/rubygems/functional.rb +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env ruby -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require 'rubygems' -require 'test/insure_session' -require 'rubygems/format' -require 'rubygems/command_manager' - -class FunctionalTest < Test::Unit::TestCase - def setup - @gem_path = File.expand_path("bin/gem") - lib_path = File.expand_path("lib") - @ruby_options = "-I#{lib_path} -I." - @verbose = false - end - - def test_gem_help_options - gem_nossl 'help options' - assert_match(/Usage:/, @out, @err) - assert_status - end - - def test_gem_help_commands - gem_nossl 'help commands' - assert_match(/gem install/, @out) - assert_status - end - - def test_gem_no_args_shows_help - gem_nossl - assert_match(/Usage:/, @out) - assert_status 1 - end - - # This test is disabled because of the insanely long time it takes - # to time out. - def xtest_bogus_source_hoses_up_remote_install_but_gem_command_gives_decent_error_message - @ruby_options << " -rtest/bogussources" - gem_nossl "install asdf --remote" - assert_match(/error/im, @err) - assert_status 1 - end - - def test_all_command_helps - mgr = Gem::CommandManager.new - mgr.command_names.each do |cmdname| - gem_nossl "help #{cmdname}" - assert_match(/Usage: gem #{cmdname}/, @out, - "should see help for #{cmdname}") - end - end - - # :section: Help Methods - - # Run a gem command without the SSL library. - def gem_nossl(options="") - old_options = @ruby_options.dup - @ruby_options << " -Itest/fake_certlib" - gem(options) - ensure - @ruby_options = old_options - end - - # Run a gem command with the SSL library. - def gem_withssl(options="") - gem(options) - end - - # Run a gem command for the functional test. - def gem(options="") - shell = Session::Shell.new - options = options + " --config-file missing_file" if options !~ /--config-file/ - command = "#{Gem.ruby} #{@ruby_options} #{@gem_path} #{options}" - puts "\n\nCOMMAND: [#{command}]" if @verbose - @out, @err = shell.execute command - @status = shell.exit_status - puts "STATUS: [#{@status}]" if @verbose - puts "OUTPUT: [#{@out}]" if @verbose - puts "ERROR: [#{@err}]" if @verbose - puts "PWD: [#{Dir.pwd}]" if @verbose - shell.close - end - - private - - def assert_status(expected_status=0) - assert_equal expected_status, @status - end - -end diff --git a/trunk/test/rubygems/gem_installer_test_case.rb b/trunk/test/rubygems/gem_installer_test_case.rb deleted file mode 100644 index 0d684eb1eb..0000000000 --- a/trunk/test/rubygems/gem_installer_test_case.rb +++ /dev/null @@ -1,86 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/installer' - -class Gem::Installer - attr_accessor :gem_dir - - attr_writer :format - attr_writer :gem_home - attr_writer :env_shebang - attr_writer :ignore_dependencies - attr_writer :format_executable - attr_writer :security_policy - attr_writer :spec - attr_writer :wrappers -end - -class GemInstallerTestCase < RubyGemTestCase - - def setup - super - - @spec = quick_gem "a" - @gem = File.join @tempdir, "#{@spec.full_name}.gem" - - util_build_gem @spec - FileUtils.mv File.join(@gemhome, 'cache', "#{@spec.full_name}.gem"), - @tempdir - - @installer = Gem::Installer.new @gem - @installer.gem_dir = util_gem_dir - @installer.gem_home = @gemhome - @installer.spec = @spec - end - - def util_gem_bindir(version = '2') - File.join util_gem_dir(version), "bin" - end - - def util_gem_dir(version = '2') - File.join @gemhome, "gems", "a-#{version}" # HACK - end - - def util_inst_bindir - File.join @gemhome, "bin" - end - - def util_make_exec(version = '2', shebang = "#!/usr/bin/ruby") - @spec.executables = ["my_exec"] - - FileUtils.mkdir_p util_gem_bindir(version) - exec_file = @installer.formatted_program_filename "my_exec" - exec_path = File.join util_gem_bindir(version), exec_file - File.open exec_path, 'w' do |f| - f.puts shebang - end - end - - def util_setup_gem(ui = @ui) # HACK fix use_ui to make this automatic - @spec.files = File.join('lib', 'code.rb') - @spec.executables << 'executable' - @spec.extensions << File.join('ext', 'a', 'mkrf_conf.rb') - - Dir.chdir @tempdir do - FileUtils.mkdir_p 'bin' - FileUtils.mkdir_p 'lib' - FileUtils.mkdir_p File.join('ext', 'a') - File.open File.join('bin', 'executable'), 'w' do |f| f.puts '1' end - File.open File.join('lib', 'code.rb'), 'w' do |f| f.puts '1' end - File.open File.join('ext', 'a', 'mkrf_conf.rb'), 'w' do |f| - f << <<-EOF - File.open 'Rakefile', 'w' do |rf| rf.puts "task :default" end - EOF - end - - use_ui ui do - FileUtils.rm @gem - Gem::Builder.new(@spec).build - end - end - - @installer = Gem::Installer.new @gem - end - -end - diff --git a/trunk/test/rubygems/gem_package_tar_test_case.rb b/trunk/test/rubygems/gem_package_tar_test_case.rb deleted file mode 100644 index 756b30ef27..0000000000 --- a/trunk/test/rubygems/gem_package_tar_test_case.rb +++ /dev/null @@ -1,146 +0,0 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/package' - -class File - - # straight from setup.rb - def self.dir?(path) - # for corrupted windows stat() - File.directory?((path[-1,1] == '/') ? path : path + '/') - end - - def self.read_b(name) - File.open(name, "rb") { |f| f.read } - end - -end - -class TarTestCase < RubyGemTestCase - - def ASCIIZ(str, length) - str + "\0" * (length - str.length) - end - - def SP(s) - s + " " - end - - def SP_Z(s) - s + " \0" - end - - def Z(s) - s + "\0" - end - - def assert_headers_equal(expected, actual) - expected = expected.to_s unless String === expected - actual = actual.to_s unless String === actual - - fields = %w[ - name 100 - mode 8 - uid 8 - gid 8 - size 12 - mtime 12 - checksum 8 - typeflag 1 - linkname 100 - magic 6 - version 2 - uname 32 - gname 32 - devmajor 8 - devminor 8 - prefix 155 - ] - - offset = 0 - - until fields.empty? do - name = fields.shift - length = fields.shift.to_i - - if name == "checksum" then - chksum_off = offset - offset += length - next - end - - assert_equal expected[offset, length], actual[offset, length], - "Field #{name} of the tar header differs." - - offset += length - end - - assert_equal expected[chksum_off, 8], actual[chksum_off, 8] - end - - def calc_checksum(header) - sum = header.unpack("C*").inject{|s,a| s + a} - SP(Z(to_oct(sum, 6))) - end - - def header(type, fname, dname, length, mode, checksum = nil) - checksum ||= " " * 8 - - arr = [ # struct tarfile_entry_posix - ASCIIZ(fname, 100), # char name[100]; ASCII + (Z unless filled) - Z(to_oct(mode, 7)), # char mode[8]; 0 padded, octal null - Z(to_oct(0, 7)), # char uid[8]; ditto - Z(to_oct(0, 7)), # char gid[8]; ditto - Z(to_oct(length, 11)), # char size[12]; 0 padded, octal, null - Z(to_oct(0, 11)), # char mtime[12]; 0 padded, octal, null - checksum, # char checksum[8]; 0 padded, octal, null, space - type, # char typeflag[1]; file: "0" dir: "5" - "\0" * 100, # char linkname[100]; ASCII + (Z unless filled) - "ustar\0", # char magic[6]; "ustar\0" - "00", # char version[2]; "00" - ASCIIZ("wheel", 32), # char uname[32]; ASCIIZ - ASCIIZ("wheel", 32), # char gname[32]; ASCIIZ - Z(to_oct(0, 7)), # char devmajor[8]; 0 padded, octal, null - Z(to_oct(0, 7)), # char devminor[8]; 0 padded, octal, null - ASCIIZ(dname, 155) # char prefix[155]; ASCII + (Z unless filled) - ] - - format = "C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155" - h = if RUBY_VERSION >= "1.9" then - arr.join - else - arr = arr.join("").split(//).map{|x| x[0]} - arr.pack format - end - ret = h + "\0" * (512 - h.size) - assert_equal(512, ret.size) - ret - end - - def tar_dir_header(name, prefix, mode) - h = header("5", name, prefix, 0, mode) - checksum = calc_checksum(h) - header("5", name, prefix, 0, mode, checksum) - end - - def tar_file_header(fname, dname, mode, length) - h = header("0", fname, dname, length, mode) - checksum = calc_checksum(h) - header("0", fname, dname, length, mode, checksum) - end - - def to_oct(n, pad_size) - "%0#{pad_size}o" % n - end - - def util_entry(tar) - io = TempIO.new tar - header = Gem::Package::TarHeader.from io - entry = Gem::Package::TarReader::Entry.new header, io - end - - def util_dir_entry - util_entry tar_dir_header("foo", "bar", 0) - end - -end - diff --git a/trunk/test/rubygems/gemutilities.rb b/trunk/test/rubygems/gemutilities.rb deleted file mode 100644 index 0ab2c5272c..0000000000 --- a/trunk/test/rubygems/gemutilities.rb +++ /dev/null @@ -1,441 +0,0 @@ -#!/usr/bin/env ruby -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -at_exit { $SAFE = 1 } - -$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) - -require 'fileutils' -require 'test/unit' -require 'tmpdir' -require 'uri' -require 'rubygems/package' -require 'rubygems/test_utilities' - -require File.join(File.expand_path(File.dirname(__FILE__)), 'mockgemui') - -module Gem - def self.source_index=(si) - @@source_index = si - end - - def self.win_platform=(val) - @@win_platform = val - end - - module DefaultUserInteraction - @ui = MockGemUi.new - end -end - -class RubyGemTestCase < Test::Unit::TestCase - - include Gem::DefaultUserInteraction - - undef_method :default_test if instance_methods.include? 'default_test' or - instance_methods.include? :default_test - - def setup - super - - @ui = MockGemUi.new - tmpdir = nil - Dir.chdir Dir.tmpdir do tmpdir = Dir.pwd end # HACK OSX /private/tmp - @tempdir = File.join tmpdir, "test_rubygems_#{$$}" - @tempdir.untaint - @gemhome = File.join @tempdir, "gemhome" - @gemcache = File.join(@gemhome, "source_cache") - @usrcache = File.join(@gemhome, ".gem", "user_cache") - @latest_usrcache = File.join(@gemhome, ".gem", "latest_user_cache") - @userhome = File.join @tempdir, 'userhome' - - ENV['HOME'] = @userhome - Gem.instance_variable_set :@user_home, nil - - FileUtils.mkdir_p @gemhome - FileUtils.mkdir_p @userhome - - ENV['GEMCACHE'] = @usrcache - Gem.use_paths(@gemhome) - Gem.loaded_specs.clear - - Gem.configuration.verbose = true - Gem.configuration.update_sources = true - - @gem_repo = "http://gems.example.com/" - @uri = URI.parse @gem_repo - Gem.sources.replace [@gem_repo] - - Gem::SpecFetcher.fetcher = nil - - @orig_BASERUBY = Gem::ConfigMap[:BASERUBY] - Gem::ConfigMap[:BASERUBY] = Gem::ConfigMap[:RUBY_INSTALL_NAME] - - @orig_arch = Gem::ConfigMap[:arch] - - if win_platform? - util_set_arch 'i386-mswin32' - else - util_set_arch 'i686-darwin8.10.1' - end - - @marshal_version = "#{Marshal::MAJOR_VERSION}.#{Marshal::MINOR_VERSION}" - - @private_key = File.expand_path File.join(File.dirname(__FILE__), - 'private_key.pem') - @public_cert = File.expand_path File.join(File.dirname(__FILE__), - 'public_cert.pem') - end - - def teardown - Gem::ConfigMap[:BASERUBY] = @orig_BASERUBY - Gem::ConfigMap[:arch] = @orig_arch - - if defined? Gem::RemoteFetcher then - Gem::RemoteFetcher.fetcher = nil - end - - FileUtils.rm_rf @tempdir - - ENV.delete 'GEMCACHE' - ENV.delete 'GEM_HOME' - ENV.delete 'GEM_PATH' - - Gem.clear_paths - end - - def install_gem gem - require 'rubygems/installer' - - use_ui MockGemUi.new do - Dir.chdir @tempdir do - Gem::Builder.new(gem).build - end - end - - gem = File.join(@tempdir, "#{gem.full_name}.gem").untaint - Gem::Installer.new(gem, :wrappers => true).install - end - - def prep_cache_files(lc) - @usr_si ||= Gem::SourceIndex.new - @usr_sice ||= Gem::SourceInfoCacheEntry.new @usr_si, 0 - - @sys_si ||= Gem::SourceIndex.new - @sys_sice ||= Gem::SourceInfoCacheEntry.new @sys_si, 0 - - latest_si = Gem::SourceIndex.new - latest_si.add_specs(*@sys_si.latest_specs) - latest_sys_sice = Gem::SourceInfoCacheEntry.new latest_si, 0 - - latest_si = Gem::SourceIndex.new - latest_si.add_specs(*@usr_si.latest_specs) - latest_usr_sice = Gem::SourceInfoCacheEntry.new latest_si, 0 - - [ [lc.system_cache_file, @sys_sice], - [lc.latest_system_cache_file, latest_sys_sice], - [lc.user_cache_file, @usr_sice], - [lc.latest_user_cache_file, latest_usr_sice], - ].each do |filename, data| - FileUtils.mkdir_p File.dirname(filename).untaint - - open filename.dup.untaint, 'wb' do |f| - f.write Marshal.dump({ @gem_repo => data }) - end - end - end - - def read_cache(path) - open path.dup.untaint, 'rb' do |io| - Marshal.load io.read - end - end - - def read_binary(path) - Gem.read_binary path - end - - def write_file(path) - path = File.join(@gemhome, path) - dir = File.dirname path - FileUtils.mkdir_p dir - - open path, 'wb' do |io| - yield io - end - - path - end - - def quick_gem(gemname, version='2') - require 'rubygems/specification' - - spec = Gem::Specification.new do |s| - s.platform = Gem::Platform::RUBY - s.name = gemname - s.version = version - s.author = 'A User' - s.email = 'example@example.com' - s.homepage = 'http://example.com' - s.has_rdoc = true - s.summary = "this is a summary" - s.description = "This is a test description" - - yield(s) if block_given? - end - - path = File.join "specifications", "#{spec.full_name}.gemspec" - written_path = write_file path do |io| - io.write(spec.to_ruby) - end - - spec.loaded_from = written_path - - Gem.source_index.add_spec spec - - return spec - end - - def util_build_gem(spec) - dir = File.join(@gemhome, 'gems', spec.full_name) - FileUtils.mkdir_p dir - - Dir.chdir dir do - spec.files.each do |file| - next if File.exist? file - FileUtils.mkdir_p File.dirname(file) - File.open file, 'w' do |fp| fp.puts "# #{file}" end - end - - use_ui MockGemUi.new do - Gem::Builder.new(spec).build - end - - FileUtils.mv "#{spec.full_name}.gem", - File.join(@gemhome, 'cache', "#{spec.original_name}.gem") - end - end - - def util_clear_gems - FileUtils.rm_r File.join(@gemhome, 'gems') - FileUtils.rm_r File.join(@gemhome, 'specifications') - Gem.source_index.refresh! - end - - def util_gem(name, version, &block) - spec = quick_gem(name, version, &block) - - util_build_gem spec - - cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem" - FileUtils.mv File.join(@gemhome, 'cache', "#{spec.original_name}.gem"), - cache_file - FileUtils.rm File.join(@gemhome, 'specifications', - "#{spec.full_name}.gemspec") - - spec.loaded_from = nil - spec.loaded = false - - [spec, cache_file] - end - - def util_gzip(data) - out = StringIO.new - - Zlib::GzipWriter.wrap out do |io| - io.write data - end - - out.string - end - - def util_make_gems - init = proc do |s| - s.files = %w[lib/code.rb] - s.require_paths = %w[lib] - end - - @a1 = quick_gem('a', '1', &init) - @a2 = quick_gem('a', '2', &init) - @a_evil9 = quick_gem('a_evil', '9', &init) - @b2 = quick_gem('b', '2', &init) - @c1_2 = quick_gem('c', '1.2', &init) - @pl1 = quick_gem 'pl', '1' do |s| # l for legacy - s.files = %w[lib/code.rb] - s.require_paths = %w[lib] - s.platform = Gem::Platform.new 'i386-linux' - s.instance_variable_set :@original_platform, 'i386-linux' - end - - write_file File.join(*%W[gems #{@a1.original_name} lib code.rb]) do end - write_file File.join(*%W[gems #{@a2.original_name} lib code.rb]) do end - write_file File.join(*%W[gems #{@b2.original_name} lib code.rb]) do end - write_file File.join(*%W[gems #{@c1_2.original_name} lib code.rb]) do end - write_file File.join(*%W[gems #{@pl1.original_name} lib code.rb]) do end - - [@a1, @a2, @a_evil9, @b2, @c1_2, @pl1].each { |spec| util_build_gem spec } - - FileUtils.rm_r File.join(@gemhome, 'gems', @pl1.original_name) - - Gem.source_index = nil - end - - ## - # Set the platform to +arch+ - - def util_set_arch(arch) - Gem::ConfigMap[:arch] = arch - platform = Gem::Platform.new arch - - Gem.instance_variable_set :@platforms, nil - Gem::Platform.instance_variable_set :@local, nil - - platform - end - - def util_setup_fake_fetcher - require 'zlib' - require 'socket' - require 'rubygems/remote_fetcher' - - @fetcher = Gem::FakeFetcher.new - - util_make_gems - - @all_gems = [@a1, @a2, @a_evil9, @b2, @c1_2].sort - @all_gem_names = @all_gems.map { |gem| gem.full_name } - - gem_names = [@a1.full_name, @a2.full_name, @b2.full_name] - @gem_names = gem_names.sort.join("\n") - - @source_index = Gem::SourceIndex.new - @source_index.add_spec @a1 - @source_index.add_spec @a2 - @source_index.add_spec @a_evil9 - @source_index.add_spec @c1_2 - - Gem::RemoteFetcher.fetcher = @fetcher - end - - def util_setup_source_info_cache(*specs) - require 'rubygems/source_info_cache' - require 'rubygems/source_info_cache_entry' - - specs = Hash[*specs.map { |spec| [spec.full_name, spec] }.flatten] - si = Gem::SourceIndex.new specs - - sice = Gem::SourceInfoCacheEntry.new si, 0 - sic = Gem::SourceInfoCache.new - - sic.set_cache_data( { @gem_repo => sice } ) - sic.update - sic.write_cache - sic.reset_cache_data - - Gem::SourceInfoCache.instance_variable_set :@cache, sic - - si - end - - def util_setup_spec_fetcher(*specs) - specs = Hash[*specs.map { |spec| [spec.full_name, spec] }.flatten] - si = Gem::SourceIndex.new specs - - spec_fetcher = Gem::SpecFetcher.fetcher - - spec_fetcher.specs[@uri] = [] - si.gems.sort_by { |_, spec| spec }.each do |_, spec| - spec_tuple = [spec.name, spec.version, spec.original_platform] - spec_fetcher.specs[@uri] << spec_tuple - end - - spec_fetcher.latest_specs[@uri] = [] - si.latest_specs.sort.each do |spec| - spec_tuple = [spec.name, spec.version, spec.original_platform] - spec_fetcher.latest_specs[@uri] << spec_tuple - end - - si.gems.sort_by { |_,spec| spec }.each do |_, spec| - path = "#{@gem_repo}quick/Marshal.#{Gem.marshal_version}/#{spec.original_name}.gemspec.rz" - data = Marshal.dump spec - data_deflate = Zlib::Deflate.deflate data - @fetcher.data[path] = data_deflate - end - - si - end - - def util_zip(data) - Zlib::Deflate.deflate data - end - - def self.win_platform? - Gem.win_platform? - end - - def win_platform? - Gem.win_platform? - end - - # NOTE Allow tests to use a random (but controlled) port number instead of - # a hardcoded one. This helps CI tools when running parallels builds on - # the same builder slave. - def self.process_based_port - @@process_based_port ||= 8000 + $$ % 1000 - end - - def process_based_port - self.class.process_based_port - end - - def build_rake_in - gem_ruby = Gem.ruby - ruby = @@ruby - Gem.module_eval {@ruby = ruby} - env_rake = ENV["rake"] - ENV["rake"] = @@rake - yield @@rake - ensure - Gem.module_eval {@ruby = gem_ruby} - if env_rake - ENV["rake"] = env_rake - else - ENV.delete("rake") - end - end - - def self.rubybin - if ruby = ENV["RUBY"] - return ruby - end - ruby = "ruby" - rubyexe = ruby+".exe" - 3.times do - if File.exist? ruby and File.executable? ruby and !File.directory? ruby - return File.expand_path(ruby) - end - if File.exist? rubyexe and File.executable? rubyexe - return File.expand_path(rubyexe) - end - ruby = File.join("..", ruby) - end - begin - require "rbconfig" - File.join( - RbConfig::CONFIG["bindir"], - RbConfig::CONFIG["ruby_install_name"] + RbConfig::CONFIG["EXEEXT"] - ) - rescue LoadError - "ruby" - end - end - - @@ruby = rubybin - @@rake = ENV["rake"] || (@@ruby + " " + File.expand_path("../../../bin/rake", __FILE__)) - -end - diff --git a/trunk/test/rubygems/insure_session.rb b/trunk/test/rubygems/insure_session.rb deleted file mode 100644 index e56f9abcb8..0000000000 --- a/trunk/test/rubygems/insure_session.rb +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env ruby -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - - -require 'rubygems' - -def install_session - path_to_gem = File.join("redist", "session.gem") - begin - Gem::Installer.new(path_to_gem).install - rescue Errno::EACCES => ex - puts - puts "*****************************************************************" - puts "Unable to install Gem 'Session'." - puts "Reason: #{ex.message}" - puts "Try running:" - puts - puts " gem -Li #{path_to_gem}" - puts - puts "with the appropriate admin privileges." - puts "*****************************************************************" - puts - exit - end - gem 'session' -end - -begin - require 'session' -rescue LoadError => e - puts - puts "Required Gem 'Session' missing." - puts "We can attempt to install from the RubyGems Distribution," - puts "but installation may require admin privileges on your system." - puts - print "Install now from RubyGems distribution? [Yn]" - answer = gets - if(answer =~ /^y/i || answer =~ /^[^a-zA-Z0-9]$/) then - install_session - puts - puts "Retry running the functional tests." - exit(0) - else - puts "Test cancelled...quitting" - exit(1) - end -end diff --git a/trunk/test/rubygems/mockgemui.rb b/trunk/test/rubygems/mockgemui.rb deleted file mode 100644 index 95a95fbf98..0000000000 --- a/trunk/test/rubygems/mockgemui.rb +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env ruby -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - - -require 'stringio' -require 'rubygems/user_interaction' - -class MockGemUi < Gem::StreamUI - class TermError < RuntimeError; end - - def initialize(input="") - super(StringIO.new(input), StringIO.new, StringIO.new) - @terminated = false - end - - def input - @ins.string - end - - def output - @outs.string - end - - def error - @errs.string - end - - def terminated? - @terminated - end - - def terminate_interaction(status=0) - @terminated = true - - raise TermError - end - -end - diff --git a/trunk/test/rubygems/private_key.pem b/trunk/test/rubygems/private_key.pem deleted file mode 100644 index 95b3dc76d8..0000000000 --- a/trunk/test/rubygems/private_key.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAm24C6xixiAxO+i1f3L8XRMwrmLkt6BvT60mZ7g8HsklH3af7 -KNHA6vo/G6sujs2UsNO4HY8BTEneiVOXXWQlcsJ+Z5wEPlIu4zFueAmLefx+n9lE -ulNIUDoyUenKX4spoMRnX8k4lXL05ho/6JFq0JdDY2DmAaQ4vvTz5mh9kZiybtHQ -fzcpbA51uY+sjdQRCPDHyUUfh0SmWJlLYMwcBdVeCiGUPBLi+iP5x1btO4uiJK6Q -IMaV1H3SUCYtKGQKl7qwFd8k8ZBcHYOtmK61tupg3vqWQc0em6SxPj5lws8+1MVK -twBNIDx24jF4ntxBRNKMZ7FN5SHbobAgDYkPAQIDAQABAoIBAGQilgK8X/PUajVH -clEXU3hhSV0VQHwfIYKeYms6h6zXBVPKW0dLC0zXeDztJgueasMZQ67XaPCrTpGO -px/l2zJ6F1HM8/bqn4aDXDY9f/xRLYryQRMBgL8fHzgitNylHWaT4j2Vt7yg2SI9 -mxrMRNKqASJPVR+Nm3l6+n9gpjVb99wEucWplPPHI6KhXLYPZOqSwt+zaH5roz3k -UQmMs0Bs4hF1SzVl0n+KNoXHOwswVrmBWXgWvm2OhnwY2e26jfejc8toJc/ShAJ7 -C9exnrdimcgEKbd22Sum4G00CDYhcrG5LHHqkgwifcAEVctrvBZBZHGgpxlO8a8U -eF2Vr7kCgYEAykdrBlzp7Fn9xzUInBQ3NXTTYAq51lpuJdmHQmPuTSY0buoHkd9f -xbUCZ2qR9QAesrx4hI0qGLetc8IOKDoWx2rPepCCvO3Kx61o1SB5fAvBue03qVoq -HqACX3Uk24Em8zAz9xuP13ETH/wU7sUbUxRHMCre6ZDmlxn4g5l+Nl8CgYEAxLVl -22yBx0dfRr3UsHY9rxll2gIlnfnYfiJzq8wetzt/TfztRV5ILz7FyWqL5d7IoqkA -fT2V4HAasRJASnKohwJe7z5M/H2ExwkGNFvY+jefb2CoUl5WouK9AlhbqBk3zmHi -sY5GqQkAp/kHMntEin+sErJw6mkgAGdser3a9p8CgYEAqi31w++tunRnxw4+RRnY -7Pdx0k6T1NxV6TAe1ONAHNY0rM/mOHqml65W7GzDiU1lhlh8SIB/VzZJDqfHw15D -xdh94A7uf0bMILwrA4wDyTIW9Xa3Kpq57vQNqwPiU25QN69pOM+Ob+IpBfLOJafc -+kOINOUMj5Kh/aQS6Zzci58CgYEAk24dlFKEBjbRCvU2FrfYTYcsljPru7ZJc2gg -588J6m0WYf5CWy5pzbcviGFpzvSlzXv7GOLylQ+QgcxbETFUbDPzsT4xd0AgJwj1 -dIKuYgMUZOa94VZBer2TydEtiRS1heJJhKhM/1329u4nXceTvHYqIq1JAfeee48I -eAoZtaMCgYBz1FjWFQnMTD5nmyPEEZneoBPAR5+9jwOps+IYOoHtazoMFszzd0qo -JZW3Ihn9KRrVSxfFApKS/ZwjiZ+tJUk7DE/v/0l0sszefY7s8b0pL1lpeZSoL71e -QoG1WLXUiDV3BRlmyOAF1h3p12KRTLgwubN51ajECwcs3QwE+ZT8Gg== ------END RSA PRIVATE KEY----- diff --git a/trunk/test/rubygems/public_cert.pem b/trunk/test/rubygems/public_cert.pem deleted file mode 100644 index 9b7c3d8e98..0000000000 --- a/trunk/test/rubygems/public_cert.pem +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMRAwDgYDVQQDDAdkcmJy -YWluMRgwFgYKCZImiZPyLGQBGRYIc2VnbWVudDcxEzARBgoJkiaJk/IsZAEZFgNu -ZXQwHhcNMDcxMjIxMDIwNDE0WhcNMDgxMjIwMDIwNDE0WjBBMRAwDgYDVQQDDAdk -cmJyYWluMRgwFgYKCZImiZPyLGQBGRYIc2VnbWVudDcxEzARBgoJkiaJk/IsZAEZ -FgNuZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbbgLrGLGIDE76 -LV/cvxdEzCuYuS3oG9PrSZnuDweySUfdp/so0cDq+j8bqy6OzZSw07gdjwFMSd6J -U5ddZCVywn5nnAQ+Ui7jMW54CYt5/H6f2US6U0hQOjJR6cpfiymgxGdfyTiVcvTm -Gj/okWrQl0NjYOYBpDi+9PPmaH2RmLJu0dB/NylsDnW5j6yN1BEI8MfJRR+HRKZY -mUtgzBwF1V4KIZQ8EuL6I/nHVu07i6IkrpAgxpXUfdJQJi0oZAqXurAV3yTxkFwd -g62YrrW26mDe+pZBzR6bpLE+PmXCzz7UxUq3AE0gPHbiMXie3EFE0oxnsU3lIduh -sCANiQ8BAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW -BBS5k4Z75VSpdM0AclG2UvzFA/VW5DANBgkqhkiG9w0BAQUFAAOCAQEAHagT4lfX -kP/hDaiwGct7XPuVGbrOsKRVD59FF5kETBxEc9UQ1clKWngf8JoVuEoKD774dW19 -bU0GOVWO+J6FMmT/Cp7nuFJ79egMf/gy4gfUfQMuvfcr6DvZUPIs9P/TlK59iMYF -DIOQ3DxdF3rMzztNUCizN4taVscEsjCcgW6WkUJnGdqlu3OHWpQxZBJkBTjPCoc6 -UW6on70SFPmAy/5Cq0OJNGEWBfgD9q7rrs/X8GGwUWqXb85RXnUVi/P8Up75E0ag -14jEc90kN+C7oI/AGCBN0j6JnEtYIEJZibjjDJTSMWlUKKkj30kq7hlUC2CepJ4v -x52qPcexcYZR7w== ------END CERTIFICATE----- diff --git a/trunk/test/rubygems/simple_gem.rb b/trunk/test/rubygems/simple_gem.rb deleted file mode 100644 index a6f14bc3c7..0000000000 --- a/trunk/test/rubygems/simple_gem.rb +++ /dev/null @@ -1,72 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - - SIMPLE_GEM = <<-GEMDATA - MD5SUM = "e3701f9db765a2358aef94c40ded71c8" - if $0 == __FILE__ - require 'optparse' - - options = {} - ARGV.options do |opts| - opts.on_tail("--help", "show this message") {puts opts; exit} - opts.on('--dir=DIRNAME', "Installation directory for the Gem") {|options[:directory]|} - opts.on('--force', "Force Gem to intall, bypassing dependency checks") {|options[:force]|} - opts.on('--gen-rdoc', "Generate RDoc documentation for the Gem") {|options[:gen_rdoc]|} - opts.parse! - end - - require 'rubygems' - @directory = options[:directory] || Gem.dir - @force = options[:force] - - gem = Gem::Installer.new(__FILE__).install(@force, @directory) - if options[:gen_rdoc] - Gem::DocManager.new(gem).generate_rdoc - end -end - -__END__ ---- !ruby/object:Gem::Specification -rubygems_version: "1.0" -name: testing -version: !ruby/object:Gem::Version - version: 1.2.3 -date: 2004-03-18 22:01:52.859121 -05:00 -platform: -summary: This exercise the gem testing stuff. -require_paths: - - lib -files: - - lib/foo.rb - - lib/test - - lib/test.rb - - lib/test/wow.rb -autorequire: test -test_suite_file: foo -requirements: - - a computer processor ---- -- - size: 109 - mode: 420 - path: lib/foo.rb -- - size: 0 - mode: 420 - path: lib/test.rb -- - size: 15 - mode: 420 - path: lib/test/wow.rb ---- -eJwVjDEKgDAUQ/eeIpsKguhY3ARPoHMp9quF0mL7e39/h5DwQpLpqz4TOqbC -U42eO6WuYEvBntIhECuaaX1KqXXLmy2kAEc32szExK+PjyBAlpTZyK0N/Twu -g1CKTjX9BGAj1w== ---- -eJwDAAAAAAE= ---- -eJwrKC0pVlAvzy9XyE3MU+cCACwiBP4= - GEMDATA diff --git a/trunk/test/rubygems/test_config.rb b/trunk/test/rubygems/test_config.rb deleted file mode 100644 index 0568996c4a..0000000000 --- a/trunk/test/rubygems/test_config.rb +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env ruby -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rbconfig' -require 'rubygems' - -class TestConfig < RubyGemTestCase - - def test_datadir - datadir = Config::CONFIG['datadir'] - assert_equal "#{datadir}/xyz", Config.datadir('xyz') - end - -end - diff --git a/trunk/test/rubygems/test_gem.rb b/trunk/test/rubygems/test_gem.rb deleted file mode 100644 index c26eeb573d..0000000000 --- a/trunk/test/rubygems/test_gem.rb +++ /dev/null @@ -1,449 +0,0 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems' -require 'rubygems/gem_openssl' -require 'rubygems/installer' -require 'pathname' -require 'tmpdir' - -class TestGem < RubyGemTestCase - - def setup - super - - @additional = %w[a b].map { |d| File.join @tempdir, d } - @default_dir_re = %r|/[Rr]uby/[Gg]ems/[0-9.]+| - end - - def test_self_all_load_paths - util_make_gems - - expected = [ - File.join(@gemhome, *%W[gems #{@a1.full_name} lib]), - File.join(@gemhome, *%W[gems #{@a2.full_name} lib]), - File.join(@gemhome, *%W[gems #{@a_evil9.full_name} lib]), - File.join(@gemhome, *%W[gems #{@b2.full_name} lib]), - File.join(@gemhome, *%W[gems #{@c1_2.full_name} lib]), - File.join(@gemhome, *%W[gems #{@pl1.full_name} lib]), - ] - - assert_equal expected, Gem.all_load_paths.sort - end - - def test_self_available? - util_make_gems - assert(Gem.available?("a")) - assert(Gem.available?("a", "1")) - assert(Gem.available?("a", ">1")) - assert(!Gem.available?("monkeys")) - end - - def test_self_bindir - assert_equal File.join(@gemhome, 'bin'), Gem.bindir - assert_equal File.join(@gemhome, 'bin'), Gem.bindir(Gem.dir) - assert_equal File.join(@gemhome, 'bin'), Gem.bindir(Pathname.new(Gem.dir)) - end - - def test_self_bindir_default_dir - default = Gem.default_dir - bindir = (defined? RUBY_FRAMEWORK_VERSION) ? '/usr/bin' : Config::CONFIG['bindir'] - assert_equal bindir, Gem.bindir(default) - assert_equal bindir, Gem.bindir(Pathname.new(default)) - end - - def test_self_clear_paths - Gem.dir - Gem.path - searcher = Gem.searcher - source_index = Gem.source_index - - Gem.clear_paths - - assert_equal nil, Gem.instance_variable_get(:@gem_home) - assert_equal nil, Gem.instance_variable_get(:@gem_path) - assert_not_equal searcher, Gem.searcher - assert_not_equal source_index.object_id, Gem.source_index.object_id - end - - def test_self_configuration - expected = Gem::ConfigFile.new [] - Gem.configuration = nil - - assert_equal expected, Gem.configuration - end - - def test_self_datadir - foo = nil - - Dir.chdir @tempdir do - FileUtils.mkdir_p 'data' - File.open File.join('data', 'foo.txt'), 'w' do |fp| - fp.puts 'blah' - end - - foo = quick_gem 'foo' do |s| s.files = %w[data/foo.txt] end - install_gem foo - end - - Gem.source_index = nil - - gem 'foo' - - expected = File.join @gemhome, 'gems', foo.full_name, 'data', 'foo' - - assert_equal expected, Gem.datadir('foo') - end - - def test_self_datadir_nonexistent_package - assert_nil Gem.datadir('xyzzy') - end - - def test_self_default_dir - assert_match @default_dir_re, Gem.default_dir - end - - def test_self_default_exec_format - orig_BASERUBY = Gem::ConfigMap[:BASERUBY] - orig_RUBY_INSTALL_NAME = Gem::ConfigMap[:RUBY_INSTALL_NAME] - Gem::ConfigMap[:BASERUBY] = 'ruby' - Gem::ConfigMap[:RUBY_INSTALL_NAME] = 'ruby' - - assert_equal '%s', Gem.default_exec_format - ensure - Gem::ConfigMap[:BASERUBY] = orig_BASERUBY - Gem::ConfigMap[:RUBY_INSTALL_NAME] = orig_RUBY_INSTALL_NAME - end - - def test_self_default_exec_format_18 - orig_BASERUBY = Gem::ConfigMap[:BASERUBY] - orig_RUBY_INSTALL_NAME = Gem::ConfigMap[:RUBY_INSTALL_NAME] - Gem::ConfigMap[:BASERUBY] = 'ruby' - Gem::ConfigMap[:RUBY_INSTALL_NAME] = 'ruby18' - - assert_equal '%s18', Gem.default_exec_format - ensure - Gem::ConfigMap[:BASERUBY] = orig_BASERUBY - Gem::ConfigMap[:RUBY_INSTALL_NAME] = orig_RUBY_INSTALL_NAME - end - - def test_self_default_exec_format_jruby - orig_BASERUBY = Gem::ConfigMap[:BASERUBY] - orig_RUBY_INSTALL_NAME = Gem::ConfigMap[:RUBY_INSTALL_NAME] - Gem::ConfigMap[:BASERUBY] = 'ruby' - Gem::ConfigMap[:RUBY_INSTALL_NAME] = 'jruby' - - assert_equal 'j%s', Gem.default_exec_format - ensure - Gem::ConfigMap[:BASERUBY] = orig_BASERUBY - Gem::ConfigMap[:RUBY_INSTALL_NAME] = orig_RUBY_INSTALL_NAME - end - - def test_self_default_sources - assert_equal %w[http://gems.rubyforge.org/], Gem.default_sources - end - - def test_self_dir - assert_equal @gemhome, Gem.dir - - Gem::DIRECTORIES.each do |filename| - assert File.directory?(File.join(Gem.dir, filename)), - "expected #{filename} to exist" - end - end - - def test_self_ensure_gem_directories - FileUtils.rm_r @gemhome - Gem.use_paths @gemhome - - Gem.ensure_gem_subdirectories @gemhome - - assert File.directory?(File.join(@gemhome, "cache")) - end - - def test_self_ensure_gem_directories_missing_parents - gemdir = File.join @tempdir, 'a/b/c/gemdir' - FileUtils.rm_rf File.join(@tempdir, 'a') rescue nil - assert !File.exist?(File.join(@tempdir, 'a')), - "manually remove #{File.join @tempdir, 'a'}, tests are broken" - Gem.use_paths gemdir - - Gem.ensure_gem_subdirectories gemdir - - assert File.directory?("#{gemdir}/cache") - end - - unless win_platform? then # only for FS that support write protection - def test_self_ensure_gem_directories_write_protected - gemdir = File.join @tempdir, "egd" - FileUtils.rm_r gemdir rescue nil - assert !File.exist?(gemdir), "manually remove #{gemdir}, tests are broken" - FileUtils.mkdir_p gemdir - FileUtils.chmod 0400, gemdir - Gem.use_paths gemdir - - Gem.ensure_gem_subdirectories gemdir - - assert !File.exist?("#{gemdir}/cache") - ensure - FileUtils.chmod 0600, gemdir - end - - def test_self_ensure_gem_directories_write_protected_parents - parent = File.join(@tempdir, "egd") - gemdir = "#{parent}/a/b/c" - - FileUtils.rm_r parent rescue nil - assert !File.exist?(parent), "manually remove #{parent}, tests are broken" - FileUtils.mkdir_p parent - FileUtils.chmod 0400, parent - Gem.use_paths(gemdir) - - Gem.ensure_gem_subdirectories gemdir - - assert !File.exist?("#{gemdir}/cache") - ensure - FileUtils.chmod 0600, parent - end - end - - def test_ensure_ssl_available - orig_Gem_ssl_available = Gem.ssl_available? - - Gem.ssl_available = true - assert_nothing_raised do Gem.ensure_ssl_available end - - Gem.ssl_available = false - e = assert_raise Gem::Exception do Gem.ensure_ssl_available end - assert_equal 'SSL is not installed on this system', e.message - ensure - Gem.ssl_available = orig_Gem_ssl_available - end - - def test_self_latest_load_paths - util_make_gems - - expected = [ - File.join(@gemhome, *%W[gems #{@a2.full_name} lib]), - File.join(@gemhome, *%W[gems #{@a_evil9.full_name} lib]), - File.join(@gemhome, *%W[gems #{@b2.full_name} lib]), - File.join(@gemhome, *%W[gems #{@c1_2.full_name} lib]), - File.join(@gemhome, *%W[gems #{@pl1.full_name} lib]), - ] - - assert_equal expected, Gem.latest_load_paths.sort - end - - def test_self_loaded_specs - foo = quick_gem 'foo' - install_gem foo - Gem.source_index = nil - - Gem.activate 'foo' - - assert_equal true, Gem.loaded_specs.keys.include?('foo') - end - - def test_self_path - assert_equal [Gem.dir], Gem.path - end - - def test_self_path_default - if defined? APPLE_GEM_HOME - orig_APPLE_GEM_HOME = APPLE_GEM_HOME - Object.send :remove_const, :APPLE_GEM_HOME - end - Gem.instance_variable_set :@gem_path, nil - - assert_equal [Gem.default_path, Gem.dir].flatten, Gem.path - ensure - Object.const_set :APPLE_GEM_HOME, orig_APPLE_GEM_HOME - end - - unless win_platform? - def test_self_path_APPLE_GEM_HOME - Gem.clear_paths - Dir.mktmpdir("apple_gem_home") {|d| - Gem.const_set :APPLE_GEM_HOME, d - assert Gem.path.include?(d) - } - ensure - Gem.send :remove_const, :APPLE_GEM_HOME - end - - def test_self_path_APPLE_GEM_HOME_GEM_PATH - Gem.clear_paths - ENV['GEM_PATH'] = @gemhome - Gem.const_set :APPLE_GEM_HOME, '/tmp/apple_gem_home' - - assert !Gem.path.include?('/tmp/apple_gem_home') - ensure - Gem.send :remove_const, :APPLE_GEM_HOME - end - end - - def test_self_path_ENV_PATH - Gem.send :set_paths, nil - path_count = Gem.path.size - Gem.clear_paths - - ENV['GEM_PATH'] = @additional.join(File::PATH_SEPARATOR) - - assert_equal @additional, Gem.path[0,2] - - assert_equal path_count + @additional.size, Gem.path.size, - "extra path components: #{Gem.path[2..-1].inspect}" - assert_match Gem.dir, Gem.path.last - end - - def test_self_path_duplicate - Gem.clear_paths - util_ensure_gem_dirs - dirs = @additional + [@gemhome] + [File.join(@tempdir, 'a')] - - ENV['GEM_HOME'] = @gemhome - ENV['GEM_PATH'] = dirs.join File::PATH_SEPARATOR - - assert_equal @gemhome, Gem.dir - - paths = [Gem.dir] - assert_equal @additional + paths, Gem.path - end - - def test_self_path_overlap - Gem.clear_paths - - util_ensure_gem_dirs - ENV['GEM_HOME'] = @gemhome - ENV['GEM_PATH'] = @additional.join(File::PATH_SEPARATOR) - - assert_equal @gemhome, Gem.dir - - paths = [Gem.dir] - assert_equal @additional + paths, Gem.path - end - - def test_self_platforms - assert_equal [Gem::Platform::RUBY, Gem::Platform.local], Gem.platforms - end - - def test_self_prefix - file_name = File.expand_path __FILE__ - - prefix = File.dirname File.dirname(file_name) - prefix = File.dirname prefix if File.basename(prefix) == 'test' - - assert_equal prefix, Gem.prefix - end - - def test_self_prefix_libdir - orig_libdir = Gem::ConfigMap[:libdir] - - file_name = File.expand_path __FILE__ - prefix = File.dirname File.dirname(file_name) - prefix = File.dirname prefix if File.basename(prefix) == 'test' - - Gem::ConfigMap[:libdir] = prefix - - assert_nil Gem.prefix - ensure - Gem::ConfigMap[:libdir] = orig_libdir - end - - def test_self_prefix_sitelibdir - orig_sitelibdir = Gem::ConfigMap[:sitelibdir] - - file_name = File.expand_path __FILE__ - prefix = File.dirname File.dirname(file_name) - prefix = File.dirname prefix if File.basename(prefix) == 'test' - - Gem::ConfigMap[:sitelibdir] = prefix - - assert_nil Gem.prefix - ensure - Gem::ConfigMap[:sitelibdir] = orig_sitelibdir - end - - def test_self_refresh - util_make_gems - - a1_spec = File.join @gemhome, "specifications", "#{@a1.full_name}.gemspec" - - FileUtils.mv a1_spec, @tempdir - - assert !Gem.source_index.gems.include?(@a1.full_name) - - FileUtils.mv File.join(@tempdir, "#{@a1.full_name}.gemspec"), a1_spec - - Gem.refresh - - assert Gem.source_index.gems.include?(@a1.full_name) - assert_equal nil, Gem.instance_variable_get(:@searcher) - end - - def test_self_required_location - util_make_gems - - assert_equal File.join(@tempdir, *%w[gemhome gems c-1.2 lib code.rb]), - Gem.required_location("c", "code.rb") - assert_equal File.join(@tempdir, *%w[gemhome gems a-1 lib code.rb]), - Gem.required_location("a", "code.rb", "< 2") - assert_equal File.join(@tempdir, *%w[gemhome gems a-2 lib code.rb]), - Gem.required_location("a", "code.rb", "= 2") - end - - def test_self_ruby_version - version = RUBY_VERSION.dup - version << ".#{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL - - assert_equal Gem::Version.new(version), Gem.ruby_version - end - - def test_self_searcher - assert_kind_of Gem::GemPathSearcher, Gem.searcher - end - - def test_self_source_index - assert_kind_of Gem::SourceIndex, Gem.source_index - end - - def test_self_sources - assert_equal %w[http://gems.example.com/], Gem.sources - end - - def test_ssl_available_eh - orig_Gem_ssl_available = Gem.ssl_available? - - Gem.ssl_available = true - assert_equal true, Gem.ssl_available? - - Gem.ssl_available = false - assert_equal false, Gem.ssl_available? - ensure - Gem.ssl_available = orig_Gem_ssl_available - end - - def test_self_use_paths - util_ensure_gem_dirs - - Gem.use_paths @gemhome, @additional - - assert_equal @gemhome, Gem.dir - assert_equal @additional + [Gem.dir], Gem.path - end - - def test_self_user_home - if ENV['HOME'] then - assert_equal ENV['HOME'], Gem.user_home - else - assert true, 'count this test' - end - end - - def util_ensure_gem_dirs - Gem.ensure_gem_subdirectories @gemhome - @additional.each do |dir| - Gem.ensure_gem_subdirectories @gemhome - end - end - -end - diff --git a/trunk/test/rubygems/test_gem_builder.rb b/trunk/test/rubygems/test_gem_builder.rb deleted file mode 100644 index 31a0d71880..0000000000 --- a/trunk/test/rubygems/test_gem_builder.rb +++ /dev/null @@ -1,34 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/builder' - -class TestGemBuilder < RubyGemTestCase - - def test_build - builder = Gem::Builder.new quick_gem('a') - - use_ui @ui do - Dir.chdir @tempdir do - builder.build - end - end - - assert_match %r|Successfully built RubyGem\n Name: a|, @ui.output - end - - def test_build_validates - builder = Gem::Builder.new Gem::Specification.new - - assert_raises Gem::InvalidSpecificationException do - builder.build - end - end - -end - diff --git a/trunk/test/rubygems/test_gem_command.rb b/trunk/test/rubygems/test_gem_command.rb deleted file mode 100644 index 9ed57b3692..0000000000 --- a/trunk/test/rubygems/test_gem_command.rb +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/env ruby -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/command' - -class Gem::Command - public :parser -end - -class TestGemCommand < RubyGemTestCase - - def setup - super - - @xopt = nil - - Gem::Command.common_options.clear - Gem::Command.common_options << [ - ['-x', '--exe', 'Execute'], lambda do |*a| - @xopt = true - end - ] - - @cmd_name = 'doit' - @cmd = Gem::Command.new @cmd_name, 'summary' - end - - def test_self_add_specific_extra_args - added_args = %w[--all] - @cmd.add_option '--all' do |v,o| end - - Gem::Command.add_specific_extra_args @cmd_name, added_args - - assert_equal added_args, Gem::Command.specific_extra_args(@cmd_name) - - h = @cmd.add_extra_args [] - - assert_equal added_args, h - end - - def test_self_add_specific_extra_args_unknown - added_args = %w[--definitely_not_there] - - Gem::Command.add_specific_extra_args @cmd_name, added_args - - assert_equal added_args, Gem::Command.specific_extra_args(@cmd_name) - - h = @cmd.add_extra_args [] - - assert_equal [], h - end - - def test_add_option_overlapping_common_and_local_options - @cmd.add_option('-x', '--zip', 'BAD!') do end - @cmd.add_option('-z', '--exe', 'BAD!') do end - @cmd.add_option('-x', '--exe', 'BAD!') do end - - assert_match %r|-x, --zip|, @cmd.parser.to_s - assert_match %r|-z, --exe|, @cmd.parser.to_s - assert_no_match %r|-x, --exe|, @cmd.parser.to_s - end - - def test_basic_accessors - assert_equal "doit", @cmd.command - assert_equal "gem doit", @cmd.program_name - assert_equal "summary", @cmd.summary - end - - def test_common_option_in_class - assert Array === Gem::Command.common_options - end - - def test_defaults - @cmd.add_option('-h', '--help [COMMAND]', 'Get help on COMMAND') do |value, options| - options[:help] = value - end - - @cmd.defaults = { :help => true } - - @cmd.when_invoked do |options| - assert options[:help], "Help options should default true" - end - - use_ui @ui do - @cmd.invoke - end - - assert_match %r|Usage: gem doit|, @ui.output - end - - def test_invoke - done = false - @cmd.when_invoked { done = true } - - use_ui @ui do - @cmd.invoke - end - - assert done - end - - def test_invode_with_bad_options - use_ui @ui do - @cmd.when_invoked do true end - - ex = assert_raise(OptionParser::InvalidOption) do - @cmd.invoke('-zzz') - end - - assert_match(/invalid option:/, ex.message) - end - end - - def test_invoke_with_common_options - @cmd.when_invoked do true end - - use_ui @ui do - @cmd.invoke "-x" - end - - assert @xopt, "Should have done xopt" - end - - # Returning false from the command handler invokes the usage output. - def test_invoke_with_help - done = false - - use_ui @ui do - @cmd.add_option('-h', '--help [COMMAND]', 'Get help on COMMAND') do |value, options| - options[:help] = true - done = true - end - - @cmd.invoke('--help') - - assert done - end - - assert_match(/Usage/, @ui.output) - assert_match(/gem doit/, @ui.output) - assert_match(/\[options\]/, @ui.output) - assert_match(/-h/, @ui.output) - assert_match(/--help \[COMMAND\]/, @ui.output) - assert_match(/Get help on COMMAND/, @ui.output) - assert_match(/-x/, @ui.output) - assert_match(/--exe/, @ui.output) - assert_match(/Execute/, @ui.output) - assert_match(/Common Options:/, @ui.output) - end - - def test_invoke_with_options - @cmd.add_option('-h', '--help [COMMAND]', 'Get help on COMMAND') do |value, options| - options[:help] = true - end - - @cmd.when_invoked do |opts| - assert opts[:help] - end - - use_ui @ui do - @cmd.invoke '-h' - end - - assert_match %r|Usage: gem doit|, @ui.output - end - - def test_option_recognition - @cmd.add_option('-h', '--help [COMMAND]', 'Get help on COMMAND') do |value, options| - options[:help] = true - end - @cmd.add_option('-f', '--file FILE', 'File option') do |value, options| - options[:help] = true - end - assert @cmd.handles?(['-x']) - assert @cmd.handles?(['-h']) - assert @cmd.handles?(['-h', 'command']) - assert @cmd.handles?(['--help', 'command']) - assert @cmd.handles?(['-f', 'filename']) - assert @cmd.handles?(['--file=filename']) - assert ! @cmd.handles?(['-z']) - assert ! @cmd.handles?(['-f']) - assert ! @cmd.handles?(['--toothpaste']) - - args = ['-h', 'command'] - @cmd.handles?(args) - assert_equal ['-h', 'command'], args - end - -end - diff --git a/trunk/test/rubygems/test_gem_command_manager.rb b/trunk/test/rubygems/test_gem_command_manager.rb deleted file mode 100644 index ee58e89844..0000000000 --- a/trunk/test/rubygems/test_gem_command_manager.rb +++ /dev/null @@ -1,213 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/command_manager' - -class InterruptCommand < Gem::Command - - def initialize - super('interrupt', 'Raises an Interrupt Exception', {}) - end - - def execute - raise Interrupt, "Interrupt exception" - end - -end - -class TestGemCommandManager < RubyGemTestCase - - def setup - super - - @command_manager = Gem::CommandManager.new - end - - def test_run_interrupt - use_ui @ui do - @command_manager.register_command :interrupt - assert_raises MockGemUi::TermError do - @command_manager.run 'interrupt' - end - assert_equal '', ui.output - assert_equal "ERROR: Interrupted\n", ui.error - end - end - - def test_process_args_bad_arg - use_ui @ui do - assert_raises(MockGemUi::TermError) { - @command_manager.process_args("--bad-arg") - } - end - - assert_match(/invalid option: --bad-arg/i, @ui.error) - end - - def test_process_args_install - #capture all install options - use_ui @ui do - check_options = nil - @command_manager['install'].when_invoked do |options| - check_options = options - true - end - - #check defaults - @command_manager.process_args("install") - assert_equal false, check_options[:test] - assert_equal true, check_options[:generate_rdoc] - assert_equal false, check_options[:force] - assert_equal :both, check_options[:domain] - assert_equal true, check_options[:wrappers] - assert_equal Gem::Requirement.default, check_options[:version] - assert_equal nil, check_options[:install_dir] - assert_equal nil, check_options[:bin_dir] - - #check settings - check_options = nil - @command_manager.process_args( - "install --force --test --local --rdoc --install-dir . --version 3.0 --no-wrapper --bindir . ") - assert_equal true, check_options[:test] - assert_equal true, check_options[:generate_rdoc] - assert_equal true, check_options[:force] - assert_equal :local, check_options[:domain] - assert_equal false, check_options[:wrappers] - assert_equal Gem::Requirement.new('3.0'), check_options[:version] - assert_equal Dir.pwd, check_options[:install_dir] - assert_equal Dir.pwd, check_options[:bin_dir] - - #check remote domain - check_options = nil - @command_manager.process_args("install --remote") - assert_equal :remote, check_options[:domain] - - #check both domain - check_options = nil - @command_manager.process_args("install --both") - assert_equal :both, check_options[:domain] - - #check both domain - check_options = nil - @command_manager.process_args("install --both") - assert_equal :both, check_options[:domain] - end - end - - def test_process_args_uninstall - #capture all uninstall options - check_options = nil - @command_manager['uninstall'].when_invoked do |options| - check_options = options - true - end - - #check defaults - @command_manager.process_args("uninstall") - assert_equal Gem::Requirement.default, check_options[:version] - - #check settings - check_options = nil - @command_manager.process_args("uninstall foobar --version 3.0") - assert_equal "foobar", check_options[:args].first - assert_equal Gem::Requirement.new('3.0'), check_options[:version] - end - - def test_process_args_check - #capture all check options - check_options = nil - @command_manager['check'].when_invoked do |options| - check_options = options - true - end - - #check defaults - @command_manager.process_args("check") - assert_equal false, check_options[:verify] - assert_equal false, check_options[:alien] - - #check settings - check_options = nil - @command_manager.process_args("check --verify foobar --alien") - assert_equal "foobar", check_options[:verify] - assert_equal true, check_options[:alien] - end - - def test_process_args_build - #capture all build options - check_options = nil - @command_manager['build'].when_invoked do |options| - check_options = options - true - end - - #check defaults - @command_manager.process_args("build") - #NOTE: Currently no defaults - - #check settings - check_options = nil - @command_manager.process_args("build foobar.rb") - assert_equal 'foobar.rb', check_options[:args].first - end - - def test_process_args_query - #capture all query options - check_options = nil - @command_manager['query'].when_invoked do |options| - check_options = options - true - end - - #check defaults - @command_manager.process_args("query") - assert_equal(//, check_options[:name]) - assert_equal :local, check_options[:domain] - assert_equal false, check_options[:details] - - #check settings - check_options = nil - @command_manager.process_args("query --name foobar --local --details") - assert_equal(/foobar/i, check_options[:name]) - assert_equal :local, check_options[:domain] - assert_equal true, check_options[:details] - - #remote domain - check_options = nil - @command_manager.process_args("query --remote") - assert_equal :remote, check_options[:domain] - - #both (local/remote) domains - check_options = nil - @command_manager.process_args("query --both") - assert_equal :both, check_options[:domain] - end - - def test_process_args_update - #capture all update options - check_options = nil - @command_manager['update'].when_invoked do |options| - check_options = options - true - end - - #check defaults - @command_manager.process_args("update") - assert_equal true, check_options[:generate_rdoc] - - #check settings - check_options = nil - @command_manager.process_args("update --force --test --rdoc --install-dir .") - assert_equal true, check_options[:test] - assert_equal true, check_options[:generate_rdoc] - assert_equal true, check_options[:force] - assert_equal Dir.pwd, check_options[:install_dir] - end - -end - diff --git a/trunk/test/rubygems/test_gem_commands_build_command.rb b/trunk/test/rubygems/test_gem_commands_build_command.rb deleted file mode 100644 index a49b6777bd..0000000000 --- a/trunk/test/rubygems/test_gem_commands_build_command.rb +++ /dev/null @@ -1,75 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/build_command' -require 'rubygems/format' - -class TestGemCommandsBuildCommand < RubyGemTestCase - - def setup - super - - @gem = quick_gem 'some_gem' do |s| - s.rubyforge_project = 'example' - end - - @cmd = Gem::Commands::BuildCommand.new - end - - def test_execute - gemspec_file = File.join(@tempdir, "#{@gem.full_name}.gemspec") - - File.open gemspec_file, 'w' do |gs| - gs.write @gem.to_ruby - end - - util_test_build_gem @gem, gemspec_file - end - - def test_execute_yaml - gemspec_file = File.join(@tempdir, "#{@gem.full_name}.gemspec") - - File.open gemspec_file, 'w' do |gs| - gs.write @gem.to_yaml - end - - util_test_build_gem @gem, gemspec_file - end - - def test_execute_bad_gem - @cmd.options[:args] = %w[some_gem] - use_ui @ui do - @cmd.execute - end - - assert_equal '', @ui.output - assert_equal "ERROR: Gemspec file not found: some_gem\n", @ui.error - end - - def util_test_build_gem(gem, gemspec_file) - @cmd.options[:args] = [gemspec_file] - - use_ui @ui do - Dir.chdir @tempdir do - @cmd.execute - end - end - - output = @ui.output.split "\n" - assert_equal " Successfully built RubyGem", output.shift - assert_equal " Name: some_gem", output.shift - assert_equal " Version: 2", output.shift - assert_equal " File: some_gem-2.gem", output.shift - assert_equal [], output - assert_equal '', @ui.error - - gem_file = File.join @tempdir, "#{gem.full_name}.gem" - assert File.exist?(gem_file) - - spec = Gem::Format.from_file_by_path(gem_file).spec - - assert_equal "some_gem", spec.name - assert_equal "this is a summary", spec.summary - end - -end - diff --git a/trunk/test/rubygems/test_gem_commands_cert_command.rb b/trunk/test/rubygems/test_gem_commands_cert_command.rb deleted file mode 100644 index 79e3e72158..0000000000 --- a/trunk/test/rubygems/test_gem_commands_cert_command.rb +++ /dev/null @@ -1,126 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') - -require 'rubygems/commands/cert_command' - -unless defined? OpenSSL then - warn "`gem cert` tests are being skipped, module OpenSSL not found" -end - -class TestGemCommandsCertCommand < RubyGemTestCase - - def setup - super - - @orig_security_trust_dir = Gem::Security::OPT[:trust_dir] - Gem::Security::OPT[:trust_dir] = @tempdir - - @cmd = Gem::Commands::CertCommand.new - - root = File.expand_path(File.dirname(__FILE__)) - - FileUtils.cp File.join(root, 'data', 'gem-private_key.pem'), @tempdir - FileUtils.cp File.join(root, 'data', 'gem-public_cert.pem'), @tempdir - - @cert_file_name = File.join @tempdir, 'gem-public_cert.pem' - @pkey_file_name = File.join @tempdir, 'gem-private_key.pem' - end - - def teardown - Gem::Security::OPT[:trust_dir] = @orig_security_trust_dir - - super - end - - def test_execute_add - use_ui @ui do - @cmd.send :handle_options, %W[--add #{@cert_file_name}] - end - - assert_equal "Added '/CN=rubygems/DC=example/DC=com'\n", @ui.output - assert_equal '', @ui.error - end - - def test_execute_build - FileUtils.rm @cert_file_name - FileUtils.rm @pkey_file_name - - use_ui @ui do - Dir.chdir @tempdir do - @cmd.send :handle_options, %W[--build nobody@example.com] - end - end - - output = @ui.output.split "\n" - - assert_equal 'Public Cert: gem-public_cert.pem', output.shift - assert_equal 'Private Key: gem-private_key.pem', output.shift - assert_equal 'Don\'t forget to move the key file to somewhere private...', - output.shift - assert_equal [], output - - assert_equal '', @ui.error - - assert File.exist?(File.join(@tempdir, 'gem-private_key.pem')) - assert File.exist?(File.join(@tempdir, 'gem-public_cert.pem')) - end - - def test_execute_certificate - use_ui @ui do - @cmd.send :handle_options, %W[--certificate #{@cert_file_name}] - end - - assert_equal '', @ui.output - assert_equal '', @ui.error - - assert_equal File.read(@cert_file_name), - Gem::Security::OPT[:issuer_cert].to_s - end - - def test_execute_list - use_ui @ui do - @cmd.send :handle_options, %W[--list] - end - - assert_equal "/CN=rubygems/DC=example/DC=com\n", @ui.output - assert_equal '', @ui.error - end - - def test_execute_private_key - use_ui @ui do - @cmd.send :handle_options, %W[--private-key #{@pkey_file_name}] - end - - assert_equal '', @ui.output - assert_equal '', @ui.error - - assert_equal File.read(@pkey_file_name), - Gem::Security::OPT[:issuer_key].to_s - end - - def test_execute_remove - use_ui @ui do - @cmd.send :handle_options, %W[--remove rubygems] - end - - assert_equal "Removed '/CN=rubygems/DC=example/DC=com'\n", @ui.output - assert_equal '', @ui.error - - assert !File.exist?(@cert_file_name) - end - - def test_execute_sign - use_ui @ui do - @cmd.send :handle_options, %W[ - -K #{@pkey_file_name} -C #{@cert_file_name} --sign #{@cert_file_name} - ] - end - - assert_equal '', @ui.output - assert_equal '', @ui.error - - # HACK this test sucks - end - -end if defined? OpenSSL - diff --git a/trunk/test/rubygems/test_gem_commands_check_command.rb b/trunk/test/rubygems/test_gem_commands_check_command.rb deleted file mode 100644 index eea7cc5cfa..0000000000 --- a/trunk/test/rubygems/test_gem_commands_check_command.rb +++ /dev/null @@ -1,25 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/check_command' - -class TestGemCommandsCheckCommand < RubyGemTestCase - - def setup - super - - @cmd = Gem::Commands::CheckCommand.new - end - - def test_initialize - assert_equal "check", @cmd.command - assert_equal "gem check", @cmd.program_name - assert_match(/Check/, @cmd.summary) - end - -end diff --git a/trunk/test/rubygems/test_gem_commands_contents_command.rb b/trunk/test/rubygems/test_gem_commands_contents_command.rb deleted file mode 100644 index cdb89673da..0000000000 --- a/trunk/test/rubygems/test_gem_commands_contents_command.rb +++ /dev/null @@ -1,92 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/contents_command' - -class TestGemCommandsContentsCommand < RubyGemTestCase - - def setup - super - - @cmd = Gem::Commands::ContentsCommand.new - end - - def test_execute - @cmd.options[:args] = %w[foo] - quick_gem 'foo' do |gem| - gem.files = %w[lib/foo.rb Rakefile] - end - - use_ui @ui do - @cmd.execute - end - - assert_match %r|lib/foo\.rb|, @ui.output - assert_match %r|Rakefile|, @ui.output - assert_equal "", @ui.error - end - - def test_execute_bad_gem - @cmd.options[:args] = %w[foo] - - assert_raise MockGemUi::TermError do - use_ui @ui do - @cmd.execute - end - end - - assert_match %r|Unable to find gem 'foo' in default gem paths|, @ui.output - assert_match %r|Directories searched:|, @ui.output - assert_equal "", @ui.error - end - - def test_execute_exact_match - @cmd.options[:args] = %w[foo] - quick_gem 'foo' do |gem| - gem.files = %w[lib/foo.rb Rakefile] - end - - quick_gem 'foo_bar' do |gem| - gem.files = %w[lib/foo_bar.rb Rakefile] - end - - use_ui @ui do - @cmd.execute - end - - assert_match %r|lib/foo\.rb|, @ui.output - assert_match %r|Rakefile|, @ui.output - assert_equal "", @ui.error - end - - def test_execute_lib_only - @cmd.options[:args] = %w[foo] - @cmd.options[:lib_only] = true - - quick_gem 'foo' do |gem| - gem.files = %w[lib/foo.rb Rakefile] - end - - use_ui @ui do - @cmd.execute - end - - assert_match %r|lib/foo\.rb|, @ui.output - assert_no_match %r|Rakefile|, @ui.output - - assert_equal "", @ui.error - end - - def test_handle_options - assert_equal false, @cmd.options[:lib_only] - assert_equal [], @cmd.options[:specdirs] - assert_equal nil, @cmd.options[:version] - - @cmd.send :handle_options, %w[-l -s foo --version 0.0.2] - - assert_equal true, @cmd.options[:lib_only] - assert_equal %w[foo], @cmd.options[:specdirs] - assert_equal Gem::Requirement.new('0.0.2'), @cmd.options[:version] - end - -end - diff --git a/trunk/test/rubygems/test_gem_commands_dependency_command.rb b/trunk/test/rubygems/test_gem_commands_dependency_command.rb deleted file mode 100644 index e143110a71..0000000000 --- a/trunk/test/rubygems/test_gem_commands_dependency_command.rb +++ /dev/null @@ -1,227 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/dependency_command' - -class TestGemCommandsDependencyCommand < RubyGemTestCase - - def setup - super - - @cmd = Gem::Commands::DependencyCommand.new - @cmd.options[:domain] = :local - - util_setup_fake_fetcher - end - - def test_execute - quick_gem 'foo' do |gem| - gem.add_dependency 'bar', '> 1' - end - - Gem.source_index = nil - - @cmd.options[:args] = %w[foo] - - use_ui @ui do - @cmd.execute - end - - assert_equal "Gem foo-2\n bar (> 1, runtime)\n\n", @ui.output - assert_equal '', @ui.error - end - - def test_execute_no_args - Gem.source_index = nil - - @cmd.options[:args] = [] - - use_ui @ui do - @cmd.execute - end - - expected = <<-EOF -Gem a-1 - -Gem a-2 - -Gem a_evil-9 - -Gem b-2 - -Gem c-1.2 - -Gem pl-1-x86-linux - - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - - def test_execute_no_match - @cmd.options[:args] = %w[foo] - - assert_raise MockGemUi::TermError do - use_ui @ui do - @cmd.execute - end - end - - assert_equal "No gems found matching foo (>= 0)\n", @ui.output - assert_equal '', @ui.error - end - - def test_execute_pipe_format - quick_gem 'foo' do |gem| - gem.add_dependency 'bar', '> 1' - end - - @cmd.options[:args] = %w[foo] - @cmd.options[:pipe_format] = true - - use_ui @ui do - @cmd.execute - end - - assert_equal "bar --version '> 1'\n", @ui.output - assert_equal '', @ui.error - end - - def test_execute_regexp - Gem.source_index = nil - - @cmd.options[:args] = %w[/[ab]/] - - use_ui @ui do - @cmd.execute - end - - expected = <<-EOF -Gem a-1 - -Gem a-2 - -Gem a_evil-9 - -Gem b-2 - - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - - def test_execute_reverse - quick_gem 'foo' do |gem| - gem.add_dependency 'bar', '> 1' - end - - quick_gem 'baz' do |gem| - gem.add_dependency 'foo' - end - - Gem.source_index = nil - - @cmd.options[:args] = %w[foo] - @cmd.options[:reverse_dependencies] = true - - use_ui @ui do - @cmd.execute - end - - expected = <<-EOF -Gem foo-2 - bar (> 1, runtime) - Used by - baz-2 (foo (>= 0, runtime)) - - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - - def test_execute_reverse_remote - @cmd.options[:args] = %w[foo] - @cmd.options[:reverse_dependencies] = true - @cmd.options[:domain] = :remote - - assert_raise MockGemUi::TermError do - use_ui @ui do - @cmd.execute - end - end - - expected = <<-EOF -ERROR: Only reverse dependencies for local gems are supported. - EOF - - assert_equal '', @ui.output - assert_equal expected, @ui.error - end - - def test_execute_remote - foo = quick_gem 'foo' do |gem| - gem.add_dependency 'bar', '> 1' - end - - @fetcher = Gem::FakeFetcher.new - Gem::RemoteFetcher.fetcher = @fetcher - - util_setup_spec_fetcher foo - - FileUtils.rm File.join(@gemhome, 'specifications', - "#{foo.full_name}.gemspec") - - @cmd.options[:args] = %w[foo] - @cmd.options[:domain] = :remote - - use_ui @ui do - @cmd.execute - end - - assert_equal "Gem foo-2\n bar (> 1, runtime)\n\n", @ui.output - assert_equal '', @ui.error - end - - def test_execute_remote_legacy - foo = quick_gem 'foo' do |gem| - gem.add_dependency 'bar', '> 1' - end - - @fetcher = Gem::FakeFetcher.new - Gem::RemoteFetcher.fetcher = @fetcher - - Gem::SpecFetcher.fetcher = nil - si = util_setup_source_info_cache foo - - @fetcher.data["#{@gem_repo}yaml"] = YAML.dump si - @fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] = - si.dump - - @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] = nil - - FileUtils.rm File.join(@gemhome, 'specifications', - "#{foo.full_name}.gemspec") - - @cmd.options[:args] = %w[foo] - @cmd.options[:domain] = :remote - - use_ui @ui do - @cmd.execute - end - - assert_equal "Gem foo-2\n bar (> 1, runtime)\n\n", @ui.output - - expected = <<-EOF -WARNING: RubyGems 1.2+ index not found for: -\t#{@gem_repo} - -RubyGems will revert to legacy indexes degrading performance. - EOF - - assert_equal expected, @ui.error - end - -end - diff --git a/trunk/test/rubygems/test_gem_commands_environment_command.rb b/trunk/test/rubygems/test_gem_commands_environment_command.rb deleted file mode 100644 index 78246b0301..0000000000 --- a/trunk/test/rubygems/test_gem_commands_environment_command.rb +++ /dev/null @@ -1,134 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/environment_command' - -class TestGemCommandsEnvironmentCommand < RubyGemTestCase - - def setup - super - - @cmd = Gem::Commands::EnvironmentCommand.new - end - - def test_execute - orig_sources = Gem.sources.dup - Gem.sources.replace %w[http://gems.example.com] - - @cmd.send :handle_options, %w[] - - use_ui @ui do - @cmd.execute - end - - assert_match %r|RUBYGEMS VERSION: (\d\.)+\d|, @ui.output - assert_match %r|RUBY VERSION: \d\.\d\.\d \(.*\) \[.*\]|, @ui.output - assert_match %r|INSTALLATION DIRECTORY: #{Regexp.escape @gemhome}|, - @ui.output - assert_match %r|RUBYGEMS PREFIX: |, @ui.output - assert_match %r|RUBY EXECUTABLE:.*#{Gem::ConfigMap[:RUBY_INSTALL_NAME]}|, - @ui.output - assert_match %r|EXECUTABLE DIRECTORY:|, @ui.output - assert_match %r|RUBYGEMS PLATFORMS:|, @ui.output - assert_match %r|- #{Gem::Platform.local}|, @ui.output - assert_match %r|GEM PATHS:|, @ui.output - assert_match %r|- #{Regexp.escape @gemhome}|, @ui.output - assert_match %r|GEM CONFIGURATION:|, @ui.output - assert_match %r|:verbose => |, @ui.output - assert_match %r|REMOTE SOURCES:|, @ui.output - assert_equal '', @ui.error - - ensure - Gem.sources.replace orig_sources - end - - def test_execute_gemdir - @cmd.send :handle_options, %w[gemdir] - - use_ui @ui do - @cmd.execute - end - - assert_equal "#{@gemhome}\n", @ui.output - assert_equal '', @ui.error - end - - def test_execute_gempath - @cmd.send :handle_options, %w[gempath] - - use_ui @ui do - @cmd.execute - end - - assert_equal "#{@gemhome}\n", @ui.output - assert_equal '', @ui.error - end - - def test_execute_gempath_multiple - Gem.clear_paths - path = [@gemhome, "#{@gemhome}2"].join File::PATH_SEPARATOR - ENV['GEM_PATH'] = path - - @cmd.send :handle_options, %w[gempath] - - use_ui @ui do - @cmd.execute - end - - assert_equal "#{Gem.path.join File::PATH_SEPARATOR}\n", @ui.output - assert_equal '', @ui.error - end - - def test_execute_packageversion - @cmd.send :handle_options, %w[packageversion] - - use_ui @ui do - @cmd.execute - end - - assert_equal "#{Gem::RubyGemsPackageVersion}\n", @ui.output - assert_equal '', @ui.error - end - - def test_execute_remotesources - orig_sources = Gem.sources.dup - Gem.sources.replace %w[http://gems.example.com] - - @cmd.send :handle_options, %w[remotesources] - - use_ui @ui do - @cmd.execute - end - - assert_equal "http://gems.example.com\n", @ui.output - assert_equal '', @ui.error - - ensure - Gem.sources.replace orig_sources - end - - def test_execute_unknown - @cmd.send :handle_options, %w[unknown] - - assert_raise Gem::CommandLineError do - use_ui @ui do - @cmd.execute - end - end - - assert_equal '', @ui.output - assert_equal '', @ui.error - end - - def test_execute_version - @cmd.send :handle_options, %w[version] - - use_ui @ui do - @cmd.execute - end - - assert_equal "#{Gem::RubyGemsVersion}\n", @ui.output - assert_equal '', @ui.error - end - -end - diff --git a/trunk/test/rubygems/test_gem_commands_fetch_command.rb b/trunk/test/rubygems/test_gem_commands_fetch_command.rb deleted file mode 100644 index eaa13595b7..0000000000 --- a/trunk/test/rubygems/test_gem_commands_fetch_command.rb +++ /dev/null @@ -1,55 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/package' -require 'rubygems/security' -require 'rubygems/commands/fetch_command' - -class TestGemCommandsFetchCommand < RubyGemTestCase - - def setup - super - - @cmd = Gem::Commands::FetchCommand.new - end - - def test_execute - util_setup_fake_fetcher - util_setup_spec_fetcher @a2 - - @fetcher.data["#{@gem_repo}gems/#{@a2.full_name}.gem"] = - File.read(File.join(@gemhome, 'cache', "#{@a2.full_name}.gem")) - - @cmd.options[:args] = [@a2.name] - - use_ui @ui do - Dir.chdir @tempdir do - @cmd.execute - end - end - - assert File.exist?(File.join(@tempdir, "#{@a2.full_name}.gem")), - "#{@a2.full_name} fetched" - end - - def test_execute_legacy - util_setup_fake_fetcher - util_setup_source_info_cache @a2 - - @fetcher.data["#{@gem_repo}yaml"] = '' - @fetcher.data["#{@gem_repo}gems/#{@a2.full_name}.gem"] = - File.read(File.join(@gemhome, 'cache', "#{@a2.full_name}.gem")) - - @cmd.options[:args] = [@a2.name] - - use_ui @ui do - Dir.chdir @tempdir do - @cmd.execute - end - end - - assert File.exist?(File.join(@tempdir, "#{@a2.full_name}.gem")), - "#{@a2.full_name} fetched" - end - -end - diff --git a/trunk/test/rubygems/test_gem_commands_generate_index_command.rb b/trunk/test/rubygems/test_gem_commands_generate_index_command.rb deleted file mode 100644 index 548197841b..0000000000 --- a/trunk/test/rubygems/test_gem_commands_generate_index_command.rb +++ /dev/null @@ -1,32 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/indexer' -require 'rubygems/commands/generate_index_command' - -class TestGemCommandsGenerateIndexCommand < RubyGemTestCase - - def setup - super - - @cmd = Gem::Commands::GenerateIndexCommand.new - @cmd.options[:directory] = @gemhome - end - - def test_execute - use_ui @ui do - @cmd.execute - end - - yaml = File.join @gemhome, 'yaml' - yaml_z = File.join @gemhome, 'yaml.Z' - quick_index = File.join @gemhome, 'quick', 'index' - quick_index_rz = File.join @gemhome, 'quick', 'index.rz' - - assert File.exist?(yaml), yaml - assert File.exist?(yaml_z), yaml_z - assert File.exist?(quick_index), quick_index - assert File.exist?(quick_index_rz), quick_index_rz - end - -end if ''.respond_to? :to_xs - diff --git a/trunk/test/rubygems/test_gem_commands_install_command.rb b/trunk/test/rubygems/test_gem_commands_install_command.rb deleted file mode 100644 index ef04072b93..0000000000 --- a/trunk/test/rubygems/test_gem_commands_install_command.rb +++ /dev/null @@ -1,166 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/install_command' - -class TestGemCommandsInstallCommand < RubyGemTestCase - - def setup - super - - @cmd = Gem::Commands::InstallCommand.new - @cmd.options[:generate_rdoc] = false - @cmd.options[:generate_ri] = false - end - - def test_execute_include_dependencies - @cmd.options[:include_dependencies] = true - @cmd.options[:args] = [] - - assert_raise Gem::CommandLineError do - use_ui @ui do - @cmd.execute - end - end - - output = @ui.output.split "\n" - assert_equal "INFO: `gem install -y` is now default and will be removed", - output.shift - assert_equal "INFO: use --ignore-dependencies to install only the gems you list", - output.shift - assert output.empty?, output.inspect - end - - def test_execute_local - util_setup_fake_fetcher - @cmd.options[:domain] = :local - - FileUtils.mv File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"), - File.join(@tempdir) - - @cmd.options[:args] = [@a2.name] - - use_ui @ui do - orig_dir = Dir.pwd - begin - Dir.chdir @tempdir - e = assert_raises Gem::SystemExitException do - @cmd.execute - end - assert_equal 0, e.exit_code - ensure - Dir.chdir orig_dir - end - end - - out = @ui.output.split "\n" - assert_equal "Successfully installed #{@a2.full_name}", out.shift - assert_equal "1 gem installed", out.shift - assert out.empty?, out.inspect - end - - def test_execute_local_missing - util_setup_fake_fetcher - @cmd.options[:domain] = :local - - @cmd.options[:args] = %w[no_such_gem] - - use_ui @ui do - e = assert_raises Gem::SystemExitException do - @cmd.execute - end - assert_equal 2, e.exit_code - end - - # HACK no repository was checked - assert_equal "ERROR: could not find gem no_such_gem locally or in a repository\n", - @ui.error - end - - def test_execute_no_gem - @cmd.options[:args] = %w[] - - assert_raise Gem::CommandLineError do - @cmd.execute - end - end - - def test_execute_nonexistent - util_setup_fake_fetcher - util_setup_spec_fetcher - - @cmd.options[:args] = %w[nonexistent] - - use_ui @ui do - e = assert_raises Gem::SystemExitException do - @cmd.execute - end - assert_equal 2, e.exit_code - end - - assert_equal "ERROR: could not find gem nonexistent locally or in a repository\n", - @ui.error - end - - def test_execute_remote - @cmd.options[:generate_rdoc] = true - @cmd.options[:generate_ri] = true - - util_setup_fake_fetcher - util_setup_spec_fetcher @a2 - - @fetcher.data["#{@gem_repo}gems/#{@a2.full_name}.gem"] = - read_binary(File.join(@gemhome, 'cache', "#{@a2.full_name}.gem")) - - @cmd.options[:args] = [@a2.name] - - use_ui @ui do - e = assert_raises Gem::SystemExitException do - @cmd.execute - end - assert_equal 0, e.exit_code - end - - out = @ui.output.split "\n" - assert_equal "Successfully installed #{@a2.full_name}", out.shift - assert_equal "1 gem installed", out.shift - assert_equal "Installing ri documentation for #{@a2.full_name}...", - out.shift - assert_equal "Installing RDoc documentation for #{@a2.full_name}...", - out.shift - assert out.empty?, out.inspect - end - - def test_execute_two - util_setup_fake_fetcher - @cmd.options[:domain] = :local - - FileUtils.mv File.join(@gemhome, 'cache', "#{@a2.full_name}.gem"), - File.join(@tempdir) - - FileUtils.mv File.join(@gemhome, 'cache', "#{@b2.full_name}.gem"), - File.join(@tempdir) - - @cmd.options[:args] = [@a2.name, @b2.name] - - use_ui @ui do - orig_dir = Dir.pwd - begin - Dir.chdir @tempdir - e = assert_raises Gem::SystemExitException do - @cmd.execute - end - assert_equal 0, e.exit_code - ensure - Dir.chdir orig_dir - end - end - - out = @ui.output.split "\n" - assert_equal "Successfully installed #{@a2.full_name}", out.shift - assert_equal "Successfully installed #{@b2.full_name}", out.shift - assert_equal "2 gems installed", out.shift - assert out.empty?, out.inspect - end - -end - diff --git a/trunk/test/rubygems/test_gem_commands_mirror_command.rb b/trunk/test/rubygems/test_gem_commands_mirror_command.rb deleted file mode 100644 index 359ba5481e..0000000000 --- a/trunk/test/rubygems/test_gem_commands_mirror_command.rb +++ /dev/null @@ -1,61 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/indexer' -require 'rubygems/commands/mirror_command' - -class TestGemCommandsMirrorCommand < RubyGemTestCase - - def setup - super - - @cmd = Gem::Commands::MirrorCommand.new - end - - def test_execute - util_make_gems - - gems_dir = File.join @tempdir, 'gems' - mirror = File.join @tempdir, 'mirror' - - FileUtils.mkdir_p gems_dir - FileUtils.mkdir_p mirror - - Dir[File.join(@gemhome, 'cache', '*.gem')].each do |gem| - FileUtils.mv gem, gems_dir - end - - use_ui @ui do - Gem::Indexer.new(@tempdir).generate_index - end - - orig_HOME = ENV['HOME'] - ENV['HOME'] = @tempdir - Gem.instance_variable_set :@user_home, nil - - File.open File.join(Gem.user_home, '.gemmirrorrc'), 'w' do |fp| - fp.puts "---" - # tempdir could be a drive+path (under windows) - if @tempdir.match(/[a-z]:/i) - fp.puts "- from: file:///#{@tempdir}" - else - fp.puts "- from: file://#{@tempdir}" - end - fp.puts " to: #{mirror}" - end - - use_ui @ui do - @cmd.execute - end - - assert File.exist?(File.join(mirror, 'gems', "#{@a1.full_name}.gem")) - assert File.exist?(File.join(mirror, 'gems', "#{@a2.full_name}.gem")) - assert File.exist?(File.join(mirror, 'gems', "#{@b2.full_name}.gem")) - assert File.exist?(File.join(mirror, 'gems', "#{@c1_2.full_name}.gem")) - assert File.exist?(File.join(mirror, "Marshal.#{@marshal_version}")) - ensure - orig_HOME.nil? ? ENV.delete('HOME') : ENV['HOME'] = orig_HOME - Gem.instance_variable_set :@user_home, nil - end - -end if ''.respond_to? :to_xs - diff --git a/trunk/test/rubygems/test_gem_commands_outdated_command.rb b/trunk/test/rubygems/test_gem_commands_outdated_command.rb deleted file mode 100644 index a6668c01fc..0000000000 --- a/trunk/test/rubygems/test_gem_commands_outdated_command.rb +++ /dev/null @@ -1,43 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/outdated_command' - -class TestGemCommandsOutdatedCommand < RubyGemTestCase - - def setup - super - - @cmd = Gem::Commands::OutdatedCommand.new - end - - def test_initialize - assert @cmd.handles?(%W[--platform #{Gem::Platform.local}]) - end - - def test_execute - local_01 = quick_gem 'foo', '0.1' - local_02 = quick_gem 'foo', '0.2' - remote_10 = quick_gem 'foo', '1.0' - remote_20 = quick_gem 'foo', '2.0' - - remote_spec_file = File.join @gemhome, 'specifications', - remote_10.full_name + ".gemspec" - FileUtils.rm remote_spec_file - - remote_spec_file = File.join @gemhome, 'specifications', - remote_20.full_name + ".gemspec" - FileUtils.rm remote_spec_file - - @fetcher = Gem::FakeFetcher.new - Gem::RemoteFetcher.fetcher = @fetcher - - util_setup_spec_fetcher remote_10, remote_20 - - use_ui @ui do @cmd.execute end - - assert_equal "foo (0.2 < 2.0)\n", @ui.output - assert_equal "", @ui.error - end - -end - diff --git a/trunk/test/rubygems/test_gem_commands_pristine_command.rb b/trunk/test/rubygems/test_gem_commands_pristine_command.rb deleted file mode 100644 index d5d2d7f339..0000000000 --- a/trunk/test/rubygems/test_gem_commands_pristine_command.rb +++ /dev/null @@ -1,109 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/pristine_command' - -class TestGemCommandsPristineCommand < RubyGemTestCase - - def setup - super - @cmd = Gem::Commands::PristineCommand.new - end - - def test_execute - a = quick_gem 'a' do |s| s.executables = %w[foo] end - FileUtils.mkdir_p File.join(@tempdir, 'bin') - File.open File.join(@tempdir, 'bin', 'foo'), 'w' do |fp| - fp.puts "#!/usr/bin/ruby" - end - - install_gem a - - foo_path = File.join @gemhome, 'gems', a.full_name, 'bin', 'foo' - - File.open foo_path, 'w' do |io| - io.puts 'I changed it!' - end - - @cmd.options[:args] = %w[a] - - use_ui @ui do - @cmd.execute - end - - assert_equal "#!/usr/bin/ruby\n", File.read(foo_path), foo_path - - out = @ui.output.split "\n" - - assert_equal "Restoring gem(s) to pristine condition...", out.shift - assert_equal "Restored #{a.full_name}", out.shift - assert out.empty?, out.inspect - end - - def test_execute_all - a = quick_gem 'a' do |s| s.executables = %w[foo] end - FileUtils.mkdir_p File.join(@tempdir, 'bin') - File.open File.join(@tempdir, 'bin', 'foo'), 'w' do |fp| - fp.puts "#!/usr/bin/ruby" - end - - install_gem a - - gem_bin = File.join @gemhome, 'gems', a.full_name, 'bin', 'foo' - - FileUtils.rm gem_bin - - @cmd.handle_options %w[--all] - - use_ui @ui do - @cmd.execute - end - - assert File.exist?(gem_bin) - - out = @ui.output.split "\n" - - assert_equal "Restoring gem(s) to pristine condition...", out.shift - assert_equal "Restored #{a.full_name}", out.shift - assert out.empty?, out.inspect - end - - def test_execute_missing_cache_gem - a = quick_gem 'a' do |s| s.executables = %w[foo] end - FileUtils.mkdir_p File.join(@tempdir, 'bin') - File.open File.join(@tempdir, 'bin', 'foo'), 'w' do |fp| - fp.puts "#!/usr/bin/ruby" - end - - install_gem a - - FileUtils.rm File.join(@gemhome, 'cache', "#{a.full_name}.gem") - - @cmd.options[:args] = %w[a] - - use_ui @ui do - @cmd.execute - end - - out = @ui.output.split "\n" - - assert_equal "Restoring gem\(s\) to pristine condition...", out.shift - assert out.empty?, out.inspect - - assert_equal "ERROR: Cached gem for #{a.full_name} not found, use `gem install` to restore\n", - @ui.error - end - - def test_execute_no_gem - @cmd.options[:args] = %w[] - - e = assert_raise Gem::CommandLineError do - use_ui @ui do - @cmd.execute - end - end - - assert_match %r|specify a gem name|, e.message - end - -end - diff --git a/trunk/test/rubygems/test_gem_commands_query_command.rb b/trunk/test/rubygems/test_gem_commands_query_command.rb deleted file mode 100644 index 1b65fc7633..0000000000 --- a/trunk/test/rubygems/test_gem_commands_query_command.rb +++ /dev/null @@ -1,288 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/query_command' - -class TestGemCommandsQueryCommand < RubyGemTestCase - - def setup - super - - @cmd = Gem::Commands::QueryCommand.new - - util_setup_fake_fetcher - - @si = util_setup_spec_fetcher @a1, @a2, @pl1 - - @fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] = proc do - raise Gem::RemoteFetcher::FetchError - end - end - - def test_execute - @cmd.handle_options %w[-r] - - use_ui @ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a (2) -pl (1) - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - - def test_execute_all - a1_name = @a1.full_name - a2_name = @a2.full_name - - @cmd.handle_options %w[-r --all] - - use_ui @ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a (2, 1) -pl (1) - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - - def test_execute_details - @a2.summary = 'This is a lot of text. ' * 4 - @a2.authors = ['Abraham Lincoln', 'Hirohito'] - @a2.homepage = 'http://a.example.com/' - @a2.rubyforge_project = 'rubygems' - - @si = util_setup_spec_fetcher @a1, @a2, @pl1 - - @cmd.handle_options %w[-r -d] - - use_ui @ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a (2) - Authors: Abraham Lincoln, Hirohito - Rubyforge: http://rubyforge.org/projects/rubygems - Homepage: http://a.example.com/ - - This is a lot of text. This is a lot of text. This is a lot of text. - This is a lot of text. - -pl (1) - Author: A User - Homepage: http://example.com - - this is a summary - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - - def test_execute_installed - @cmd.handle_options %w[-n c --installed] - - e = assert_raise Gem::SystemExitException do - use_ui @ui do - @cmd.execute - end - end - - assert_equal 0, e.exit_code - - assert_equal "true\n", @ui.output - - assert_equal '', @ui.error - end - - def test_execute_installed_no_name - @cmd.handle_options %w[--installed] - - e = assert_raise Gem::SystemExitException do - use_ui @ui do - @cmd.execute - end - end - - assert_equal '', @ui.output - assert_equal "ERROR: You must specify a gem name\n", @ui.error - - assert_equal 4, e.exit_code - end - - def test_execute_installed_not_installed - @cmd.handle_options %w[-n not_installed --installed] - - e = assert_raise Gem::SystemExitException do - use_ui @ui do - @cmd.execute - end - end - - assert_equal "false\n", @ui.output - assert_equal '', @ui.error - - assert_equal 1, e.exit_code - end - - def test_execute_installed_version - @cmd.handle_options %w[-n c --installed --version 1.2] - - e = assert_raise Gem::SystemExitException do - use_ui @ui do - @cmd.execute - end - end - - assert_equal "true\n", @ui.output - assert_equal '', @ui.error - - assert_equal 0, e.exit_code - end - - def test_execute_installed_version_not_installed - @cmd.handle_options %w[-n c --installed --version 2] - - e = assert_raise Gem::SystemExitException do - use_ui @ui do - @cmd.execute - end - end - - assert_equal "false\n", @ui.output - assert_equal '', @ui.error - - assert_equal 1, e.exit_code - end - - def test_execute_legacy - Gem::SpecFetcher.fetcher = nil - si = util_setup_source_info_cache @a1, @a2, @pl1 - - @fetcher.data["#{@gem_repo}yaml"] = YAML.dump si - @fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] = - si.dump - - @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] = nil - - @cmd.handle_options %w[-r] - - use_ui @ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a (2) -pl (1) - EOF - - assert_equal expected, @ui.output - - expected = <<-EOF -WARNING: RubyGems 1.2+ index not found for: -\t#{@gem_repo} - -RubyGems will revert to legacy indexes degrading performance. - EOF - - assert_equal expected, @ui.error - end - - def test_execute_local_details - @a2.summary = 'This is a lot of text. ' * 4 - @a2.authors = ['Abraham Lincoln', 'Hirohito'] - @a2.homepage = 'http://a.example.com/' - @a2.rubyforge_project = 'rubygems' - - @cmd.handle_options %w[--local --details] - - use_ui @ui do - @cmd.execute - end - - expected = <<-EOF - -*** LOCAL GEMS *** - -a (2, 1) - Author: A User - Homepage: http://example.com - Installed at (2): #{@gemhome} - (1): #{@gemhome} - - this is a summary - -a_evil (9) - Author: A User - Homepage: http://example.com - Installed at: #{@gemhome} - - this is a summary - -b (2) - Author: A User - Homepage: http://example.com - Installed at: #{@gemhome} - - this is a summary - -c (1.2) - Author: A User - Homepage: http://example.com - Installed at: #{@gemhome} - - this is a summary - -pl (1) - Author: A User - Homepage: http://example.com - Installed at: #{@gemhome} - - this is a summary - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - - def test_execute_no_versions - @cmd.handle_options %w[-r --no-versions] - - use_ui @ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a -pl - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - -end - diff --git a/trunk/test/rubygems/test_gem_commands_server_command.rb b/trunk/test/rubygems/test_gem_commands_server_command.rb deleted file mode 100644 index 2985b036d8..0000000000 --- a/trunk/test/rubygems/test_gem_commands_server_command.rb +++ /dev/null @@ -1,27 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/server_command' - -class TestGemCommandsServerCommand < RubyGemTestCase - - def setup - super - - @cmd = Gem::Commands::ServerCommand.new - end - - def test_handle_options - @cmd.send :handle_options, %w[-p 8808 --no-daemon] - - assert_equal false, @cmd.options[:daemon] - assert_equal @gemhome, @cmd.options[:gemdir] - assert_equal 8808, @cmd.options[:port] - - @cmd.send :handle_options, %w[-p 9999 -d /nonexistent --daemon] - - assert_equal true, @cmd.options[:daemon] - assert_equal File.expand_path('/nonexistent'), @cmd.options[:gemdir] - assert_equal 9999, @cmd.options[:port] - end -end - diff --git a/trunk/test/rubygems/test_gem_commands_sources_command.rb b/trunk/test/rubygems/test_gem_commands_sources_command.rb deleted file mode 100644 index 623c732e50..0000000000 --- a/trunk/test/rubygems/test_gem_commands_sources_command.rb +++ /dev/null @@ -1,275 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/sources_command' - -class TestGemCommandsSourcesCommand < RubyGemTestCase - - def setup - super - - @cmd = Gem::Commands::SourcesCommand.new - - @new_repo = "http://beta-gems.example.com" - end - - def test_execute - util_setup_spec_fetcher - @cmd.handle_options [] - - use_ui @ui do - @cmd.execute - end - - expected = <<-EOF -*** CURRENT SOURCES *** - -#{@gem_repo} - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - - def test_execute_add - util_setup_fake_fetcher - - si = Gem::SourceIndex.new - si.add_spec @a1 - - specs = si.map do |_, spec| - [spec.name, spec.version, spec.original_platform] - end - - specs_dump_gz = StringIO.new - Zlib::GzipWriter.wrap specs_dump_gz do |io| - Marshal.dump specs, io - end - - @fetcher.data["#{@new_repo}/specs.#{@marshal_version}.gz"] = - specs_dump_gz.string - - @cmd.handle_options %W[--add #{@new_repo}] - - util_setup_spec_fetcher - - use_ui @ui do - @cmd.execute - end - - assert_equal [@gem_repo, @new_repo], Gem.sources - - expected = <<-EOF -#{@new_repo} added to sources - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - - def test_execute_add_nonexistent_source - util_setup_fake_fetcher - - uri = "http://beta-gems.example.com/specs.#{@marshal_version}.gz" - @fetcher.data[uri] = proc do - raise Gem::RemoteFetcher::FetchError.new('it died', uri) - end - - Gem::RemoteFetcher.fetcher = @fetcher - - @cmd.handle_options %w[--add http://beta-gems.example.com] - - util_setup_spec_fetcher - - use_ui @ui do - @cmd.execute - end - - expected = <<-EOF -Error fetching http://beta-gems.example.com: -\tit died (#{uri}) - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - - def test_execute_add_bad_uri - @cmd.handle_options %w[--add beta-gems.example.com] - - util_setup_spec_fetcher - - use_ui @ui do - @cmd.execute - end - - assert_equal [@gem_repo], Gem.sources - - expected = <<-EOF -beta-gems.example.com is not a URI - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - - def test_execute_add_legacy - util_setup_fake_fetcher - util_setup_source_info_cache - - si = Gem::SourceIndex.new - si.add_spec @a1 - - @fetcher.data["#{@new_repo}/yaml"] = '' - - @cmd.handle_options %W[--add #{@new_repo}] - - use_ui @ui do - @cmd.execute - end - - assert_equal [@gem_repo], Gem.sources - - expected = <<-EOF -WARNING: RubyGems 1.2+ index not found for: -\t#{@new_repo} - -Will cause RubyGems to revert to legacy indexes, degrading performance. - EOF - - assert_equal "#{@new_repo} added to sources\n", @ui.output - assert_equal expected, @ui.error - end - - def test_execute_clear_all - @cmd.handle_options %w[--clear-all] - - util_setup_source_info_cache - - cache = Gem::SourceInfoCache.cache - cache.update - cache.write_cache - - assert File.exist?(cache.system_cache_file), - 'system cache file' - assert File.exist?(cache.latest_system_cache_file), - 'latest system cache file' - - util_setup_spec_fetcher - - fetcher = Gem::SpecFetcher.fetcher - - # HACK figure out how to force directory creation via fetcher - #assert File.directory?(fetcher.dir), 'cache dir exists' - - use_ui @ui do - @cmd.execute - end - - expected = <<-EOF -*** Removed specs cache *** -*** Removed user source cache *** -*** Removed latest user source cache *** -*** Removed system source cache *** -*** Removed latest system source cache *** - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - - assert !File.exist?(cache.system_cache_file), - 'system cache file' - assert !File.exist?(cache.latest_system_cache_file), - 'latest system cache file' - - assert !File.exist?(fetcher.dir), 'cache dir removed' - end - - def test_execute_remove - @cmd.handle_options %W[--remove #{@gem_repo}] - - util_setup_spec_fetcher - - use_ui @ui do - @cmd.execute - end - - expected = "#{@gem_repo} removed from sources\n" - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - - def test_execute_remove_no_network - @cmd.handle_options %W[--remove #{@gem_repo}] - - util_setup_fake_fetcher - - @fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] = proc do - raise Gem::RemoteFetcher::FetchError - end - - use_ui @ui do - @cmd.execute - end - - expected = "#{@gem_repo} removed from sources\n" - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - - def test_execute_update - @cmd.handle_options %w[--update] - - util_setup_fake_fetcher - source_index = util_setup_spec_fetcher @a1 - - specs = source_index.map do |name, spec| - [spec.name, spec.version, spec.original_platform] - end - - @fetcher.data["#{@gem_repo}specs.#{Gem.marshal_version}.gz"] = - util_gzip Marshal.dump(specs) - - latest_specs = source_index.latest_specs.map do |spec| - [spec.name, spec.version, spec.original_platform] - end - - @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] = - util_gzip Marshal.dump(latest_specs) - - use_ui @ui do - @cmd.execute - end - - assert_equal "source cache successfully updated\n", @ui.output - assert_equal '', @ui.error - end - - def test_execute_update_legacy - @cmd.handle_options %w[--update] - - util_setup_fake_fetcher - util_setup_source_info_cache - Gem::SourceInfoCache.reset - - si = Gem::SourceIndex.new - si.add_spec @a1 - @fetcher.data["#{@gem_repo}yaml"] = YAML.dump si - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = si.dump - - use_ui @ui do - @cmd.execute - end - - expected = <<-EOF -Bulk updating Gem source index for: #{@gem_repo} -source cache successfully updated - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - -end - diff --git a/trunk/test/rubygems/test_gem_commands_specification_command.rb b/trunk/test/rubygems/test_gem_commands_specification_command.rb deleted file mode 100644 index 7ac0429f32..0000000000 --- a/trunk/test/rubygems/test_gem_commands_specification_command.rb +++ /dev/null @@ -1,97 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/specification_command' - -class TestGemCommandsSpecificationCommand < RubyGemTestCase - - def setup - super - - @cmd = Gem::Commands::SpecificationCommand.new - end - - def test_execute - foo = quick_gem 'foo' - Gem.source_index.add_spec foo - - @cmd.options[:args] = %w[foo] - - use_ui @ui do - @cmd.execute - end - - assert_match %r|Gem::Specification|, @ui.output - assert_match %r|name: foo|, @ui.output - assert_equal '', @ui.error - end - - def test_execute_all - foo1 = quick_gem 'foo', '0.0.1' - foo2 = quick_gem 'foo', '0.0.2' - - @cmd.options[:args] = %w[foo] - @cmd.options[:all] = true - - use_ui @ui do - @cmd.execute - end - - assert_match %r|Gem::Specification|, @ui.output - assert_match %r|name: foo|, @ui.output - assert_match %r|version: 0.0.1|, @ui.output - assert_match %r|version: 0.0.2|, @ui.output - assert_equal '', @ui.error - end - - def test_execute_bad_name - @cmd.options[:args] = %w[foo] - - assert_raise MockGemUi::TermError do - use_ui @ui do - @cmd.execute - end - end - - assert_equal '', @ui.output - assert_equal "ERROR: Unknown gem 'foo'\n", @ui.error - end - - def test_execute_exact_match - foo = quick_gem 'foo' - foo_bar = quick_gem 'foo_bar' - - @cmd.options[:args] = %w[foo] - - use_ui @ui do - @cmd.execute - end - - assert_match %r|Gem::Specification|, @ui.output - assert_match %r|name: foo|, @ui.output - assert_equal '', @ui.error - end - - def test_execute_remote - foo = quick_gem 'foo' - - @fetcher = Gem::FakeFetcher.new - Gem::RemoteFetcher.fetcher = @fetcher - - util_setup_spec_fetcher foo - - FileUtils.rm File.join(@gemhome, 'specifications', - "#{foo.full_name}.gemspec") - - @cmd.options[:args] = %w[foo] - @cmd.options[:domain] = :remote - - use_ui @ui do - @cmd.execute - end - - assert_match %r|\A--- !ruby/object:Gem::Specification|, @ui.output - assert_match %r|name: foo|, @ui.output - end - -end - diff --git a/trunk/test/rubygems/test_gem_commands_stale_command.rb b/trunk/test/rubygems/test_gem_commands_stale_command.rb deleted file mode 100644 index 6f66c854a5..0000000000 --- a/trunk/test/rubygems/test_gem_commands_stale_command.rb +++ /dev/null @@ -1,39 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/stale_command' - -class TestGemCommandsStaleCommand < RubyGemTestCase - - def setup - super - @cmd = Gem::Commands::StaleCommand.new - end - - def test_execute_sorts - files = %w[lib/foo_bar.rb Rakefile] - foo_bar = quick_gem 'foo_bar' do |gem| - gem.files = files - end - bar_baz = quick_gem 'bar_baz' do |gem| - gem.files = files - end - - files.each do |file| - filename = bar_baz.full_gem_path + "/#{file}" - FileUtils.mkdir_p(File.dirname(filename)) - FileUtils.touch(filename, :mtime => Time.now) - - filename = foo_bar.full_gem_path + "/#{file}" - FileUtils.mkdir_p(File.dirname(filename)) - FileUtils.touch(filename, :mtime => Time.now - 86400) - end - - use_ui @ui do - @cmd.execute - end - lines = @ui.output.split("\n") - assert_equal("#{foo_bar.name}-#{foo_bar.version}", lines[0].split.first) - assert_equal("#{bar_baz.name}-#{bar_baz.version}", lines[1].split.first) - end - -end diff --git a/trunk/test/rubygems/test_gem_commands_unpack_command.rb b/trunk/test/rubygems/test_gem_commands_unpack_command.rb deleted file mode 100644 index 3a62a914a4..0000000000 --- a/trunk/test/rubygems/test_gem_commands_unpack_command.rb +++ /dev/null @@ -1,115 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/unpack_command' - -class TestGemCommandsUnpackCommand < RubyGemTestCase - - def setup - super - - Dir.chdir @tempdir do - @cmd = Gem::Commands::UnpackCommand.new - end - end - - def test_execute - util_make_gems - - @cmd.options[:args] = %w[a] - - use_ui @ui do - Dir.chdir @tempdir do - @cmd.execute - end - end - - assert File.exist?(File.join(@tempdir, 'a-2')) - end - - def test_execute_gem_path - util_make_gems - - Gem.clear_paths - - gemhome2 = File.join @tempdir, 'gemhome2' - - Gem.send :set_paths, [gemhome2, @gemhome].join(File::PATH_SEPARATOR) - Gem.send :set_home, gemhome2 - - @cmd.options[:args] = %w[a] - - use_ui @ui do - Dir.chdir @tempdir do - @cmd.execute - end - end - - assert File.exist?(File.join(@tempdir, 'a-2')) - end - - def test_execute_gem_path_missing - util_make_gems - - Gem.clear_paths - - gemhome2 = File.join @tempdir, 'gemhome2' - - Gem.send :set_paths, [gemhome2, @gemhome].join(File::PATH_SEPARATOR) - Gem.send :set_home, gemhome2 - - @cmd.options[:args] = %w[z] - - use_ui @ui do - Dir.chdir @tempdir do - @cmd.execute - end - end - - assert_equal '', @ui.output - end - - def test_execute_with_target_option - util_make_gems - - target = 'with_target' - @cmd.options[:args] = %w[a] - @cmd.options[:target] = target - - use_ui @ui do - Dir.chdir @tempdir do - @cmd.execute - end - end - - assert File.exist?(File.join(@tempdir, target, 'a-2')) - end - - def test_execute_exact_match - foo_spec = quick_gem 'foo' - foo_bar_spec = quick_gem 'foo_bar' - - use_ui @ui do - Dir.chdir @tempdir do - Gem::Builder.new(foo_spec).build - Gem::Builder.new(foo_bar_spec).build - end - end - - foo_path = File.join(@tempdir, "#{foo_spec.full_name}.gem") - foo_bar_path = File.join(@tempdir, "#{foo_bar_spec.full_name}.gem") - Gem::Installer.new(foo_path).install - Gem::Installer.new(foo_bar_path).install - - @cmd.options[:args] = %w[foo] - - use_ui @ui do - Dir.chdir @tempdir do - @cmd.execute - end - end - - assert File.exist?(File.join(@tempdir, foo_spec.full_name)) - end - -end - diff --git a/trunk/test/rubygems/test_gem_commands_update_command.rb b/trunk/test/rubygems/test_gem_commands_update_command.rb deleted file mode 100644 index 11da1f8a83..0000000000 --- a/trunk/test/rubygems/test_gem_commands_update_command.rb +++ /dev/null @@ -1,165 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/commands/update_command' - -class TestGemCommandsUpdateCommand < RubyGemTestCase - - def setup - super - - @cmd = Gem::Commands::UpdateCommand.new - - util_setup_fake_fetcher - - @a1_path = File.join @gemhome, 'cache', "#{@a1.full_name}.gem" - @a2_path = File.join @gemhome, 'cache', "#{@a2.full_name}.gem" - - util_setup_spec_fetcher @a1, @a2 - - @fetcher.data["#{@gem_repo}gems/#{@a1.full_name}.gem"] = - read_binary @a1_path - @fetcher.data["#{@gem_repo}gems/#{@a2.full_name}.gem"] = - read_binary @a2_path - end - - def test_execute - util_clear_gems - - Gem::Installer.new(@a1_path).install - - @cmd.options[:args] = [] - - use_ui @ui do - @cmd.execute - end - - out = @ui.output.split "\n" - assert_equal "Updating installed gems", out.shift - assert_equal "Updating #{@a2.name}", out.shift - assert_equal "Successfully installed #{@a2.full_name}", out.shift - assert_equal "Gems updated: #{@a2.name}", out.shift - - assert out.empty?, out.inspect - end - - # before: - # a1 -> c1.2 - # after: - # a2 -> b2 # new dependency - # a2 -> c2 - - def test_execute_dependencies - @a1.add_dependency 'c', '1.2' - - @c2 = quick_gem 'c', '2' do |s| - s.files = %w[lib/code.rb] - s.require_paths = %w[lib] - end - - @a2.add_dependency 'c', '2' - @a2.add_dependency 'b', '2' - - @b2_path = File.join @gemhome, 'cache', "#{@b2.full_name}.gem" - @c1_2_path = File.join @gemhome, 'cache', "#{@c1_2.full_name}.gem" - @c2_path = File.join @gemhome, 'cache', "#{@c2.full_name}.gem" - - @source_index = Gem::SourceIndex.new - @source_index.add_spec @a1 - @source_index.add_spec @a2 - @source_index.add_spec @b2 - @source_index.add_spec @c1_2 - @source_index.add_spec @c2 - - util_build_gem @a1 - util_build_gem @a2 - util_build_gem @c2 - - @fetcher.data["#{@gem_repo}gems/#{@a1.full_name}.gem"] = read_binary @a1_path - @fetcher.data["#{@gem_repo}gems/#{@a2.full_name}.gem"] = read_binary @a2_path - @fetcher.data["#{@gem_repo}gems/#{@b2.full_name}.gem"] = read_binary @b2_path - @fetcher.data["#{@gem_repo}gems/#{@c1_2.full_name}.gem"] = - read_binary @c1_2_path - @fetcher.data["#{@gem_repo}gems/#{@c2.full_name}.gem"] = read_binary @c2_path - - util_setup_spec_fetcher @a1, @a2, @b2, @c1_2, @c2 - util_clear_gems - - Gem::Installer.new(@c1_2_path).install - Gem::Installer.new(@a1_path).install - - @cmd.options[:args] = [] - - use_ui @ui do - @cmd.execute - end - - out = @ui.output.split "\n" - assert_equal "Updating installed gems", out.shift - assert_equal "Updating #{@a2.name}", out.shift - assert_equal "Successfully installed #{@c2.full_name}", out.shift - assert_equal "Successfully installed #{@b2.full_name}", out.shift - assert_equal "Successfully installed #{@a2.full_name}", out.shift - assert_equal "Gems updated: #{@c2.name}, #{@b2.name}, #{@a2.name}", - out.shift - - assert out.empty?, out.inspect - end - - def test_execute_named - util_clear_gems - - Gem::Installer.new(@a1_path).install - - @cmd.options[:args] = [@a1.name] - - use_ui @ui do - @cmd.execute - end - - out = @ui.output.split "\n" - assert_equal "Updating installed gems", out.shift - assert_equal "Updating #{@a2.name}", out.shift - assert_equal "Successfully installed #{@a2.full_name}", out.shift - assert_equal "Gems updated: #{@a2.name}", out.shift - - assert out.empty?, out.inspect - end - - def test_execute_named_up_to_date - util_clear_gems - - Gem::Installer.new(@a2_path).install - - @cmd.options[:args] = [@a2.name] - - use_ui @ui do - @cmd.execute - end - - out = @ui.output.split "\n" - assert_equal "Updating installed gems", out.shift - assert_equal "Nothing to update", out.shift - - assert out.empty?, out.inspect - end - - def test_execute_up_to_date - util_clear_gems - - Gem::Installer.new(@a2_path).install - - @cmd.options[:args] = [] - - use_ui @ui do - @cmd.execute - end - - out = @ui.output.split "\n" - assert_equal "Updating installed gems", out.shift - assert_equal "Nothing to update", out.shift - - assert out.empty?, out.inspect - end - -end - diff --git a/trunk/test/rubygems/test_gem_config_file.rb b/trunk/test/rubygems/test_gem_config_file.rb deleted file mode 100644 index 06321d4e7c..0000000000 --- a/trunk/test/rubygems/test_gem_config_file.rb +++ /dev/null @@ -1,276 +0,0 @@ -#!/usr/bin/env ruby -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/config_file' - -class TestGemConfigFile < RubyGemTestCase - - def setup - super - - @temp_conf = File.join @tempdir, '.gemrc' - - @cfg_args = %W[--config-file #{@temp_conf}] - - @orig_SYSTEM_WIDE_CONFIG_FILE = Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE - Gem::ConfigFile.send :remove_const, :SYSTEM_WIDE_CONFIG_FILE - Gem::ConfigFile.send :const_set, :SYSTEM_WIDE_CONFIG_FILE, - File.join(@tempdir, 'system-gemrc') - Gem::ConfigFile::OPERATING_SYSTEM_DEFAULTS.clear - Gem::ConfigFile::PLATFORM_DEFAULTS.clear - - util_config_file - end - - def teardown - Gem::ConfigFile::OPERATING_SYSTEM_DEFAULTS.clear - Gem::ConfigFile::PLATFORM_DEFAULTS.clear - Gem::ConfigFile.send :remove_const, :SYSTEM_WIDE_CONFIG_FILE - Gem::ConfigFile.send :const_set, :SYSTEM_WIDE_CONFIG_FILE, - @orig_SYSTEM_WIDE_CONFIG_FILE - - super - end - - def test_initialize - assert_equal @temp_conf, @cfg.config_file_name - - assert_equal false, @cfg.backtrace - assert_equal true, @cfg.update_sources - assert_equal false, @cfg.benchmark - assert_equal Gem::ConfigFile::DEFAULT_BULK_THRESHOLD, @cfg.bulk_threshold - assert_equal true, @cfg.verbose - assert_equal [@gem_repo], Gem.sources - - File.open @temp_conf, 'w' do |fp| - fp.puts ":backtrace: true" - fp.puts ":update_sources: false" - fp.puts ":benchmark: true" - fp.puts ":bulk_threshold: 10" - fp.puts ":verbose: false" - fp.puts ":sources:" - fp.puts " - http://more-gems.example.com" - fp.puts "install: --wrappers" - end - - util_config_file - - assert_equal true, @cfg.backtrace - assert_equal true, @cfg.benchmark - assert_equal 10, @cfg.bulk_threshold - assert_equal false, @cfg.verbose - assert_equal false, @cfg.update_sources - assert_equal %w[http://more-gems.example.com], Gem.sources - assert_equal '--wrappers', @cfg[:install] - end - - def test_initialize_handle_arguments_config_file - util_config_file %W[--config-file #{@temp_conf}] - - assert_equal @temp_conf, @cfg.config_file_name - end - - def test_initialize_handle_arguments_config_file_with_other_params - util_config_file %W[--config-file #{@temp_conf} --backtrace] - - assert_equal @temp_conf, @cfg.config_file_name - end - - def test_initialize_handle_arguments_config_file_equals - util_config_file %W[--config-file=#{@temp_conf}] - - assert_equal @temp_conf, @cfg.config_file_name - end - - def test_initialize_operating_system_override - Gem::ConfigFile::OPERATING_SYSTEM_DEFAULTS[:bulk_threshold] = 1 - Gem::ConfigFile::OPERATING_SYSTEM_DEFAULTS['install'] = '--no-env-shebang' - - Gem::ConfigFile::PLATFORM_DEFAULTS[:bulk_threshold] = 2 - - util_config_file - - assert_equal 2, @cfg.bulk_threshold - assert_equal '--no-env-shebang', @cfg[:install] - end - - def test_initialize_platform_override - Gem::ConfigFile::PLATFORM_DEFAULTS[:bulk_threshold] = 2 - Gem::ConfigFile::PLATFORM_DEFAULTS['install'] = '--no-env-shebang' - - File.open Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE, 'w' do |fp| - fp.puts ":bulk_threshold: 3" - end - - util_config_file - - assert_equal 3, @cfg.bulk_threshold - assert_equal '--no-env-shebang', @cfg[:install] - end - - def test_initialize_system_wide_override - File.open Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE, 'w' do |fp| - fp.puts ":backtrace: false" - fp.puts ":bulk_threshold: 2048" - end - - File.open @temp_conf, 'w' do |fp| - fp.puts ":backtrace: true" - end - - util_config_file - - assert_equal 2048, @cfg.bulk_threshold - assert_equal true, @cfg.backtrace - end - - def test_handle_arguments - args = %w[--backtrace --bunch --of --args here] - - @cfg.handle_arguments args - - assert_equal %w[--bunch --of --args here], @cfg.args - end - - def test_handle_arguments_backtrace - assert_equal false, @cfg.backtrace - - args = %w[--backtrace] - - @cfg.handle_arguments args - - assert_equal true, @cfg.backtrace - end - - def test_handle_arguments_benchmark - assert_equal false, @cfg.benchmark - - args = %w[--benchmark] - - @cfg.handle_arguments args - - assert_equal true, @cfg.benchmark - end - - def test_handle_arguments_debug - old_dollar_DEBUG = $DEBUG - assert_equal false, $DEBUG - - args = %w[--debug] - - @cfg.handle_arguments args - - assert_equal true, $DEBUG - ensure - $DEBUG = old_dollar_DEBUG - end - - def test_handle_arguments_override - File.open @temp_conf, 'w' do |fp| - fp.puts ":benchmark: false" - end - - util_config_file %W[--benchmark --config-file=#{@temp_conf}] - - assert_equal true, @cfg.benchmark - end - - def test_handle_arguments_traceback - assert_equal false, @cfg.backtrace - - args = %w[--traceback] - - @cfg.handle_arguments args - - assert_equal true, @cfg.backtrace - end - - def test_really_verbose - assert_equal false, @cfg.really_verbose - - @cfg.verbose = true - - assert_equal false, @cfg.really_verbose - - @cfg.verbose = 1 - - assert_equal true, @cfg.really_verbose - end - - def test_write - @cfg.backtrace = true - @cfg.benchmark = true - @cfg.update_sources = false - @cfg.bulk_threshold = 10 - @cfg.verbose = false - Gem.sources.replace %w[http://more-gems.example.com] - @cfg[:install] = '--wrappers' - - @cfg.write - - util_config_file - - # These should not be written out to the config file. - assert_equal false, @cfg.backtrace, 'backtrace' - assert_equal false, @cfg.benchmark, 'benchmark' - assert_equal Gem::ConfigFile::DEFAULT_BULK_THRESHOLD, @cfg.bulk_threshold, - 'bulk_threshold' - assert_equal true, @cfg.update_sources, 'update_sources' - assert_equal true, @cfg.verbose, 'verbose' - - assert_equal '--wrappers', @cfg[:install], 'install' - - # this should be written out to the config file. - assert_equal %w[http://more-gems.example.com], Gem.sources - end - - def test_write_from_hash - File.open @temp_conf, 'w' do |fp| - fp.puts ":backtrace: true" - fp.puts ":benchmark: true" - fp.puts ":bulk_threshold: 10" - fp.puts ":update_sources: false" - fp.puts ":verbose: false" - fp.puts ":sources:" - fp.puts " - http://more-gems.example.com" - fp.puts "install: --wrappers" - end - - util_config_file - - @cfg.backtrace = :junk - @cfg.benchmark = :junk - @cfg.update_sources = :junk - @cfg.bulk_threshold = 20 - @cfg.verbose = :junk - Gem.sources.replace %w[http://even-more-gems.example.com] - @cfg[:install] = '--wrappers --no-rdoc' - - @cfg.write - - util_config_file - - # These should not be written out to the config file - assert_equal true, @cfg.backtrace, 'backtrace' - assert_equal true, @cfg.benchmark, 'benchmark' - assert_equal 10, @cfg.bulk_threshold, 'bulk_threshold' - assert_equal false, @cfg.update_sources, 'update_sources' - assert_equal false, @cfg.verbose, 'verbose' - - assert_equal '--wrappers --no-rdoc', @cfg[:install], 'install' - - assert_equal %w[http://even-more-gems.example.com], Gem.sources - end - - def util_config_file(args = @cfg_args) - @cfg = Gem::ConfigFile.new args - end - -end - diff --git a/trunk/test/rubygems/test_gem_dependency.rb b/trunk/test/rubygems/test_gem_dependency.rb deleted file mode 100644 index 315c49d6ce..0000000000 --- a/trunk/test/rubygems/test_gem_dependency.rb +++ /dev/null @@ -1,140 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/version' - -class TestGemDependency < RubyGemTestCase - - def setup - super - - @pkg1_0 = Gem::Dependency.new 'pkg', ['> 1.0'] - @pkg1_1 = Gem::Dependency.new 'pkg', ['> 1.1'] - - @oth1_0 = Gem::Dependency.new 'other', ['> 1.0'] - - @r1_0 = Gem::Requirement.new ['> 1.0'] - end - - def test_initialize - assert_equal "pkg", @pkg1_0.name - assert_equal @r1_0, @pkg1_0.version_requirements - end - - def test_initialize_double - dep = Gem::Dependency.new("pkg", ["> 1.0", "< 2.0"]) - - assert_equal Gem::Requirement.new(["> 1.0", "< 2.0"]), - dep.version_requirements - end - - def test_initialize_empty - dep = Gem::Dependency.new("pkg", []) - req = @r1_0 - - req.instance_eval do - @version = ">= 1.0" - @op = ">=" - @nums = [1,0] - @requirements = nil - end - - dep.instance_eval do - @version_requirement = req - @version_requirements = nil - end - - assert_equal Gem::Requirement.new([">= 1.0"]), dep.version_requirements - end - - def test_initialize_version - dep = Gem::Dependency.new 'pkg', Gem::Version.new('2') - - assert_equal 'pkg', dep.name - - assert_equal Gem::Requirement.new('= 2'), dep.version_requirements - end - - def test_initialize_with_type - dep = Gem::Dependency.new("pkg", [], :development) - assert_equal(:development, dep.type) - end - - def test_type_is_runtime_by_default - assert_equal(:runtime, Gem::Dependency.new("pkg", []).type) - end - - def test_type_is_restricted - assert_raise(ArgumentError) do - Gem::Dependency.new("pkg", [:sometimes]) - end - end - - def test_equals2 - assert_equal @pkg1_0, @pkg1_0.dup - assert_equal @pkg1_0.dup, @pkg1_0 - - assert_not_equal @pkg1_0, @pkg1_1, "requirements different" - assert_not_equal @pkg1_1, @pkg1_0, "requirements different" - - assert_not_equal @pkg1_0, @oth1_0, "names different" - assert_not_equal @oth1_0, @pkg1_0, "names different" - - assert_not_equal @pkg1_0, Object.new - assert_not_equal Object.new, @pkg1_0 - end - - def test_equals2_type - runtime = Gem::Dependency.new("pkg", []) - development = Gem::Dependency.new("pkg", [], :development) - - assert_not_equal(runtime, development) - end - - def test_equals_tilde - def dep(name, version) - Gem::Dependency.new name, version - end - - a0 = dep 'a', '0' - a1 = dep 'a', '1' - b0 = dep 'b', '0' - - pa0 = dep 'a', '>= 0' - pa0r = dep(/a/, '>= 0') - pab0r = dep(/a|b/, '>= 0') - - assert((a0 =~ a0), 'match self') - assert((pa0 =~ a0), 'match version exact') - assert((pa0 =~ a1), 'match version') - assert((pa0r =~ a0), 'match regex simple') - assert((pab0r =~ a0), 'match regex complex') - - assert(!(pa0r =~ b0), 'fail match regex') - assert(!(pa0r =~ Object.new), 'fail match Object') - end - - def test_hash - assert_equal @pkg1_0.hash, @pkg1_0.dup.hash - assert_equal @pkg1_0.dup.hash, @pkg1_0.hash - - assert_not_equal @pkg1_0.hash, @pkg1_1.hash, "requirements different" - assert_not_equal @pkg1_1.hash, @pkg1_0.hash, "requirements different" - - assert_not_equal @pkg1_0.hash, @oth1_0.hash, "names different" - assert_not_equal @oth1_0.hash, @pkg1_0.hash, "names different" - end - - def test_hash_type - runtime = Gem::Dependency.new("pkg", []) - development = Gem::Dependency.new("pkg", [], :development) - - assert_not_equal(runtime.hash, development.hash) - end -end - diff --git a/trunk/test/rubygems/test_gem_dependency_installer.rb b/trunk/test/rubygems/test_gem_dependency_installer.rb deleted file mode 100644 index 10e7fdfbda..0000000000 --- a/trunk/test/rubygems/test_gem_dependency_installer.rb +++ /dev/null @@ -1,637 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/dependency_installer' - -class TestGemDependencyInstaller < RubyGemTestCase - - def setup - super - - @gems_dir = File.join @tempdir, 'gems' - @cache_dir = File.join @gemhome, 'cache' - FileUtils.mkdir @gems_dir - - write_file File.join('gems', 'a-1', 'bin', 'a_bin') do |fp| - fp.puts "#!/usr/bin/ruby" - end - @a1, @a1_gem = util_gem 'a', '1' do |s| s.executables << 'a_bin' end - @aa1, @aa1_gem = util_gem 'aa', '1' - - @b1, @b1_gem = util_gem 'b', '1' do |s| - s.add_dependency 'a' - s.add_development_dependency 'aa' - end - - @d1, @d1_gem = util_gem 'd', '1' - @d2, @d2_gem = util_gem 'd', '2' - - @x1_m, @x1_m_gem = util_gem 'x', '1' do |s| - s.platform = Gem::Platform.new %w[cpu my_platform 1] - end - - @x1_o, @x1_o_gem = util_gem 'x', '1' do |s| - s.platform = Gem::Platform.new %w[cpu other_platform 1] - end - - @w1, @w1_gem = util_gem 'w', '1' do |s| s.add_dependency 'x' end - - @y1, @y1_gem = util_gem 'y', '1' - @y1_1_p, @y1_1_p_gem = util_gem 'y', '1.1' do |s| - s.platform = Gem::Platform.new %w[cpu my_platform 1] - end - - @z1, @z1_gem = util_gem 'z', '1' do |s| s.add_dependency 'y' end - - @fetcher = Gem::FakeFetcher.new - Gem::RemoteFetcher.fetcher = @fetcher - - si = util_setup_spec_fetcher @a1, @b1, @d1, @d2, @x1_m, @x1_o, @w1, @y1, - @y1_1_p, @z1 - - util_clear_gems - end - - def test_install - FileUtils.mv @a1_gem, @tempdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new - inst.install 'a' - end - - assert_equal Gem::SourceIndex.new(@a1.full_name => @a1), - Gem::SourceIndex.from_installed_gems - - assert_equal [@a1], inst.installed_gems - end - - def test_install_all_dependencies - e1, e1_gem = util_gem 'e', '1' do |s| - s.add_dependency 'b' - end - - util_clear_gems - - FileUtils.mv @a1_gem, @tempdir - FileUtils.mv @b1_gem, @tempdir - FileUtils.mv e1_gem, @tempdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new :ignore_dependencies => true - inst.install 'b' - end - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new - inst.install 'e' - end - - assert_equal %w[e-1 a-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_cache_dir - FileUtils.mv @a1_gem, @tempdir - FileUtils.mv @b1_gem, @tempdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new :cache_dir => @tempdir - inst.install 'b' - end - - assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name } - - assert File.exist?(File.join(@tempdir, 'cache', "#{@a1.full_name}.gem")) - assert File.exist?(File.join(@tempdir, 'cache', "#{@b1.full_name}.gem")) - end - - def test_install_dependencies_satisfied - a2, a2_gem = util_gem 'a', '2' - - FileUtils.rm_rf File.join(@gemhome, 'gems') - Gem.source_index.refresh! - - FileUtils.mv @a1_gem, @tempdir - FileUtils.mv a2_gem, @tempdir # not in index - FileUtils.mv @b1_gem, @tempdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new - inst.install 'a-2' - end - - FileUtils.rm File.join(@tempdir, "#{a2.full_name}.gem") - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new - inst.install 'b' - end - - installed = Gem::SourceIndex.from_installed_gems.map { |n,s| s.full_name } - - assert_equal %w[a-2 b-1], installed.sort - - assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_dependency - FileUtils.mv @a1_gem, @tempdir - FileUtils.mv @b1_gem, @tempdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new - inst.install 'b' - end - - assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_dependency_development - FileUtils.mv @a1_gem, @tempdir - FileUtils.mv @aa1_gem, @tempdir - FileUtils.mv @b1_gem, @tempdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new(:development => true) - inst.install 'b' - end - - assert_equal %w[a-1 aa-1 b-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_dependency_existing - Gem::Installer.new(@a1_gem).install - FileUtils.mv @a1_gem, @tempdir - FileUtils.mv @b1_gem, @tempdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new - inst.install 'b' - end - - assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_dependency_old - e1, e1_gem = util_gem 'e', '1' - f1, f1_gem = util_gem 'f', '1' do |s| s.add_dependency 'e' end - f2, f2_gem = util_gem 'f', '2' - - FileUtils.mv e1_gem, @tempdir - FileUtils.mv f1_gem, @tempdir - FileUtils.mv f2_gem, @tempdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new - inst.install 'f' - end - - assert_equal %w[f-2], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_local - FileUtils.mv @a1_gem, @tempdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new :domain => :local - inst.install 'a-1.gem' - end - - assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_local_dependency - FileUtils.mv @a1_gem, @tempdir - FileUtils.mv @b1_gem, @tempdir - - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new :domain => :local - inst.install 'b-1.gem' - end - - assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_local_dependency_installed - FileUtils.mv @a1_gem, @tempdir - FileUtils.mv @b1_gem, @tempdir - - inst = nil - - Dir.chdir @tempdir do - Gem::Installer.new('a-1.gem').install - - inst = Gem::DependencyInstaller.new :domain => :local - inst.install 'b-1.gem' - end - - assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_local_subdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new :domain => :local - inst.install 'gems/a-1.gem' - end - - assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_env_shebang - FileUtils.mv @a1_gem, @tempdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new :env_shebang => true, :wrappers => true - inst.install 'a' - end - - assert_match %r|\A#!/usr/bin/env #{Gem::ConfigMap[:RUBY_INSTALL_NAME]}\n|, - File.read(File.join(@gemhome, 'bin', 'a_bin')) - end - - def test_install_force - FileUtils.mv @b1_gem, @tempdir - si = util_setup_spec_fetcher @b1 - @fetcher.data['http://gems.example.com/gems/yaml'] = si.to_yaml - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new :force => true - inst.install 'b' - end - - assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_ignore_dependencies - FileUtils.mv @b1_gem, @tempdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new :ignore_dependencies => true - inst.install 'b' - end - - assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_install_dir - FileUtils.mv @a1_gem, @tempdir - gemhome2 = File.join @tempdir, 'gemhome2' - Dir.mkdir gemhome2 - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new :install_dir => gemhome2 - inst.install 'a' - end - - assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name } - - assert File.exist?(File.join(gemhome2, 'specifications', - "#{@a1.full_name}.gemspec")) - assert File.exist?(File.join(gemhome2, 'cache', - "#{@a1.full_name}.gem")) - end - - def test_install_domain_both - a1_data = nil - File.open @a1_gem, 'rb' do |fp| - a1_data = fp.read - end - - @fetcher.data['http://gems.example.com/gems/a-1.gem'] = a1_data - - FileUtils.mv @b1_gem, @tempdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new :domain => :both - inst.install 'b' - end - - assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name } - a1, b1 = inst.installed_gems - - a1_expected = File.join(@gemhome, 'specifications', - "#{a1.full_name}.gemspec") - b1_expected = File.join(@gemhome, 'specifications', - "#{b1.full_name}.gemspec") - - assert_equal a1_expected, a1.loaded_from - assert_equal b1_expected, b1.loaded_from - end - - def test_install_domain_both_no_network - @fetcher.data["http://gems.example.com/gems/Marshal.#{@marshal_version}"] = - proc do - raise Gem::RemoteFetcher::FetchError - end - - FileUtils.mv @a1_gem, @tempdir - FileUtils.mv @b1_gem, @tempdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new :domain => :both - inst.install 'b' - end - - assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_domain_local - FileUtils.mv @b1_gem, @tempdir - inst = nil - - Gem.source_index.gems.delete @a1.full_name - - Dir.chdir @tempdir do - e = assert_raise Gem::InstallError do - inst = Gem::DependencyInstaller.new :domain => :local - inst.install 'b' - end - assert_equal 'b requires a (>= 0, runtime)', e.message - end - - assert_equal [], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_domain_remote - a1_data = nil - File.open @a1_gem, 'rb' do |fp| - a1_data = fp.read - end - - @fetcher.data['http://gems.example.com/gems/a-1.gem'] = a1_data - - inst = Gem::DependencyInstaller.new :domain => :remote - inst.install 'a' - - assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_dual_repository - FileUtils.mv @a1_gem, @tempdir - FileUtils.mv @b1_gem, @tempdir - inst = nil - - gemhome2 = "#{@gemhome}2" - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new :install_dir => gemhome2 - inst.install 'a' - end - - ENV['GEM_HOME'] = @gemhome - ENV['GEM_PATH'] = [@gemhome, gemhome2].join File::PATH_SEPARATOR - Gem.clear_paths - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new - inst.install 'b' - end - - assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_remote - a1_data = nil - File.open @a1_gem, 'rb' do |fp| - a1_data = fp.read - end - - @fetcher.data['http://gems.example.com/gems/a-1.gem'] = a1_data - - inst = Gem::DependencyInstaller.new - - Dir.chdir @tempdir do - inst.install 'a' - end - - assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_remote_dep - a1_data = nil - File.open @a1_gem, 'rb' do |fp| - a1_data = fp.read - end - - @fetcher.data['http://gems.example.com/gems/a-1.gem'] = a1_data - - inst = Gem::DependencyInstaller.new - - Dir.chdir @tempdir do - dep = Gem::Dependency.new @a1.name, @a1.version - inst.install dep - end - - assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_domain_remote_platform_newer - a2_o, a2_o_gem = util_gem 'a', '2' do |s| - s.platform = Gem::Platform.new %w[cpu other_platform 1] - end - - util_clear_gems - - si = util_setup_spec_fetcher @a1, a2_o - - @fetcher.data['http://gems.example.com/gems/yaml'] = si.to_yaml - - a1_data = nil - a2_o_data = nil - - File.open @a1_gem, 'rb' do |fp| a1_data = fp.read end - File.open a2_o_gem, 'rb' do |fp| a2_o_data = fp.read end - - @fetcher.data["http://gems.example.com/gems/#{@a1.full_name}.gem"] = - a1_data - @fetcher.data["http://gems.example.com/gems/#{a2_o.full_name}.gem"] = - a2_o_data - - inst = Gem::DependencyInstaller.new :domain => :remote - inst.install 'a' - - assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_reinstall - Gem::Installer.new(@a1_gem).install - FileUtils.mv @a1_gem, @tempdir - inst = nil - - Dir.chdir @tempdir do - inst = Gem::DependencyInstaller.new - inst.install 'a' - end - - assert_equal Gem::SourceIndex.new(@a1.full_name => @a1), - Gem::SourceIndex.from_installed_gems - - assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name } - end - - if defined? OpenSSL then - def test_install_security_policy - data = File.open(@a1_gem, 'rb') { |f| f.read } - @fetcher.data['http://gems.example.com/gems/a-1.gem'] = data - - data = File.open(@b1_gem, 'rb') { |f| f.read } - @fetcher.data['http://gems.example.com/gems/b-1.gem'] = data - - policy = Gem::Security::HighSecurity - inst = Gem::DependencyInstaller.new :security_policy => policy - - e = assert_raise Gem::Exception do - inst.install 'b' - end - - assert_equal 'Unsigned gem', e.message - - assert_equal %w[], inst.installed_gems.map { |s| s.full_name } - end - end - - # Wrappers don't work on mswin - unless win_platform? then - def test_install_no_wrappers - @fetcher.data['http://gems.example.com/gems/a-1.gem'] = read_binary(@a1_gem) - - inst = Gem::DependencyInstaller.new :wrappers => false - inst.install 'a' - - assert_no_match(%r|This file was generated by RubyGems.|, - File.read(File.join(@gemhome, 'bin', 'a_bin'))) - end - end - - def test_install_version - data = File.open(@d2_gem, 'rb') { |f| f.read } - @fetcher.data['http://gems.example.com/gems/d-2.gem'] = data - - data = File.open(@d1_gem, 'rb') { |f| f.read } - @fetcher.data['http://gems.example.com/gems/d-1.gem'] = data - - inst = Gem::DependencyInstaller.new - - inst.install 'd', '= 1' - - assert_equal %w[d-1], inst.installed_gems.map { |s| s.full_name } - end - - def test_install_version_default - data = File.open(@d2_gem, 'rb') { |f| f.read } - @fetcher.data['http://gems.example.com/gems/d-2.gem'] = data - - data = File.open(@d1_gem, 'rb') { |f| f.read } - @fetcher.data['http://gems.example.com/gems/d-1.gem'] = data - - inst = Gem::DependencyInstaller.new - inst.install 'd' - - assert_equal %w[d-2], inst.installed_gems.map { |s| s.full_name } - end - - def test_find_gems_gems_with_sources - inst = Gem::DependencyInstaller.new - dep = Gem::Dependency.new 'b', '>= 0' - - assert_equal [[@b1, @gem_repo]], - inst.find_gems_with_sources(dep) - end - - def test_find_gems_with_sources_local - FileUtils.mv @a1_gem, @tempdir - inst = Gem::DependencyInstaller.new - dep = Gem::Dependency.new 'a', '>= 0' - gems = nil - - Dir.chdir @tempdir do - gems = inst.find_gems_with_sources dep - end - - assert_equal 2, gems.length - remote = gems.first - assert_equal 'a-1', remote.first.full_name, 'remote spec' - assert_equal @gem_repo, remote.last, 'remote path' - - local = gems.last - assert_equal 'a-1', local.first.full_name, 'local spec' - assert_equal File.join(@tempdir, "#{@a1.full_name}.gem"), - local.last, 'local path' - end - - def test_gather_dependencies - inst = Gem::DependencyInstaller.new - inst.find_spec_by_name_and_version 'b' - inst.gather_dependencies - - assert_equal %w[a-1 b-1], inst.gems_to_install.map { |s| s.full_name } - end - - def test_gather_dependencies_dropped - b2, = util_gem 'b', '2' - c1, = util_gem 'c', '1' do |s| s.add_dependency 'b' end - - util_clear_gems - - si = util_setup_spec_fetcher @a1, @b1, b2, c1 - - inst = Gem::DependencyInstaller.new - inst.find_spec_by_name_and_version 'c' - inst.gather_dependencies - - assert_equal %w[b-2 c-1], inst.gems_to_install.map { |s| s.full_name } - end - - def test_gather_dependencies_platform_alternate - util_set_arch 'cpu-my_platform1' - - inst = Gem::DependencyInstaller.new - inst.find_spec_by_name_and_version 'w' - inst.gather_dependencies - - assert_equal %w[x-1-cpu-my_platform-1 w-1], - inst.gems_to_install.map { |s| s.full_name } - end - - def test_gather_dependencies_platform_bump - inst = Gem::DependencyInstaller.new - inst.find_spec_by_name_and_version 'z' - inst.gather_dependencies - - assert_equal %w[y-1 z-1], inst.gems_to_install.map { |s| s.full_name } - end - - def test_gather_dependencies_old_required - e1, = util_gem 'e', '1' do |s| s.add_dependency 'd', '= 1' end - - util_clear_gems - - si = util_setup_spec_fetcher @d1, @d2, e1 - - inst = Gem::DependencyInstaller.new - inst.find_spec_by_name_and_version 'e' - inst.gather_dependencies - - assert_equal %w[d-1 e-1], inst.gems_to_install.map { |s| s.full_name } - end - -end - diff --git a/trunk/test/rubygems/test_gem_dependency_list.rb b/trunk/test/rubygems/test_gem_dependency_list.rb deleted file mode 100644 index 5fdc227f05..0000000000 --- a/trunk/test/rubygems/test_gem_dependency_list.rb +++ /dev/null @@ -1,212 +0,0 @@ -#!/usr/bin/env ruby -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/dependency_list' - -class TestGemDependencyList < RubyGemTestCase - - def setup - super - - @deplist = Gem::DependencyList.new - - @a1 = quick_gem 'a', '1' - @a2 = quick_gem 'a', '2' - @a3 = quick_gem 'a', '3' - - @b1 = quick_gem 'b', '1' do |s| s.add_dependency 'a', '>= 1' end - @b2 = quick_gem 'b', '2' do |s| s.add_dependency 'a', '>= 1' end - - @c1 = quick_gem 'c', '1' do |s| s.add_dependency 'b', '>= 1' end - @c2 = quick_gem 'c', '2' - - @d1 = quick_gem 'd', '1' do |s| s.add_dependency 'c', '>= 1' end - end - - def test_self_from_source_index - hash = { - 'a-1' => @a1, - 'b-2' => @b2, - } - - si = Gem::SourceIndex.new hash - deps = Gem::DependencyList.from_source_index si - - assert_equal %w[b-2 a-1], deps.dependency_order.map { |s| s.full_name } - end - - def test_active_count - assert_equal 0, @deplist.send(:active_count, [], {}) - assert_equal 1, @deplist.send(:active_count, [@a1], {}) - assert_equal 0, @deplist.send(:active_count, [@a1], - { @a1.full_name => true }) - end - - def test_add - assert_equal [], @deplist.dependency_order - - @deplist.add @a1, @b2 - - assert_equal [@b2, @a1], @deplist.dependency_order - end - - def test_dependency_order - @deplist.add @a1, @b1, @c1, @d1 - - order = @deplist.dependency_order - - assert_equal %w[d-1 c-1 b-1 a-1], order.map { |s| s.full_name } - end - - def test_dependency_order_circle - @a1.add_dependency 'c', '>= 1' - @deplist.add @a1, @b1, @c1 - - order = @deplist.dependency_order - - assert_equal %w[b-1 c-1 a-1], order.map { |s| s.full_name } - end - - def test_dependency_order_diamond - util_diamond - e1 = quick_gem 'e', '1' - @deplist.add e1 - @a1.add_dependency 'e', '>= 1' - - order = @deplist.dependency_order - - assert_equal %w[d-1 c-2 b-1 a-2 e-1], order.map { |s| s.full_name }, - 'deps of trimmed specs not included' - end - - def test_dependency_order_no_dependendencies - @deplist.add @a1, @c2 - - order = @deplist.dependency_order - - assert_equal %w[c-2 a-1], order.map { |s| s.full_name } - end - - def test_find_name - @deplist.add @a1, @b2 - - assert_equal "a-1", @deplist.find_name("a-1").full_name - assert_equal "b-2", @deplist.find_name("b-2").full_name - - assert_nil @deplist.find_name("c-2") - end - - def test_ok_eh - assert @deplist.ok?, 'no dependencies' - - @deplist.add @b2 - - assert ! @deplist.ok?, 'unsatisfied dependency' - - @deplist.add @a1 - - assert @deplist.ok?, 'satisfied dependency' - end - - def test_ok_eh_mismatch - a1 = quick_gem 'a', '1' - a2 = quick_gem 'a', '2' - - b = quick_gem 'b', '1' do |s| s.add_dependency 'a', '= 1' end - c = quick_gem 'c', '1' do |s| s.add_dependency 'a', '= 2' end - - d = quick_gem 'd', '1' do |s| - s.add_dependency 'b' - s.add_dependency 'c' - end - - @deplist.add a1, a2, b, c, d - - assert @deplist.ok?, 'this will break on require' - end - - def test_ok_eh_redundant - @deplist.add @a1, @a3, @b2 - - @deplist.remove_by_name("a-1") - - assert @deplist.ok? - end - - def test_ok_to_remove_eh - @deplist.add @a1 - - assert @deplist.ok_to_remove?("a-1") - - @deplist.add @b2 - - assert ! @deplist.ok_to_remove?("a-1") - - @deplist.add @a2 - - assert @deplist.ok_to_remove?("a-1") - assert @deplist.ok_to_remove?("a-2") - assert @deplist.ok_to_remove?("b-2") - end - - def test_ok_to_remove_eh_after_sibling_removed - @deplist.add @a1, @a2, @b2 - - assert @deplist.ok_to_remove?("a-1") - assert @deplist.ok_to_remove?("a-2") - - @deplist.remove_by_name("a-1") - - assert ! @deplist.ok_to_remove?("a-2") - end - - def test_remove_by_name - @deplist.add @a1, @b2 - - @deplist.remove_by_name "a-1" - - assert ! @deplist.ok? - end - - def test_tsort_each_node - util_diamond - - order = %w[a-1 a-2 b-1 c-2 d-1] - - @deplist.tsort_each_node do |node| - assert_equal order.shift, node.full_name - end - - assert order.empty? - end - - def test_tsort_each_child - util_diamond - - order = %w[a-2] - - @deplist.tsort_each_child(@b1) do |node| - assert_equal order.shift, node.full_name - end - - assert order.empty? - end - - # d1 -> b1 -> a1 - # d1 -> c2 -> a2 - def util_diamond - @c2.add_dependency 'a', '>= 2' - @d1.add_dependency 'b' - - @deplist.add @a1, @a2, @b1, @c2, @d1 - end - -end - diff --git a/trunk/test/rubygems/test_gem_digest.rb b/trunk/test/rubygems/test_gem_digest.rb deleted file mode 100755 index 9d825b2796..0000000000 --- a/trunk/test/rubygems/test_gem_digest.rb +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env ruby -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require "test/unit" -require "rubygems/digest/md5" -require "rubygems/digest/sha1" -require "rubygems/digest/sha2" - -class TestRubygemsGemDigest < Test::Unit::TestCase - def test_sha256_hex_digest_works - digester = Gem::SHA256.new - assert_equal "b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78", digester.hexdigest("ABC") - end - - def test_sha256_digest_works - digester = Gem::SHA256.new - assert_equal "\265\324\004\\?Fo\251\037\342\314j\276y#*\032W\315\361\004\367\242nqn\n\036'\211\337x", - digester.digest("ABC") - end - - def test_sha1_hex_digest_works - digester = Gem::SHA1.new - assert_equal "3c01bdbb26f358bab27f267924aa2c9a03fcfdb8", digester.hexdigest("ABC") - end - - def test_sha1_digest_works - digester = Gem::SHA1.new - assert_equal "<\001\275\273&\363X\272\262\177&y$\252,\232\003\374\375\270", digester.digest("ABC") - end - - def test_md5_hex_digest_works - digester = Gem::MD5.new - assert_equal "902fbdd2b1df0c4f70b4a5d23525e932", digester.hexdigest("ABC") - end - - def test_md5_digest_works - digester = Gem::MD5.new - assert_equal "\220/\275\322\261\337\fOp\264\245\3225%\3512", digester.digest("ABC") - end -end
\ No newline at end of file diff --git a/trunk/test/rubygems/test_gem_doc_manager.rb b/trunk/test/rubygems/test_gem_doc_manager.rb deleted file mode 100644 index e52fb9f0cd..0000000000 --- a/trunk/test/rubygems/test_gem_doc_manager.rb +++ /dev/null @@ -1,32 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/doc_manager' - -class TestGemDocManager < RubyGemTestCase - - def setup - super - - @spec = quick_gem 'a' - @manager = Gem::DocManager.new(@spec) - end - - def test_uninstall_doc_unwritable - orig_mode = File.stat(@spec.installation_path).mode - File.chmod 0, @spec.installation_path - - assert_raise Gem::FilePermissionError do - @manager.uninstall_doc - end - ensure - File.chmod orig_mode, @spec.installation_path - end - -end - diff --git a/trunk/test/rubygems/test_gem_ext_configure_builder.rb b/trunk/test/rubygems/test_gem_ext_configure_builder.rb deleted file mode 100644 index 9ce17075bc..0000000000 --- a/trunk/test/rubygems/test_gem_ext_configure_builder.rb +++ /dev/null @@ -1,86 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/ext' - -class TestGemExtConfigureBuilder < RubyGemTestCase - - def setup - super - - @makefile_body = "all:\n\t@echo ok\ninstall:\n\t@echo ok" - - @ext = File.join @tempdir, 'ext' - @dest_path = File.join @tempdir, 'prefix' - - FileUtils.mkdir_p @ext - FileUtils.mkdir_p @dest_path - end - - def test_self_build - return if RUBY_PLATFORM =~ /mswin/ # HACK - - File.open File.join(@ext, './configure'), 'w' do |configure| - configure.puts "#!/bin/sh\necho \"#{@makefile_body}\" > Makefile" - end - - output = [] - - Dir.chdir @ext do - Gem::Ext::ConfigureBuilder.build nil, nil, @dest_path, output - end - - assert_equal "sh ./configure --prefix=#{@dest_path}", output.shift - assert_equal "", output.shift - assert_equal "make", output.shift - assert_match(/^ok$/m, output.shift) - assert_equal "make install", output.shift - assert_match(/^ok$/m, output.shift) - end - - def test_self_build_fail - return if RUBY_PLATFORM =~ /mswin/ # HACK - output = [] - - error = assert_raise Gem::InstallError do - Dir.chdir @ext do - Gem::Ext::ConfigureBuilder.build nil, nil, @dest_path, output - end - end - - shell_error_msg = %r{(\./configure: .*)|(Can't open \./configure)} - sh_prefix_configure = "sh ./configure --prefix=" - - expected = %r(configure failed: - -#{Regexp.escape sh_prefix_configure}#{Regexp.escape @dest_path} -.*?: #{shell_error_msg}) - - assert_match expected, error.message - - assert_equal "#{sh_prefix_configure}#{@dest_path}", output.shift - assert_match %r(#{shell_error_msg}\n), output.shift - assert_equal true, output.empty? - end - - def test_self_build_has_makefile - File.open File.join(@ext, 'Makefile'), 'w' do |makefile| - makefile.puts @makefile_body - end - - output = [] - Dir.chdir @ext do - Gem::Ext::ConfigureBuilder.build nil, nil, @dest_path, output - end - - case RUBY_PLATFORM - when /mswin/ then - assert_equal 'nmake', output[0] - assert_equal 'nmake install', output[2] - else - assert_equal 'make', output[0] - assert_equal 'make install', output[2] - end - end - -end - diff --git a/trunk/test/rubygems/test_gem_ext_ext_conf_builder.rb b/trunk/test/rubygems/test_gem_ext_ext_conf_builder.rb deleted file mode 100644 index fb21fa0755..0000000000 --- a/trunk/test/rubygems/test_gem_ext_ext_conf_builder.rb +++ /dev/null @@ -1,122 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/ext' - -class TestGemExtExtConfBuilder < RubyGemTestCase - - def setup - super - - @ext = File.join @tempdir, 'ext' - @dest_path = File.join @tempdir, 'prefix' - - FileUtils.mkdir_p @ext - FileUtils.mkdir_p @dest_path - end - - def test_class_build - File.open File.join(@ext, 'extconf.rb'), 'w' do |extconf| - extconf.puts "require 'mkmf'\ncreate_makefile 'foo'" - end - - output = [] - - Dir.chdir @ext do - Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output - end - - expected = [ - "ruby extconf.rb", - "creating Makefile\n", - "make", - "make: Nothing to be done for `all'.\n", - "make install", - "make: Nothing to be done for `install'.\n" - ] - - assert_match(/^#{Gem.ruby} extconf.rb/, output[0]) - assert_equal "creating Makefile\n", output[1] - case RUBY_PLATFORM - when /mswin/ then - assert_equal "nmake", output[2] - assert_equal "nmake install", output[4] - else - assert_equal "make", output[2] - assert_equal "make install", output[4] - end - end - - def test_class_build_extconf_fail - File.open File.join(@ext, 'extconf.rb'), 'w' do |extconf| - extconf.puts "require 'mkmf'" - extconf.puts "have_library 'nonexistent' or abort 'need libnonexistent'" - extconf.puts "create_makefile 'foo'" - end - - output = [] - - error = assert_raise Gem::InstallError do - Dir.chdir @ext do - Gem::Ext::ExtConfBuilder.build 'extconf.rb', nil, @dest_path, output - end - end - - assert_match(/\Aextconf failed: - -#{Gem.ruby} extconf.rb.* -checking for main\(\) in .*?nonexistent/m, error.message) - - assert_match(/^#{Gem.ruby} extconf.rb/, output[0]) - end - - def test_class_make - output = [] - makefile_path = File.join(@ext, 'Makefile') - File.open makefile_path, 'w' do |makefile| - makefile.puts "RUBYARCHDIR = $(foo)$(target_prefix)" - makefile.puts "RUBYLIBDIR = $(bar)$(target_prefix)" - makefile.puts "all:" - makefile.puts "install:" - end - - Dir.chdir @ext do - Gem::Ext::ExtConfBuilder.make @ext, output - end - - case RUBY_PLATFORM - when /mswin/ then - assert_equal 'nmake', output[0] - assert_equal 'nmake install', output[2] - else - assert_equal 'make', output[0] - assert_equal 'make install', output[2] - end - - edited_makefile = <<-EOF -RUBYARCHDIR = #{@ext}$(target_prefix) -RUBYLIBDIR = #{@ext}$(target_prefix) -all: -install: - EOF - - assert_equal edited_makefile, File.read(makefile_path) - end - - def test_class_make_no_Makefile - error = assert_raise Gem::InstallError do - Dir.chdir @ext do - Gem::Ext::ExtConfBuilder.make @ext, ['output'] - end - end - - expected = <<-EOF.strip -Makefile not found: - -output - EOF - - assert_equal expected, error.message - end - -end - diff --git a/trunk/test/rubygems/test_gem_ext_rake_builder.rb b/trunk/test/rubygems/test_gem_ext_rake_builder.rb deleted file mode 100644 index 6d9184e804..0000000000 --- a/trunk/test/rubygems/test_gem_ext_rake_builder.rb +++ /dev/null @@ -1,76 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/ext' - -class TestGemExtRakeBuilder < RubyGemTestCase - def setup - super - - @ext = File.join @tempdir, 'ext' - @dest_path = File.join @tempdir, 'prefix' - - FileUtils.mkdir_p @ext - FileUtils.mkdir_p @dest_path - end - - def test_class_build - File.open File.join(@ext, 'mkrf_conf.rb'), 'w' do |mkrf_conf| - mkrf_conf.puts <<-EO_MKRF - File.open("Rakefile","w") do |f| - f.puts "task :default" - end - EO_MKRF - end - - output = [] - realdir = nil # HACK /tmp vs. /private/tmp - - build_rake_in do - Dir.chdir @ext do - realdir = Dir.pwd - Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', nil, @dest_path, output - end - end - - expected = [ - "#{@@ruby} mkrf_conf.rb", - "", - "#{@@rake} RUBYARCHDIR=#{@dest_path} RUBYLIBDIR=#{@dest_path}", - "(in #{realdir})\n" - ] - - assert_equal expected, output - end - - def test_class_build_fail - File.open File.join(@ext, 'mkrf_conf.rb'), 'w' do |mkrf_conf| - mkrf_conf.puts <<-EO_MKRF - File.open("Rakefile","w") do |f| - f.puts "task :default do abort 'fail' end" - end - EO_MKRF - end - - output = [] - - error = assert_raise Gem::InstallError do - build_rake_in do - Dir.chdir @ext do - Gem::Ext::RakeBuilder.build "mkrf_conf.rb", nil, @dest_path, output - end - end - end - - expected = <<-EOF.strip -rake failed: - -#{@@ruby} mkrf_conf.rb - -#{@@rake} RUBYARCHDIR=#{@dest_path} RUBYLIBDIR=#{@dest_path} - EOF - - assert_equal expected, error.message.split("\n")[0..4].join("\n") - end - -end - diff --git a/trunk/test/rubygems/test_gem_format.rb b/trunk/test/rubygems/test_gem_format.rb deleted file mode 100644 index 4014acfed9..0000000000 --- a/trunk/test/rubygems/test_gem_format.rb +++ /dev/null @@ -1,69 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require File.join(File.expand_path(File.dirname(__FILE__)), 'simple_gem') -require 'rubygems/format' - -class TestGemFormat < RubyGemTestCase - - def setup - super - - @simple_gem = SIMPLE_GEM - end - - def test_from_file_by_path - util_make_gems - - gems = Dir[File.join(@gemhome, 'cache', '*.gem')] - - names = [@a1, @a2, @a_evil9, @b2, @c1_2, @pl1].map do |spec| - spec.original_name - end - - gems_n_names = gems.sort.zip names - - gems_n_names.each do |gemfile, name| - spec = Gem::Format.from_file_by_path(gemfile).spec - - assert_equal name, spec.original_name - end - end - - def test_from_file_by_path_nonexistent - assert_raise Gem::Exception do - Gem::Format.from_file_by_path '/nonexistent' - end - end - - def test_from_io_garbled - e = assert_raise Gem::Package::FormatError do - # subtly bogus input - Gem::Format.from_io(StringIO.new(@simple_gem.upcase)) - end - - assert_equal 'No metadata found!', e.message - - e = assert_raise Gem::Package::FormatError do - # Totally bogus input - Gem::Format.from_io(StringIO.new(@simple_gem.reverse)) - end - - assert_equal 'No metadata found!', e.message - - e = assert_raise Gem::Package::FormatError do - # This was intentionally screws up YAML parsing. - Gem::Format.from_io(StringIO.new(@simple_gem.gsub(/:/, "boom"))) - end - - assert_equal 'No metadata found!', e.message - end - -end - - diff --git a/trunk/test/rubygems/test_gem_gem_path_searcher.rb b/trunk/test/rubygems/test_gem_gem_path_searcher.rb deleted file mode 100644 index c9da4d2b05..0000000000 --- a/trunk/test/rubygems/test_gem_gem_path_searcher.rb +++ /dev/null @@ -1,60 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/gem_path_searcher' - -class Gem::GemPathSearcher - attr_accessor :gemspecs - attr_accessor :lib_dirs - - public :init_gemspecs - public :matching_file - public :lib_dirs_for -end - -class TestGemGemPathSearcher < RubyGemTestCase - - def setup - super - - @foo1 = quick_gem 'foo', '0.1' do |s| - s.require_paths << 'lib2' - s.files << 'lib/foo.rb' - end - - path = File.join 'gems', @foo1.full_name, 'lib', 'foo.rb' - write_file(path) { |fp| fp.puts "# #{path}" } - - @foo2 = quick_gem 'foo', '0.2' - @bar1 = quick_gem 'bar', '0.1' - @bar2 = quick_gem 'bar', '0.2' - - @fetcher = Gem::FakeFetcher.new - Gem::RemoteFetcher.fetcher = @fetcher - - Gem.source_index = util_setup_spec_fetcher @foo1, @foo2, @bar1, @bar2 - - @gps = Gem::GemPathSearcher.new - end - - def test_find - assert_equal @foo1, @gps.find('foo') - end - - def test_init_gemspecs - assert_equal [@bar2, @bar1, @foo2, @foo1], @gps.init_gemspecs - end - - def test_lib_dirs_for - lib_dirs = @gps.lib_dirs_for(@foo1) - expected = File.join @gemhome, 'gems', @foo1.full_name, '{lib,lib2}' - - assert_equal expected, lib_dirs - end - - def test_matching_file - assert !@gps.matching_file(@foo1, 'bar') - assert @gps.matching_file(@foo1, 'foo') - end - -end - diff --git a/trunk/test/rubygems/test_gem_gem_runner.rb b/trunk/test/rubygems/test_gem_gem_runner.rb deleted file mode 100644 index 4e3239f015..0000000000 --- a/trunk/test/rubygems/test_gem_gem_runner.rb +++ /dev/null @@ -1,35 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/gem_runner' - -class TestGemGemRunner < RubyGemTestCase - - def test_do_configuration - Gem.clear_paths - - temp_conf = File.join @tempdir, '.gemrc' - - other_gem_path = File.join @tempdir, 'other_gem_path' - other_gem_home = File.join @tempdir, 'other_gem_home' - - Gem.ensure_gem_subdirectories other_gem_path - Gem.ensure_gem_subdirectories other_gem_home - - File.open temp_conf, 'w' do |fp| - fp.puts "gem: --commands" - fp.puts "gemhome: #{other_gem_home}" - fp.puts "gempath:" - fp.puts " - #{other_gem_path}" - fp.puts "rdoc: --all" - end - - gr = Gem::GemRunner.new - gr.send :do_configuration, %W[--config-file #{temp_conf}] - - assert_equal [other_gem_path, other_gem_home], Gem.path - assert_equal %w[--commands], Gem::Command.extra_args - assert_equal %w[--all], Gem::DocManager.configured_args - end - -end - diff --git a/trunk/test/rubygems/test_gem_indexer.rb b/trunk/test/rubygems/test_gem_indexer.rb deleted file mode 100644 index 9d68a7f34d..0000000000 --- a/trunk/test/rubygems/test_gem_indexer.rb +++ /dev/null @@ -1,263 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') - -require 'rubygems/indexer' - -unless ''.respond_to? :to_xs then - warn "Gem::Indexer tests are being skipped. Install builder gem." -end - -class TestGemIndexer < RubyGemTestCase - - def setup - super - - util_make_gems - - @d2_0 = quick_gem 'd', '2.0' - util_build_gem @d2_0 - - gems = File.join(@tempdir, 'gems') - FileUtils.mkdir_p gems - cache_gems = File.join @gemhome, 'cache', '*.gem' - FileUtils.mv Dir[cache_gems], gems - - @indexer = Gem::Indexer.new @tempdir - end - - def test_initialize - assert_equal @tempdir, @indexer.dest_directory - assert_equal File.join(Dir.tmpdir, "gem_generate_index_#{$$}"), - @indexer.directory - end - - def test_build_indicies - spec = quick_gem 'd', '2.0' - spec.instance_variable_set :@original_platform, '' - - @indexer.make_temp_directories - - index = Gem::SourceIndex.new - index.add_spec spec - - use_ui @ui do - @indexer.build_indicies index - end - - specs_path = File.join @indexer.directory, "specs.#{@marshal_version}" - specs_dump = Gem.read_binary specs_path - specs = Marshal.load specs_dump - - expected = [ - ['d', Gem::Version.new('2.0'), 'ruby'], - ] - - assert_equal expected, specs, 'specs' - - latest_specs_path = File.join @indexer.directory, - "latest_specs.#{@marshal_version}" - latest_specs_dump = Gem.read_binary latest_specs_path - latest_specs = Marshal.load latest_specs_dump - - expected = [ - ['d', Gem::Version.new('2.0'), 'ruby'], - ] - - assert_equal expected, latest_specs, 'latest_specs' - end - - def test_generate_index - use_ui @ui do - @indexer.generate_index - end - - assert_indexed @tempdir, 'yaml' - assert_indexed @tempdir, 'yaml.Z' - assert_indexed @tempdir, "Marshal.#{@marshal_version}" - assert_indexed @tempdir, "Marshal.#{@marshal_version}.Z" - - quickdir = File.join @tempdir, 'quick' - marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}" - - assert File.directory?(quickdir) - assert File.directory?(marshal_quickdir) - - assert_indexed quickdir, "index" - assert_indexed quickdir, "index.rz" - - quick_index = File.read File.join(quickdir, 'index') - expected = <<-EOF -a-1 -a-2 -a_evil-9 -b-2 -c-1.2 -d-2.0 -pl-1-i386-linux - EOF - - assert_equal expected, quick_index - - assert_indexed quickdir, "latest_index" - assert_indexed quickdir, "latest_index.rz" - - latest_quick_index = File.read File.join(quickdir, 'latest_index') - expected = <<-EOF -a-2 -a_evil-9 -b-2 -c-1.2 -d-2.0 -pl-1-i386-linux - EOF - - assert_equal expected, latest_quick_index - - assert_indexed quickdir, "#{@a1.full_name}.gemspec.rz" - assert_indexed quickdir, "#{@a2.full_name}.gemspec.rz" - assert_indexed quickdir, "#{@b2.full_name}.gemspec.rz" - assert_indexed quickdir, "#{@c1_2.full_name}.gemspec.rz" - - assert_indexed quickdir, "#{@pl1.original_name}.gemspec.rz" - refute_indexed quickdir, "#{@pl1.full_name}.gemspec.rz" - - assert_indexed marshal_quickdir, "#{@a1.full_name}.gemspec.rz" - assert_indexed marshal_quickdir, "#{@a2.full_name}.gemspec.rz" - - refute_indexed quickdir, "#{@c1_2.full_name}.gemspec" - refute_indexed marshal_quickdir, "#{@c1_2.full_name}.gemspec" - - assert_indexed @tempdir, "specs.#{@marshal_version}" - assert_indexed @tempdir, "specs.#{@marshal_version}.gz" - - assert_indexed @tempdir, "latest_specs.#{@marshal_version}" - assert_indexed @tempdir, "latest_specs.#{@marshal_version}.gz" - end - - def test_generate_index_ui - use_ui @ui do - @indexer.generate_index - end - - expected = <<-EOF -Loading 7 gems from #{@tempdir} -....... -Loaded all gems -Generating quick index gemspecs for 7 gems -....... -Complete -Generating specs index -Generating latest specs index -Generating quick index -Generating latest index -Generating Marshal master index -Generating YAML master index for 7 gems (this may take a while) -....... -Complete -Compressing indicies - EOF - - assert_equal expected, @ui.output - assert_equal '', @ui.error - end - - def test_generate_index_master - use_ui @ui do - @indexer.generate_index - end - - yaml_path = File.join @tempdir, 'yaml' - dump_path = File.join @tempdir, "Marshal.#{@marshal_version}" - - yaml_index = YAML.load_file yaml_path - dump_index = Marshal.load Gem.read_binary(dump_path) - - dump_index.each do |_,gem| - gem.send :remove_instance_variable, :@loaded - end - - assert_equal yaml_index, dump_index, - "expected YAML and Marshal to produce identical results" - end - - def test_generate_index_specs - use_ui @ui do - @indexer.generate_index - end - - specs_path = File.join @tempdir, "specs.#{@marshal_version}" - - specs_dump = Gem.read_binary specs_path - specs = Marshal.load specs_dump - - expected = [ - ['a', Gem::Version.new(1), 'ruby'], - ['a', Gem::Version.new(2), 'ruby'], - ['a_evil', Gem::Version.new(9), 'ruby'], - ['b', Gem::Version.new(2), 'ruby'], - ['c', Gem::Version.new('1.2'), 'ruby'], - ['d', Gem::Version.new('2.0'), 'ruby'], - ['pl', Gem::Version.new(1), 'i386-linux'], - ] - - assert_equal expected, specs - - assert_same specs[0].first, specs[1].first, - 'identical names not identical' - - assert_same specs[0][1], specs[-1][1], - 'identical versions not identical' - - assert_same specs[0].last, specs[1].last, - 'identical platforms not identical' - - assert_not_same specs[1][1], specs[5][1], - 'different versions not different' - end - - def test_generate_index_latest_specs - use_ui @ui do - @indexer.generate_index - end - - latest_specs_path = File.join @tempdir, "latest_specs.#{@marshal_version}" - - latest_specs_dump = Gem.read_binary latest_specs_path - latest_specs = Marshal.load latest_specs_dump - - expected = [ - ['a', Gem::Version.new(2), 'ruby'], - ['a_evil', Gem::Version.new(9), 'ruby'], - ['b', Gem::Version.new(2), 'ruby'], - ['c', Gem::Version.new('1.2'), 'ruby'], - ['d', Gem::Version.new('2.0'), 'ruby'], - ['pl', Gem::Version.new(1), 'i386-linux'], - ] - - assert_equal expected, latest_specs - - assert_same latest_specs[0][1], latest_specs[2][1], - 'identical versions not identical' - - assert_same latest_specs[0].last, latest_specs[1].last, - 'identical platforms not identical' - end - - def assert_indexed(dir, name) - file = File.join dir, name - assert File.exist?(file), "#{file} does not exist" - end - - def refute_indexed(dir, name) - file = File.join dir, name - assert !File.exist?(file), "#{file} exists" - end - -end if ''.respond_to? :to_xs - diff --git a/trunk/test/rubygems/test_gem_install_update_options.rb b/trunk/test/rubygems/test_gem_install_update_options.rb deleted file mode 100644 index 3638a0670a..0000000000 --- a/trunk/test/rubygems/test_gem_install_update_options.rb +++ /dev/null @@ -1,61 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_installer_test_case') -require 'rubygems/install_update_options' -require 'rubygems/command' - -class TestGemInstallUpdateOptions < GemInstallerTestCase - - def setup - super - - @cmd = Gem::Command.new 'dummy', 'dummy' - @cmd.extend Gem::InstallUpdateOptions - @cmd.add_install_update_options - end - - def test_add_install_update_options - args = %w[-i /install_to --rdoc --ri -E -f -t -w -P HighSecurity - --ignore-dependencies --format-exec --include-dependencies] - - assert @cmd.handles?(args) - end - - def test_security_policy - @cmd.handle_options %w[-P HighSecurity] - - assert_equal Gem::Security::HighSecurity, @cmd.options[:security_policy] - end - - def test_security_policy_unknown - @cmd.add_install_update_options - - assert_raise OptionParser::InvalidArgument do - @cmd.handle_options %w[-P UnknownSecurity] - end - end - - def test_user_install_enabled - @cmd.handle_options %w[--user-install] - - @installer = Gem::Installer.new @gem, @cmd.options - @installer.install - assert File.exist?(File.join(@userhome, '.gem', 'gems')) - assert File.exist?(File.join(@userhome, '.gem', 'gems', - @spec.full_name)) - end - - def test_user_install_disabled_read_only - @cmd.handle_options %w[--no-user-install] - - File.chmod 0755, @userhome - FileUtils.chmod 0000, @gemhome - - assert_raises(Gem::FilePermissionError) do - @installer = Gem::Installer.new @gem, @cmd.options - end - ensure - FileUtils.chmod 0755, @gemhome - end -end diff --git a/trunk/test/rubygems/test_gem_installer.rb b/trunk/test/rubygems/test_gem_installer.rb deleted file mode 100644 index eb9743dd42..0000000000 --- a/trunk/test/rubygems/test_gem_installer.rb +++ /dev/null @@ -1,868 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_installer_test_case') - -class TestGemInstaller < GemInstallerTestCase - - def test_app_script_text - util_make_exec '2', '' - - expected = <<-EOF -#!#{Gem.ruby} -# -# This file was generated by RubyGems. -# -# The application 'a' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require 'rubygems' - -version = \">= 0\" - -if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then - version = $1 - ARGV.shift -end - -gem 'a', version -load 'my_exec' - EOF - - wrapper = @installer.app_script_text 'my_exec' - assert_equal expected, wrapper - end - - def test_build_extensions_none - use_ui @ui do - @installer.build_extensions - end - - assert_equal '', @ui.output - assert_equal '', @ui.error - - assert !File.exist?('gem_make.out') - end - - def test_build_extensions_extconf_bad - @spec.extensions << 'extconf.rb' - - e = assert_raise Gem::Installer::ExtensionBuildError do - use_ui @ui do - @installer.build_extensions - end - end - - assert_match(/\AERROR: Failed to build gem native extension.$/, e.message) - - assert_equal "Building native extensions. This could take a while...\n", - @ui.output - assert_equal '', @ui.error - - gem_make_out = File.join @gemhome, 'gems', @spec.full_name, 'gem_make.out' - expected = <<-EOF -#{Gem.ruby} extconf.rb -#{Gem.ruby}: No such file or directory -- extconf.rb (LoadError) - EOF - - assert_equal expected, File.read(gem_make_out) - end - - def test_build_extensions_unsupported - @spec.extensions << nil - - e = assert_raise Gem::Installer::ExtensionBuildError do - use_ui @ui do - @installer.build_extensions - end - end - - assert_match(/^No builder for extension ''$/, e.message) - - assert_equal "Building native extensions. This could take a while...\n", - @ui.output - assert_equal '', @ui.error - - assert_equal "No builder for extension ''\n", File.read('gem_make.out') - ensure - FileUtils.rm_f 'gem_make.out' - end - - def test_ensure_dependency - dep = Gem::Dependency.new 'a', '>= 2' - assert @installer.ensure_dependency(@spec, dep) - - dep = Gem::Dependency.new 'b', '> 2' - e = assert_raise Gem::InstallError do - @installer.ensure_dependency @spec, dep - end - - assert_equal 'a requires b (> 2, runtime)', e.message - end - - def test_expand_and_validate_gem_dir - @installer.gem_dir = '/nonexistent' - expanded_gem_dir = @installer.send(:expand_and_validate_gem_dir) - if win_platform? - expected = File.expand_path('/nonexistent').downcase - expanded_gem_dir = expanded_gem_dir.downcase - else - expected = '/nonexistent' - end - - assert_equal expected, expanded_gem_dir - end - - def test_extract_files - format = Object.new - def format.file_entries - [[{'size' => 7, 'mode' => 0400, 'path' => 'thefile'}, 'thefile']] - end - - @installer.format = format - - @installer.extract_files - - thefile_path = File.join(util_gem_dir, 'thefile') - assert_equal 'thefile', File.read(thefile_path) - - unless Gem.win_platform? then - assert_equal 0400, File.stat(thefile_path).mode & 0777 - end - end - - def test_extract_files_bad_dest - @installer.gem_dir = 'somedir' - @installer.format = nil - e = assert_raise ArgumentError do - @installer.extract_files - end - - assert_equal 'format required to extract from', e.message - end - - def test_extract_files_relative - format = Object.new - def format.file_entries - [[{'size' => 10, 'mode' => 0644, 'path' => '../thefile'}, '../thefile']] - end - - @installer.format = format - - e = assert_raise Gem::InstallError do - @installer.extract_files - end - - assert_equal "attempt to install file into \"../thefile\" under #{util_gem_dir.inspect}", - e.message - assert_equal false, File.file?(File.join(@tempdir, '../thefile')), - "You may need to remove this file if you broke the test once" - end - - def test_extract_files_absolute - format = Object.new - def format.file_entries - [[{'size' => 8, 'mode' => 0644, 'path' => '/thefile'}, '/thefile']] - end - - @installer.format = format - - e = assert_raise Gem::InstallError do - @installer.extract_files - end - - assert_equal 'attempt to install file into "/thefile"', e.message - assert_equal false, File.file?(File.join('/thefile')), - "You may need to remove this file if you broke the test once" - end - - def test_generate_bin_bindir - @installer.wrappers = true - - @spec.executables = ["my_exec"] - @spec.bindir = '.' - - exec_file = @installer.formatted_program_filename "my_exec" - exec_path = File.join util_gem_dir(@spec.version), exec_file - File.open exec_path, 'w' do |f| - f.puts '#!/usr/bin/ruby' - end - - @installer.gem_dir = util_gem_dir - - @installer.generate_bin - - assert_equal true, File.directory?(util_inst_bindir) - installed_exec = File.join(util_inst_bindir, "my_exec") - assert_equal true, File.exist?(installed_exec) - assert_equal(0100755, File.stat(installed_exec).mode) unless win_platform? - - wrapper = File.read installed_exec - assert_match %r|generated by RubyGems|, wrapper - end - - def test_generate_bin_script - @installer.wrappers = true - util_make_exec - @installer.gem_dir = util_gem_dir - - @installer.generate_bin - assert_equal true, File.directory?(util_inst_bindir) - installed_exec = File.join(util_inst_bindir, "my_exec") - assert_equal true, File.exist?(installed_exec) - assert_equal(0100755, File.stat(installed_exec).mode) unless win_platform? - - wrapper = File.read installed_exec - assert_match %r|generated by RubyGems|, wrapper - end - - def test_generate_bin_script_format - @installer.format_executable = true - @installer.wrappers = true - util_make_exec - @installer.gem_dir = util_gem_dir - - Gem::Installer.exec_format = 'foo-%s-bar' - @installer.generate_bin - assert_equal true, File.directory?(util_inst_bindir) - installed_exec = File.join util_inst_bindir, 'foo-my_exec-bar' - assert_equal true, File.exist?(installed_exec) - ensure - Gem::Installer.exec_format = nil - end - - def test_generate_bin_script_format_disabled - @installer.wrappers = true - util_make_exec - @installer.gem_dir = util_gem_dir - - Gem::Installer.exec_format = 'foo-%s-bar' - @installer.generate_bin - assert_equal true, File.directory?(util_inst_bindir) - installed_exec = File.join util_inst_bindir, 'my_exec' - assert_equal true, File.exist?(installed_exec) - ensure - Gem::Installer.exec_format = nil - end - - def test_generate_bin_script_install_dir - @installer.wrappers = true - @spec.executables = ["my_exec"] - - gem_dir = File.join "#{@gemhome}2", 'gems', @spec.full_name - gem_bindir = File.join gem_dir, 'bin' - FileUtils.mkdir_p gem_bindir - File.open File.join(gem_bindir, "my_exec"), 'w' do |f| - f.puts "#!/bin/ruby" - end - - @installer.gem_home = "#{@gemhome}2" - @installer.gem_dir = gem_dir - - @installer.generate_bin - - installed_exec = File.join("#{@gemhome}2", 'bin', 'my_exec') - assert_equal true, File.exist?(installed_exec) - assert_equal(0100755, File.stat(installed_exec).mode) unless win_platform? - - wrapper = File.read installed_exec - assert_match %r|generated by RubyGems|, wrapper - end - - def test_generate_bin_script_no_execs - @installer.wrappers = true - @installer.generate_bin - assert_equal false, File.exist?(util_inst_bindir) - end - - def test_generate_bin_script_no_perms - @installer.wrappers = true - util_make_exec - - Dir.mkdir util_inst_bindir - File.chmod 0000, util_inst_bindir - - assert_raises Gem::FilePermissionError do - @installer.generate_bin - end - - ensure - File.chmod 0700, util_inst_bindir unless $DEBUG - end - - def test_generate_bin_script_no_shebang - @installer.wrappers = true - @spec.executables = ["my_exec"] - - gem_dir = File.join @gemhome, 'gems', @spec.full_name - gem_bindir = File.join gem_dir, 'bin' - FileUtils.mkdir_p gem_bindir - File.open File.join(gem_bindir, "my_exec"), 'w' do |f| - f.puts "blah blah blah" - end - - @installer.generate_bin - - installed_exec = File.join @gemhome, 'bin', 'my_exec' - assert_equal true, File.exist?(installed_exec) - assert_equal 0100755, File.stat(installed_exec).mode unless win_platform? - - wrapper = File.read installed_exec - assert_match %r|generated by RubyGems|, wrapper - # HACK some gems don't have #! in their executables, restore 2008/06 - #assert_no_match %r|generated by RubyGems|, wrapper - end - - def test_generate_bin_script_wrappers - @installer.wrappers = true - util_make_exec - @installer.gem_dir = util_gem_dir - installed_exec = File.join(util_inst_bindir, "my_exec") - - real_exec = File.join util_gem_dir, 'bin', 'my_exec' - - # fake --no-wrappers for previous install - unless Gem.win_platform? then - FileUtils.mkdir_p File.dirname(installed_exec) - FileUtils.ln_s real_exec, installed_exec - end - - @installer.generate_bin - assert_equal true, File.directory?(util_inst_bindir) - assert_equal true, File.exist?(installed_exec) - assert_equal(0100755, File.stat(installed_exec).mode) unless win_platform? - - assert_match %r|generated by RubyGems|, File.read(installed_exec) - - assert_no_match %r|generated by RubyGems|, File.read(real_exec), - 'real executable overwritten' - end - - def test_generate_bin_symlink - return if win_platform? #Windows FS do not support symlinks - - @installer.wrappers = false - util_make_exec - @installer.gem_dir = util_gem_dir - - @installer.generate_bin - assert_equal true, File.directory?(util_inst_bindir) - installed_exec = File.join(util_inst_bindir, "my_exec") - assert_equal true, File.symlink?(installed_exec) - assert_equal(File.join(util_gem_dir, "bin", "my_exec"), - File.readlink(installed_exec)) - end - - def test_generate_bin_symlink_no_execs - @installer.wrappers = false - @installer.generate_bin - assert_equal false, File.exist?(util_inst_bindir) - end - - def test_generate_bin_symlink_no_perms - @installer.wrappers = false - util_make_exec - @installer.gem_dir = util_gem_dir - - Dir.mkdir util_inst_bindir - File.chmod 0000, util_inst_bindir - - assert_raises Gem::FilePermissionError do - @installer.generate_bin - end - - ensure - File.chmod 0700, util_inst_bindir unless $DEBUG - end - - def test_generate_bin_symlink_update_newer - return if win_platform? #Windows FS do not support symlinks - - @installer.wrappers = false - util_make_exec - @installer.gem_dir = util_gem_dir - - @installer.generate_bin - installed_exec = File.join(util_inst_bindir, "my_exec") - assert_equal(File.join(util_gem_dir, "bin", "my_exec"), - File.readlink(installed_exec)) - - @spec = Gem::Specification.new do |s| - s.files = ['lib/code.rb'] - s.name = "a" - s.version = "3" - s.summary = "summary" - s.description = "desc" - s.require_path = 'lib' - end - - util_make_exec '3' - @installer.gem_dir = File.join util_gem_dir('3') - @installer.generate_bin - installed_exec = File.join(util_inst_bindir, "my_exec") - assert_equal(File.join(util_gem_bindir('3'), "my_exec"), - File.readlink(installed_exec), - "Ensure symlink moved to latest version") - end - - def test_generate_bin_symlink_update_older - return if win_platform? #Windows FS do not support symlinks - - @installer.wrappers = false - util_make_exec - @installer.gem_dir = util_gem_dir - - @installer.generate_bin - installed_exec = File.join(util_inst_bindir, "my_exec") - assert_equal(File.join(util_gem_dir, "bin", "my_exec"), - File.readlink(installed_exec)) - - spec = Gem::Specification.new do |s| - s.files = ['lib/code.rb'] - s.name = "a" - s.version = "1" - s.summary = "summary" - s.description = "desc" - s.require_path = 'lib' - end - - util_make_exec '1' - @installer.gem_dir = util_gem_dir('1') - @installer.spec = spec - - @installer.generate_bin - - installed_exec = File.join(util_inst_bindir, "my_exec") - assert_equal(File.join(util_gem_dir('2'), "bin", "my_exec"), - File.readlink(installed_exec), - "Ensure symlink not moved") - end - - def test_generate_bin_symlink_update_remove_wrapper - return if win_platform? #Windows FS do not support symlinks - - @installer.wrappers = true - util_make_exec - @installer.gem_dir = util_gem_dir - - @installer.generate_bin - installed_exec = File.join(util_inst_bindir, "my_exec") - assert_equal true, File.exist?(installed_exec) - - @spec = Gem::Specification.new do |s| - s.files = ['lib/code.rb'] - s.name = "a" - s.version = "3" - s.summary = "summary" - s.description = "desc" - s.require_path = 'lib' - end - - @installer.wrappers = false - util_make_exec '3' - @installer.gem_dir = util_gem_dir '3' - @installer.generate_bin - installed_exec = File.join(util_inst_bindir, "my_exec") - assert_equal(File.join(util_gem_dir('3'), "bin", "my_exec"), - File.readlink(installed_exec), - "Ensure symlink moved to latest version") - end - - def test_generate_bin_symlink_win32 - old_win_platform = Gem.win_platform? - Gem.win_platform = true - @installer.wrappers = false - util_make_exec - @installer.gem_dir = util_gem_dir - - use_ui @ui do - @installer.generate_bin - end - - assert_equal true, File.directory?(util_inst_bindir) - installed_exec = File.join(util_inst_bindir, "my_exec") - assert_equal true, File.exist?(installed_exec) - - assert_match(/Unable to use symlinks on Windows, installing wrapper/i, - @ui.error) - - wrapper = File.read installed_exec - assert_match(/generated by RubyGems/, wrapper) - ensure - Gem.win_platform = old_win_platform - end - - def test_generate_bin_uses_default_shebang - return if win_platform? #Windows FS do not support symlinks - - @installer.wrappers = true - util_make_exec - - @installer.generate_bin - - default_shebang = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']) - shebang_line = open("#{@gemhome}/bin/my_exec") { |f| f.readlines.first } - assert_match(/\A#!/, shebang_line) - assert_match(/#{default_shebang}/, shebang_line) - end - - def test_initialize - spec = quick_gem 'a' do |s| s.platform = Gem::Platform.new 'mswin32' end - gem = File.join @tempdir, "#{spec.full_name}.gem" - - Dir.mkdir util_inst_bindir - util_build_gem spec - FileUtils.mv File.join(@gemhome, 'cache', "#{spec.full_name}.gem"), - @tempdir - - installer = Gem::Installer.new gem - - assert_equal File.join(@gemhome, 'gems', spec.full_name), installer.gem_dir - end - - def test_install - Dir.mkdir util_inst_bindir - util_setup_gem - - build_rake_in do - use_ui @ui do - assert_equal @spec, @installer.install - end - end - - gemdir = File.join @gemhome, 'gems', @spec.full_name - assert File.exist?(gemdir) - - exe = File.join(gemdir, 'bin', 'executable') - assert File.exist?(exe) - exe_mode = File.stat(exe).mode & 0111 - assert_equal 0111, exe_mode, "0%o" % exe_mode unless win_platform? - - assert File.exist?(File.join(gemdir, 'lib', 'code.rb')) - - assert File.exist?(File.join(gemdir, 'ext', 'a', 'Rakefile')) - - spec_file = File.join(@gemhome, 'specifications', - "#{@spec.full_name}.gemspec") - - assert_equal spec_file, @spec.loaded_from - assert File.exist?(spec_file) - end - - def test_install_bad_gem - gem = nil - - use_ui @ui do - Dir.chdir @tempdir do Gem::Builder.new(@spec).build end - gem = File.join @tempdir, "#{@spec.full_name}.gem" - end - - gem_data = File.open gem, 'rb' do |fp| fp.read 1024 end - File.open gem, 'wb' do |fp| fp.write gem_data end - - e = assert_raise Gem::InstallError do - use_ui @ui do - @installer = Gem::Installer.new gem - @installer.install - end - end - - assert_equal "invalid gem format for #{gem}", e.message - end - - def test_install_check_dependencies - @spec.add_dependency 'b', '> 5' - util_setup_gem - - use_ui @ui do - assert_raise Gem::InstallError do - @installer.install - end - end - end - - def test_install_force - use_ui @ui do - installer = Gem::Installer.new old_ruby_required, :force => true - installer.install - end - - gem_dir = File.join(@gemhome, 'gems', 'old_ruby_required-1') - assert File.exist?(gem_dir) - end - - def test_install_ignore_dependencies - Dir.mkdir util_inst_bindir - @spec.add_dependency 'b', '> 5' - util_setup_gem - @installer.ignore_dependencies = true - - build_rake_in do - use_ui @ui do - assert_equal @spec, @installer.install - end - end - - gemdir = File.join @gemhome, 'gems', @spec.full_name - assert File.exist?(gemdir) - - exe = File.join(gemdir, 'bin', 'executable') - assert File.exist?(exe) - exe_mode = File.stat(exe).mode & 0111 - assert_equal 0111, exe_mode, "0%o" % exe_mode unless win_platform? - assert File.exist?(File.join(gemdir, 'lib', 'code.rb')) - - assert File.exist?(File.join(@gemhome, 'specifications', - "#{@spec.full_name}.gemspec")) - end - - def test_install_missing_dirs - FileUtils.rm_f File.join(Gem.dir, 'cache') - FileUtils.rm_f File.join(Gem.dir, 'docs') - FileUtils.rm_f File.join(Gem.dir, 'specifications') - - use_ui @ui do - Dir.chdir @tempdir do Gem::Builder.new(@spec).build end - gem = File.join @tempdir, "#{@spec.full_name}.gem" - - @installer.install - end - - File.directory? File.join(Gem.dir, 'cache') - File.directory? File.join(Gem.dir, 'docs') - File.directory? File.join(Gem.dir, 'specifications') - - assert File.exist?(File.join(@gemhome, 'cache', "#{@spec.full_name}.gem")) - assert File.exist?(File.join(@gemhome, 'specifications', - "#{@spec.full_name}.gemspec")) - end - unless win_platform? # File.chmod doesn't work - def test_install_user_local_fallback - Dir.mkdir util_inst_bindir - File.chmod 0755, @userhome - File.chmod 0000, util_inst_bindir - File.chmod 0000, Gem.dir - install_dir = File.join @userhome, '.gem', 'gems', @spec.full_name - @spec.executables = ["executable"] - - build_rake_in do - use_ui @ui do - util_setup_gem - @installer.install - end - end - - assert File.exist?(File.join(install_dir, 'lib', 'code.rb')) - assert File.exist?(File.join(@userhome, '.gem', 'bin', 'executable')) - ensure - File.chmod 0755, Gem.dir - File.chmod 0755, util_inst_bindir - end - - def test_install_bindir_read_only - Dir.mkdir util_inst_bindir - File.chmod 0755, @userhome - File.chmod 0000, util_inst_bindir - - build_rake_in do - use_ui @ui do - setup - util_setup_gem - @installer.install - end - end - - assert File.exist?(File.join(@userhome, '.gem', 'bin', 'executable')) - ensure - File.chmod 0755, util_inst_bindir - end - end - - def test_install_with_message - @spec.post_install_message = 'I am a shiny gem!' - - use_ui @ui do - Dir.chdir @tempdir do Gem::Builder.new(@spec).build end - - @installer.install - end - - assert_match %r|I am a shiny gem!|, @ui.output - end - - def test_install_wrong_ruby_version - use_ui @ui do - installer = Gem::Installer.new old_ruby_required - e = assert_raise Gem::InstallError do - installer.install - end - assert_equal 'old_ruby_required requires Ruby version = 1.4.6', - e.message - end - end - - def test_install_wrong_rubygems_version - spec = quick_gem 'old_rubygems_required', '1' do |s| - s.required_rubygems_version = '< 0' - end - - util_build_gem spec - - gem = File.join @gemhome, 'cache', "#{spec.full_name}.gem" - - use_ui @ui do - @installer = Gem::Installer.new gem - e = assert_raise Gem::InstallError do - @installer.install - end - assert_equal 'old_rubygems_required requires RubyGems version < 0', - e.message - end - end - - def test_installation_satisfies_dependency_eh - dep = Gem::Dependency.new 'a', '>= 2' - assert @installer.installation_satisfies_dependency?(dep) - - dep = Gem::Dependency.new 'a', '> 2' - assert ! @installer.installation_satisfies_dependency?(dep) - end - - def test_shebang - util_make_exec '2', "#!/usr/bin/ruby" - - shebang = @installer.shebang 'my_exec' - - assert_equal "#!#{Gem.ruby}", shebang - end - - def test_shebang_arguments - util_make_exec '2', "#!/usr/bin/ruby -ws" - - shebang = @installer.shebang 'my_exec' - - assert_equal "#!#{Gem.ruby} -ws", shebang - end - - def test_shebang_empty - util_make_exec '2', '' - - shebang = @installer.shebang 'my_exec' - assert_equal "#!#{Gem.ruby}", shebang - end - - def test_shebang_env - util_make_exec '2', "#!/usr/bin/env ruby" - - shebang = @installer.shebang 'my_exec' - - assert_equal "#!#{Gem.ruby}", shebang - end - - def test_shebang_env_arguments - util_make_exec '2', "#!/usr/bin/env ruby -ws" - - shebang = @installer.shebang 'my_exec' - - assert_equal "#!#{Gem.ruby} -ws", shebang - end - - def test_shebang_env_shebang - util_make_exec '2', '' - @installer.env_shebang = true - - shebang = @installer.shebang 'my_exec' - assert_equal "#!/usr/bin/env #{Gem::ConfigMap[:RUBY_INSTALL_NAME]}", shebang - end - - def test_shebang_nested - util_make_exec '2', "#!/opt/local/ruby/bin/ruby" - - shebang = @installer.shebang 'my_exec' - - assert_equal "#!#{Gem.ruby}", shebang - end - - def test_shebang_nested_arguments - util_make_exec '2', "#!/opt/local/ruby/bin/ruby -ws" - - shebang = @installer.shebang 'my_exec' - - assert_equal "#!#{Gem.ruby} -ws", shebang - end - - def test_shebang_version - util_make_exec '2', "#!/usr/bin/ruby18" - - shebang = @installer.shebang 'my_exec' - - assert_equal "#!#{Gem.ruby}", shebang - end - - def test_shebang_version_arguments - util_make_exec '2', "#!/usr/bin/ruby18 -ws" - - shebang = @installer.shebang 'my_exec' - - assert_equal "#!#{Gem.ruby} -ws", shebang - end - - def test_shebang_version_env - util_make_exec '2', "#!/usr/bin/env ruby18" - - shebang = @installer.shebang 'my_exec' - - assert_equal "#!#{Gem.ruby}", shebang - end - - def test_shebang_version_env_arguments - util_make_exec '2', "#!/usr/bin/env ruby18 -ws" - - shebang = @installer.shebang 'my_exec' - - assert_equal "#!#{Gem.ruby} -ws", shebang - end - - def test_unpack - util_setup_gem - - dest = File.join @gemhome, 'gems', @spec.full_name - - @installer.unpack dest - - assert File.exist?(File.join(dest, 'lib', 'code.rb')) - assert File.exist?(File.join(dest, 'bin', 'executable')) - end - - def test_write_spec - spec_dir = File.join @gemhome, 'specifications' - spec_file = File.join spec_dir, "#{@spec.full_name}.gemspec" - FileUtils.rm spec_file - assert !File.exist?(spec_file) - - @installer.spec = @spec - @installer.gem_home = @gemhome - - @installer.write_spec - - assert File.exist?(spec_file) - assert_equal @spec, eval(File.read(spec_file)) - end - - def old_ruby_required - spec = quick_gem 'old_ruby_required', '1' do |s| - s.required_ruby_version = '= 1.4.6' - end - - util_build_gem spec - - File.join @gemhome, 'cache', "#{spec.full_name}.gem" - end - -end - diff --git a/trunk/test/rubygems/test_gem_local_remote_options.rb b/trunk/test/rubygems/test_gem_local_remote_options.rb deleted file mode 100644 index e676c94f21..0000000000 --- a/trunk/test/rubygems/test_gem_local_remote_options.rb +++ /dev/null @@ -1,85 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/local_remote_options' -require 'rubygems/command' - -class TestGemLocalRemoteOptions < RubyGemTestCase - - def setup - super - - @cmd = Gem::Command.new 'dummy', 'dummy' - @cmd.extend Gem::LocalRemoteOptions - end - - def test_add_local_remote_options - @cmd.add_local_remote_options - - args = %w[-l -r -b -B 10 --source http://gems.example.com -p --update-sources] - assert @cmd.handles?(args) - end - - def test_local_eh - assert_equal false, @cmd.local? - - @cmd.options[:domain] = :local - - assert_equal true, @cmd.local? - - @cmd.options[:domain] = :both - - assert_equal true, @cmd.local? - end - - def test_remote_eh - assert_equal false, @cmd.remote? - - @cmd.options[:domain] = :remote - - assert_equal true, @cmd.remote? - - @cmd.options[:domain] = :both - - assert_equal true, @cmd.remote? - end - - def test_source_option - @cmd.add_source_option - - s1 = URI.parse 'http://more-gems.example.com/' - s2 = URI.parse 'http://even-more-gems.example.com/' - s3 = URI.parse 'http://other-gems.example.com/some_subdir' - - @cmd.handle_options %W[--source #{s1} --source #{s2} --source #{s3}] - - assert_equal [s1.to_s, s2.to_s, "#{s3}/"], Gem.sources - end - - def test_update_sources_option - @cmd.add_update_sources_option - - Gem.configuration.update_sources = false - - @cmd.handle_options %W[--update-sources] - - assert_equal true, Gem.configuration.update_sources - - @cmd.handle_options %W[--no-update-sources] - - assert_equal false, Gem.configuration.update_sources - end - - def test_source_option_bad - @cmd.add_source_option - - s1 = 'htp://more-gems.example.com' - - assert_raise OptionParser::InvalidArgument do - @cmd.handle_options %W[--source #{s1}] - end - - assert_equal [@gem_repo], Gem.sources - end - -end - diff --git a/trunk/test/rubygems/test_gem_package_tar_header.rb b/trunk/test/rubygems/test_gem_package_tar_header.rb deleted file mode 100644 index 9b7708dca8..0000000000 --- a/trunk/test/rubygems/test_gem_package_tar_header.rb +++ /dev/null @@ -1,137 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_package_tar_test_case') -require 'rubygems/package' - -class TestGemPackageTarHeader < TarTestCase - - def setup - super - - header = { - :name => 'x', - :mode => 0644, - :uid => 1000, - :gid => 10000, - :size => 100, - :mtime => 12345, - :typeflag => '0', - :linkname => 'link', - :uname => 'user', - :gname => 'group', - :devmajor => 1, - :devminor => 2, - :prefix => 'y', - } - - @tar_header = Gem::Package::TarHeader.new header - end - - def test_self_from - io = TempIO.new @tar_header.to_s - - new_header = Gem::Package::TarHeader.from io - - assert_headers_equal @tar_header, new_header - end - - def test_initialize - assert_equal '', @tar_header.checksum, 'checksum' - assert_equal 1, @tar_header.devmajor, 'devmajor' - assert_equal 2, @tar_header.devminor, 'devminor' - assert_equal 10000, @tar_header.gid, 'gid' - assert_equal 'group', @tar_header.gname, 'gname' - assert_equal 'link', @tar_header.linkname, 'linkname' - assert_equal 'ustar', @tar_header.magic, 'magic' - assert_equal 0644, @tar_header.mode, 'mode' - assert_equal 12345, @tar_header.mtime, 'mtime' - assert_equal 'x', @tar_header.name, 'name' - assert_equal 'y', @tar_header.prefix, 'prefix' - assert_equal 100, @tar_header.size, 'size' - assert_equal '0', @tar_header.typeflag, 'typeflag' - assert_equal 1000, @tar_header.uid, 'uid' - assert_equal 'user', @tar_header.uname, 'uname' - assert_equal '00', @tar_header.version, 'version' - - assert !@tar_header.empty?, 'empty' - end - - def test_initialize_bad - assert_raises ArgumentError do - Gem::Package::TarHeader.new :name => '', :size => '', :mode => '' - end - - assert_raises ArgumentError do - Gem::Package::TarHeader.new :name => '', :size => '', :prefix => '' - end - - assert_raises ArgumentError do - Gem::Package::TarHeader.new :name => '', :prefix => '', :mode => '' - end - - assert_raises ArgumentError do - Gem::Package::TarHeader.new :prefix => '', :size => '', :mode => '' - end - end - - def test_empty_eh - assert !@tar_header.empty? - - @tar_header = Gem::Package::TarHeader.new :name => 'x', :prefix => '', - :mode => 0, :size => 0, - :empty => true - - assert @tar_header.empty? - end - - def test_equals2 - assert_equal @tar_header, @tar_header - assert_equal @tar_header, @tar_header.dup - end - - def test_to_s - expected = <<-EOF.split("\n").join -x\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\0000000644\0000001750\0000023420\00000000000144\00000000030071 -\000012467\000 0link\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000ustar\00000user\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -group\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\0000000001\0000000002\000y\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 -\000\000\000\000\000\000\000\000\000\000 - EOF - - assert_headers_equal expected, @tar_header - end - - def test_update_checksum - assert_equal '', @tar_header.checksum - - @tar_header.update_checksum - - assert_equal '012467', @tar_header.checksum - end - -end - diff --git a/trunk/test/rubygems/test_gem_package_tar_input.rb b/trunk/test/rubygems/test_gem_package_tar_input.rb deleted file mode 100644 index 279026b149..0000000000 --- a/trunk/test/rubygems/test_gem_package_tar_input.rb +++ /dev/null @@ -1,119 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_package_tar_test_case') -require 'rubygems/package/tar_input' - -class TestGemPackageTarInput < TarTestCase - - # Sometimes the setgid bit doesn't take. Don't know if this is a problem on - # all systems, or just some. But for now, we will ignore it in the tests. - SETGID_BIT = 02000 - - def setup - super - - inner_tar = tar_file_header("bla", "", 0612, 10) - inner_tar += "0123456789" + "\0" * 502 - inner_tar += tar_file_header("foo", "", 0636, 5) - inner_tar += "01234" + "\0" * 507 - inner_tar += tar_dir_header("__dir__", "", 0600) - inner_tar += "\0" * 1024 - str = TempIO.new - - begin - os = Zlib::GzipWriter.new str - os.write inner_tar - ensure - os.finish - end - - str.rewind - - @file = File.join @tempdir, 'bla.tar' - - File.open @file, 'wb' do |f| - f.write tar_file_header("data.tar.gz", "", 0644, str.string.size) - f.write str.string - f.write "\0" * ((512 - (str.string.size % 512)) % 512 ) - - @spec = Gem::Specification.new do |spec| - spec.author = "Mauricio :)" - end - - meta = @spec.to_yaml - - f.write tar_file_header("metadata", "", 0644, meta.size) - f.write meta + "\0" * (1024 - meta.size) - f.write "\0" * 1024 - end - - @entry_names = %w{bla foo __dir__} - @entry_sizes = [10, 5, 0] - #FIXME: are these modes system dependent? - @entry_modes = [0100612, 0100636, 040600] - @entry_files = %W[#{@tempdir}/bla #{@tempdir}/foo] - @entry_contents = %w[0123456789 01234] - end - - def test_each_works - open @file, 'rb' do |io| - Gem::Package::TarInput.open io do |tar_input| - count = 0 - - tar_input.each_with_index do |entry, i| - count = i - - assert_kind_of Gem::Package::TarReader::Entry, entry - assert_equal @entry_names[i], entry.header.name - assert_equal @entry_sizes[i], entry.header.size - end - - assert_equal 2, count - - assert_equal @spec, tar_input.metadata - end - end - end - - def test_extract_entry_works - open @file, 'rb' do |io| - Gem::Package::TarInput.open io do |tar_input| - assert_equal @spec, tar_input.metadata - - count = 0 - - tar_input.each_with_index do |entry, i| - count = i - tar_input.extract_entry @tempdir, entry - name = File.join @tempdir, entry.header.name - - if entry.directory? - assert File.dir?(name) - else - assert File.file?(name) - assert_equal @entry_sizes[i], File.stat(name).size - #FIXME: win32? !! - end - - unless Gem.win_platform? then - assert_equal @entry_modes[i], File.stat(name).mode & (~SETGID_BIT) - end - end - - assert_equal 2, count - end - end - - @entry_files.each_with_index do |x, i| - assert File.file?(x) - assert_equal @entry_contents[i], File.read_b(x) - end - end - -end - diff --git a/trunk/test/rubygems/test_gem_package_tar_output.rb b/trunk/test/rubygems/test_gem_package_tar_output.rb deleted file mode 100644 index 06dbb1a4da..0000000000 --- a/trunk/test/rubygems/test_gem_package_tar_output.rb +++ /dev/null @@ -1,104 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_package_tar_test_case') -require 'rubygems/package/tar_output' - -class TestGemPackageTarOutput < TarTestCase - - def setup - super - - @file = File.join @tempdir, 'bla2.tar' - end - - def test_self_open - open @file, 'wb' do |tar_io| - Gem::Package::TarOutput.open tar_io do |tar_writer| - tar_writer.add_file_simple 'README', 0, 17 do |io| - io.write "This is a README\n" - end - - tar_writer.metadata = "This is some metadata\n" - end - end - - files = util_extract - - name, data = files.shift - assert_equal 'data.tar.gz', name - - gz = Zlib::GzipReader.new StringIO.new(data) - - Gem::Package::TarReader.new gz do |tar_reader| - tar_reader.each do |entry| - assert_equal 'README', entry.full_name - assert_equal "This is a README\n", entry.read - end - end - - gz.close - - name, data = files.shift - assert_equal 'metadata.gz', name - - gz = Zlib::GzipReader.new StringIO.new(data) - assert_equal "This is some metadata\n", gz.read - - assert files.empty? - ensure - gz.close if gz - end - - if defined? OpenSSL then - def test_self_open_signed - signer = Gem::Security::Signer.new @private_key, [@public_cert] - - open @file, 'wb' do |tar_io| - Gem::Package::TarOutput.open tar_io, signer do |tar_writer| - tar_writer.add_file_simple 'README', 0, 17 do |io| - io.write "This is a README\n" - end - - tar_writer.metadata = "This is some metadata\n" - end - end - - files = util_extract - - name, data = files.shift - assert_equal 'data.tar.gz', name - - name, data = files.shift - assert_equal 'metadata.gz', name - - name, data = files.shift - assert_equal 'data.tar.gz.sig', name - - name, data = files.shift - assert_equal 'metadata.gz.sig', name - - assert files.empty? - end - end - - def util_extract - files = [] - - open @file, 'rb' do |io| - Gem::Package::TarReader.new io do |tar_reader| - tar_reader.each do |entry| - files << [entry.full_name, entry.read] - end - end - end - - files - end - -end - diff --git a/trunk/test/rubygems/test_gem_package_tar_reader.rb b/trunk/test/rubygems/test_gem_package_tar_reader.rb deleted file mode 100644 index 6962088878..0000000000 --- a/trunk/test/rubygems/test_gem_package_tar_reader.rb +++ /dev/null @@ -1,53 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_package_tar_test_case') -require 'rubygems/package' - -class TestGemPackageTarReader < TarTestCase - - def test_each_entry - tar = tar_dir_header "foo", "bar", 0 - tar << tar_file_header("bar", "baz", 0, 0) - - io = TempIO.new tar - - entries = 0 - - Gem::Package::TarReader.new io do |tar_reader| - tar_reader.each_entry do |entry| - assert_kind_of Gem::Package::TarReader::Entry, entry - - entries += 1 - end - end - - assert_equal 2, entries - end - - def test_rewind - content = ('a'..'z').to_a.join(" ") - - str = tar_file_header("lib/foo", "", 010644, content.size) + content + - "\0" * (512 - content.size) - str << "\0" * 1024 - - Gem::Package::TarReader.new(TempIO.new(str)) do |tar_reader| - 3.times do - tar_reader.rewind - i = 0 - tar_reader.each_entry do |entry| - assert_equal(content, entry.read) - i += 1 - end - assert_equal(1, i) - end - end - end - -end - diff --git a/trunk/test/rubygems/test_gem_package_tar_reader_entry.rb b/trunk/test/rubygems/test_gem_package_tar_reader_entry.rb deleted file mode 100644 index 7e25143a85..0000000000 --- a/trunk/test/rubygems/test_gem_package_tar_reader_entry.rb +++ /dev/null @@ -1,116 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_package_tar_test_case') -require 'rubygems/package' - -class TestGemPackageTarReaderEntry < TarTestCase - - def setup - super - - @contents = ('a'..'z').to_a.join * 100 - - @tar = '' - @tar << tar_file_header("lib/foo", "", 0, @contents.size) - @tar << @contents - @tar << "\0" * (512 - (@tar.size % 512)) - - @entry = util_entry @tar - end - - def test_bytes_read - assert_equal 0, @entry.bytes_read - - @entry.getc - - assert_equal 1, @entry.bytes_read - end - - def test_close - @entry.close - - assert @entry.bytes_read - - e = assert_raise IOError do @entry.eof? end - assert_equal 'closed Gem::Package::TarReader::Entry', e.message - - e = assert_raise IOError do @entry.getc end - assert_equal 'closed Gem::Package::TarReader::Entry', e.message - - e = assert_raise IOError do @entry.pos end - assert_equal 'closed Gem::Package::TarReader::Entry', e.message - - e = assert_raise IOError do @entry.read end - assert_equal 'closed Gem::Package::TarReader::Entry', e.message - - e = assert_raise IOError do @entry.rewind end - assert_equal 'closed Gem::Package::TarReader::Entry', e.message - end - - def test_closed_eh - @entry.close - - assert @entry.closed? - end - - def test_eof_eh - @entry.read - - assert @entry.eof? - end - - def test_full_name - assert_equal 'lib/foo', @entry.full_name - end - - def test_getc - assert_equal ?a, @entry.getc - end - - def test_directory_eh - assert_equal false, @entry.directory? - assert_equal true, util_dir_entry.directory? - end - - def test_file_eh - assert_equal true, @entry.file? - assert_equal false, util_dir_entry.file? - end - - def test_pos - assert_equal 0, @entry.pos - - @entry.getc - - assert_equal 1, @entry.pos - end - - def test_read - assert_equal @contents, @entry.read - end - - def test_read_big - assert_equal @contents, @entry.read(@contents.size * 2) - end - - def test_read_small - assert_equal @contents[0...100], @entry.read(100) - end - - def test_rewind - char = @entry.getc - - @entry.rewind - - assert_equal 0, @entry.pos - - assert_equal char, @entry.getc - end - -end - diff --git a/trunk/test/rubygems/test_gem_package_tar_writer.rb b/trunk/test/rubygems/test_gem_package_tar_writer.rb deleted file mode 100644 index e066c2967f..0000000000 --- a/trunk/test/rubygems/test_gem_package_tar_writer.rb +++ /dev/null @@ -1,151 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_package_tar_test_case') -require 'rubygems/package/tar_writer' - -class TestTarWriter < TarTestCase - - def setup - super - - @data = 'abcde12345' - @io = TempIO.new - @tar_writer = Gem::Package::TarWriter.new @io - end - - def teardown - @tar_writer.close unless @tar_writer.closed? - - super - end - - def test_add_file - @tar_writer.add_file 'x', 0644 do |f| f.write 'a' * 10 end - - assert_headers_equal(tar_file_header('x', '', 0644, 10), - @io.string[0, 512]) - assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512] - assert_equal 1024, @io.pos - end - - def test_add_file_simple - @tar_writer.add_file_simple 'x', 0644, 10 do |io| io.write "a" * 10 end - - assert_headers_equal(tar_file_header('x', '', 0644, 10), - @io.string[0, 512]) - - assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512] - assert_equal 1024, @io.pos - end - - def test_add_file_simple_padding - @tar_writer.add_file_simple 'x', 0, 100 - - assert_headers_equal tar_file_header('x', '', 0, 100), - @io.string[0, 512] - - assert_equal "\0" * 512, @io.string[512, 512] - end - - def test_add_file_simple_data - @tar_writer.add_file_simple("lib/foo/bar", 0, 10) { |f| f.write @data } - @tar_writer.flush - - assert_equal @data + ("\0" * (512-@data.size)), - @io.string[512, 512] - end - - def test_add_file_simple_size - assert_raise Gem::Package::TarWriter::FileOverflow do - @tar_writer.add_file_simple("lib/foo/bar", 0, 10) do |io| - io.write "1" * 11 - end - end - end - - def test_add_file_unseekable - assert_raise Gem::Package::NonSeekableIO do - Gem::Package::TarWriter.new(Object.new).add_file 'x', 0 - end - end - - def test_close - @tar_writer.close - - assert_equal "\0" * 1024, @io.string - - e = assert_raise IOError do - @tar_writer.close - end - assert_equal 'closed Gem::Package::TarWriter', e.message - - e = assert_raise IOError do - @tar_writer.flush - end - assert_equal 'closed Gem::Package::TarWriter', e.message - - e = assert_raise IOError do - @tar_writer.add_file 'x', 0 - end - assert_equal 'closed Gem::Package::TarWriter', e.message - - e = assert_raise IOError do - @tar_writer.add_file_simple 'x', 0, 0 - end - assert_equal 'closed Gem::Package::TarWriter', e.message - - e = assert_raise IOError do - @tar_writer.mkdir 'x', 0 - end - assert_equal 'closed Gem::Package::TarWriter', e.message - end - - def test_mkdir - @tar_writer.mkdir 'foo', 0644 - - assert_headers_equal tar_dir_header('foo', '', 0644), - @io.string[0, 512] - assert_equal 512, @io.pos - end - - def test_split_name - assert_equal ['b' * 100, 'a' * 155], - @tar_writer.split_name("#{'a' * 155}/#{'b' * 100}") - - assert_equal ["#{'qwer/' * 19}bla", 'a' * 151], - @tar_writer.split_name("#{'a' * 151}/#{'qwer/' * 19}bla") - end - - def test_split_name_too_long_name - name = File.join 'a', 'b' * 100 - assert_equal ['b' * 100, 'a'], @tar_writer.split_name(name) - - assert_raise Gem::Package::TooLongFileName do - name = File.join 'a', 'b' * 101 - @tar_writer.split_name name - end - end - - def test_split_name_too_long_prefix - name = File.join 'a' * 155, 'b' - assert_equal ['b', 'a' * 155], @tar_writer.split_name(name) - - assert_raise Gem::Package::TooLongFileName do - name = File.join 'a' * 156, 'b' - @tar_writer.split_name name - end - end - - def test_split_name_too_long_total - assert_raise Gem::Package::TooLongFileName do - @tar_writer.split_name 'a' * 257 - end - end - -end - diff --git a/trunk/test/rubygems/test_gem_platform.rb b/trunk/test/rubygems/test_gem_platform.rb deleted file mode 100644 index 648c2a9f36..0000000000 --- a/trunk/test/rubygems/test_gem_platform.rb +++ /dev/null @@ -1,259 +0,0 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'test/unit' -require 'rubygems/platform' -require 'rbconfig' - -class TestGemPlatform < RubyGemTestCase - - def test_self_const_missing - consts = [:DARWIN, :LINUX_586, :MSWIN32, :PPC_DARWIN, :WIN32, :X86_LINUX] - - consts.each do |const| - e = assert_raise NameError do - Gem::Platform.const_missing const - end - - assert_equal "#{const} has been removed, use CURRENT instead", - e.message - end - end - - def test_self_local - util_set_arch 'i686-darwin8.10.1' - - assert_equal Gem::Platform.new(%w[x86 darwin 8]), Gem::Platform.local - end - - def test_self_match - assert Gem::Platform.match(nil), 'nil == ruby' - assert Gem::Platform.match(Gem::Platform.local), 'exact match' - assert Gem::Platform.match(Gem::Platform.local.to_s), '=~ match' - assert Gem::Platform.match(Gem::Platform::RUBY), 'ruby' - end - - def test_self_new - assert_equal Gem::Platform.local, Gem::Platform.new(Gem::Platform::CURRENT) - assert_equal Gem::Platform::RUBY, Gem::Platform.new(Gem::Platform::RUBY) - assert_equal Gem::Platform::RUBY, Gem::Platform.new(nil) - assert_equal Gem::Platform::RUBY, Gem::Platform.new('') - end - - def test_initialize - test_cases = { - 'amd64-freebsd6' => ['amd64', 'freebsd', '6'], - 'hppa2.0w-hpux11.31' => ['hppa2.0w', 'hpux', '11'], - 'java' => [nil, 'java', nil], - 'jruby' => [nil, 'java', nil], - 'powerpc-aix5.3.0.0' => ['powerpc', 'aix', '5'], - 'powerpc-darwin7' => ['powerpc', 'darwin', '7'], - 'powerpc-darwin8' => ['powerpc', 'darwin', '8'], - 'powerpc-linux' => ['powerpc', 'linux', nil], - 'powerpc64-linux' => ['powerpc64', 'linux', nil], - 'sparc-solaris2.10' => ['sparc', 'solaris', '2.10'], - 'sparc-solaris2.8' => ['sparc', 'solaris', '2.8'], - 'sparc-solaris2.9' => ['sparc', 'solaris', '2.9'], - 'universal-darwin8' => ['universal', 'darwin', '8'], - 'universal-darwin9' => ['universal', 'darwin', '9'], - 'i386-cygwin' => ['x86', 'cygwin', nil], - 'i686-darwin' => ['x86', 'darwin', nil], - 'i686-darwin8.4.1' => ['x86', 'darwin', '8'], - 'i386-freebsd4.11' => ['x86', 'freebsd', '4'], - 'i386-freebsd5' => ['x86', 'freebsd', '5'], - 'i386-freebsd6' => ['x86', 'freebsd', '6'], - 'i386-freebsd7' => ['x86', 'freebsd', '7'], - 'i386-java1.5' => ['x86', 'java', '1.5'], - 'x86-java1.6' => ['x86', 'java', '1.6'], - 'i386-java1.6' => ['x86', 'java', '1.6'], - 'i686-linux' => ['x86', 'linux', nil], - 'i586-linux' => ['x86', 'linux', nil], - 'i486-linux' => ['x86', 'linux', nil], - 'i386-linux' => ['x86', 'linux', nil], - 'i586-linux-gnu' => ['x86', 'linux', nil], - 'i386-linux-gnu' => ['x86', 'linux', nil], - 'i386-mingw32' => ['x86', 'mingw32', nil], - 'i386-mswin32' => ['x86', 'mswin32', nil], - 'i386-mswin32_80' => ['x86', 'mswin32', '80'], - 'i386-mswin32-80' => ['x86', 'mswin32', '80'], - 'x86-mswin32' => ['x86', 'mswin32', nil], - 'x86-mswin32_60' => ['x86', 'mswin32', '60'], - 'x86-mswin32-60' => ['x86', 'mswin32', '60'], - 'i386-netbsdelf' => ['x86', 'netbsdelf', nil], - 'i386-openbsd4.0' => ['x86', 'openbsd', '4.0'], - 'i386-solaris2.10' => ['x86', 'solaris', '2.10'], - 'i386-solaris2.8' => ['x86', 'solaris', '2.8'], - 'mswin32' => ['x86', 'mswin32', nil], - 'x86_64-linux' => ['x86_64', 'linux', nil], - 'x86_64-openbsd3.9' => ['x86_64', 'openbsd', '3.9'], - 'x86_64-openbsd4.0' => ['x86_64', 'openbsd', '4.0'], - } - - test_cases.each do |arch, expected| - platform = Gem::Platform.new arch - assert_equal expected, platform.to_a, arch.inspect - end - end - - def test_initialize_command_line - expected = ['x86', 'mswin32', nil] - - platform = Gem::Platform.new 'i386-mswin32' - - assert_equal expected, platform.to_a, 'i386-mswin32' - - expected = ['x86', 'mswin32', '80'] - - platform = Gem::Platform.new 'i386-mswin32-80' - - assert_equal expected, platform.to_a, 'i386-mswin32-80' - end - - def test_initialize_mswin32_vc6 - orig_RUBY_SO_NAME = Config::CONFIG['RUBY_SO_NAME'] - Config::CONFIG['RUBY_SO_NAME'] = 'msvcrt-ruby18' - - expected = ['x86', 'mswin32', nil] - - platform = Gem::Platform.new 'i386-mswin32' - - assert_equal expected, platform.to_a, 'i386-mswin32 VC6' - ensure - Config::CONFIG['RUBY_SO_NAME'] = orig_RUBY_SO_NAME - end - - def test_initialize_platform - platform = Gem::Platform.new 'cpu-my_platform1' - expected = Gem::Platform.new platform - - assert_equal 'cpu', platform.cpu - assert_equal 'my_platform', platform.os - assert_equal '1', platform.version - end - - def test_initialize_test - platform = Gem::Platform.new 'cpu-my_platform1' - assert_equal 'cpu', platform.cpu - assert_equal 'my_platform', platform.os - assert_equal '1', platform.version - - platform = Gem::Platform.new 'cpu-other_platform1' - assert_equal 'cpu', platform.cpu - assert_equal 'other_platform', platform.os - assert_equal '1', platform.version - end - - def test_to_s - if win_platform? then - assert_equal 'x86-mswin32-60', Gem::Platform.local.to_s - else - assert_equal 'x86-darwin-8', Gem::Platform.local.to_s - end - end - - def test_equals2 - my = Gem::Platform.new %w[cpu my_platform 1] - other = Gem::Platform.new %w[cpu other_platform 1] - - assert_equal my, my - assert_not_equal my, other - assert_not_equal other, my - end - - def test_equals3 - my = Gem::Platform.new %w[cpu my_platform 1] - other = Gem::Platform.new %w[cpu other_platform 1] - - assert(my === my) - assert !(other === my) - assert !(my === other) - end - - def test_equals3_cpu - ppc_darwin8 = Gem::Platform.new 'powerpc-darwin8.0' - uni_darwin8 = Gem::Platform.new 'universal-darwin8.0' - x86_darwin8 = Gem::Platform.new 'i686-darwin8.0' - - util_set_arch 'powerpc-darwin8' - assert((ppc_darwin8 === Gem::Platform.local), 'powerpc =~ universal') - assert((uni_darwin8 === Gem::Platform.local), 'powerpc =~ universal') - assert !(x86_darwin8 === Gem::Platform.local), 'powerpc =~ universal' - - util_set_arch 'i686-darwin8' - assert !(ppc_darwin8 === Gem::Platform.local), 'powerpc =~ universal' - assert((uni_darwin8 === Gem::Platform.local), 'x86 =~ universal') - assert((x86_darwin8 === Gem::Platform.local), 'powerpc =~ universal') - - util_set_arch 'universal-darwin8' - assert((ppc_darwin8 === Gem::Platform.local), 'universal =~ ppc') - assert((uni_darwin8 === Gem::Platform.local), 'universal =~ universal') - assert((x86_darwin8 === Gem::Platform.local), 'universal =~ x86') - end - - def test_equals3_version - util_set_arch 'i686-darwin8' - - x86_darwin = Gem::Platform.new ['x86', 'darwin', nil] - x86_darwin7 = Gem::Platform.new ['x86', 'darwin', '7'] - x86_darwin8 = Gem::Platform.new ['x86', 'darwin', '8'] - x86_darwin9 = Gem::Platform.new ['x86', 'darwin', '9'] - - assert((x86_darwin === Gem::Platform.local), 'x86_darwin === x86_darwin8') - assert((x86_darwin8 === Gem::Platform.local), 'x86_darwin8 === x86_darwin8') - - assert !(x86_darwin7 === Gem::Platform.local), 'x86_darwin7 === x86_darwin8' - assert !(x86_darwin9 === Gem::Platform.local), 'x86_darwin9 === x86_darwin8' - end - - def test_equals_tilde - util_set_arch 'i386-mswin32' - - assert_match 'mswin32', Gem::Platform.local - assert_match 'i386-mswin32', Gem::Platform.local - - # oddballs - assert_match 'i386-mswin32-mq5.3', Gem::Platform.local - assert_match 'i386-mswin32-mq6', Gem::Platform.local - deny_match 'win32-1.8.2-VC7', Gem::Platform.local - deny_match 'win32-1.8.4-VC6', Gem::Platform.local - deny_match 'win32-source', Gem::Platform.local - deny_match 'windows', Gem::Platform.local - - util_set_arch 'i686-linux' - assert_match 'i486-linux', Gem::Platform.local - assert_match 'i586-linux', Gem::Platform.local - assert_match 'i686-linux', Gem::Platform.local - - util_set_arch 'i686-darwin8' - assert_match 'i686-darwin8.4.1', Gem::Platform.local - assert_match 'i686-darwin8.8.2', Gem::Platform.local - - util_set_arch 'java' - assert_match 'java', Gem::Platform.local - assert_match 'jruby', Gem::Platform.local - - util_set_arch 'powerpc-darwin' - assert_match 'powerpc-darwin', Gem::Platform.local - - util_set_arch 'powerpc-darwin7' - assert_match 'powerpc-darwin7.9.0', Gem::Platform.local - - util_set_arch 'powerpc-darwin8' - assert_match 'powerpc-darwin8.10.0', Gem::Platform.local - - util_set_arch 'sparc-solaris2.8' - assert_match 'sparc-solaris2.8-mq5.3', Gem::Platform.local - end - - def assert_match(pattern, platform, message = '') - full_message = build_message message, "<?> expected to be =~\n<?>.", - platform, pattern - assert_block(full_message) { platform =~ pattern } - end - - def deny_match(pattern, platform, message = '') - full_message = build_message message, "<?> expected to be !~\n<?>.", - platform, pattern - assert_block(full_message) { platform !~ pattern } - end - -end - diff --git a/trunk/test/rubygems/test_gem_remote_fetcher.rb b/trunk/test/rubygems/test_gem_remote_fetcher.rb deleted file mode 100644 index 484104dd8f..0000000000 --- a/trunk/test/rubygems/test_gem_remote_fetcher.rb +++ /dev/null @@ -1,692 +0,0 @@ -#!/usr/bin/env ruby -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'webrick' -require 'zlib' -require 'rubygems/remote_fetcher' -require 'ostruct' - -# = Testing Proxy Settings -# -# These tests check the proper proxy server settings by running two -# web servers. The web server at http://localhost:#{SERVER_PORT} -# represents the normal gem server and returns a gemspec with a rake -# version of 0.4.11. The web server at http://localhost:#{PROXY_PORT} -# represents the proxy server and returns a different dataset where -# rake has version 0.4.2. This allows us to detect which server is -# returning the data. -# -# Note that the proxy server is not a *real* proxy server. But our -# software doesn't really care, as long as we hit the proxy URL when a -# proxy is configured. - -class TestGemRemoteFetcher < RubyGemTestCase - - include Gem::DefaultUserInteraction - - SERVER_DATA = <<-EOY ---- !ruby/object:Gem::Cache -gems: - rake-0.4.11: !ruby/object:Gem::Specification - rubygems_version: "0.7" - specification_version: 1 - name: rake - version: !ruby/object:Gem::Version - version: 0.4.11 - date: 2004-11-12 - summary: Ruby based make-like utility. - require_paths: - - lib - author: Jim Weirich - email: jim@weirichhouse.org - homepage: http://rake.rubyforge.org - rubyforge_project: rake - description: Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax. - autorequire: - default_executable: rake - bindir: bin - has_rdoc: true - required_ruby_version: !ruby/object:Gem::Version::Requirement - requirements: - - - - ">" - - !ruby/object:Gem::Version - version: 0.0.0 - version: - platform: ruby - files: - - README - test_files: [] - library_stubs: - rdoc_options: - extra_rdoc_files: - executables: - - rake - extensions: [] - requirements: [] - dependencies: [] - EOY - - PROXY_DATA = SERVER_DATA.gsub(/0.4.11/, '0.4.2') - - # don't let 1.8 and 1.9 autotest collide - RUBY_VERSION =~ /(\d+)\.(\d+)\.(\d+)/ - # don't let parallel runners collide - PROXY_PORT = process_based_port + 100 + $1.to_i * 100 + $2.to_i * 10 + $3.to_i - SERVER_PORT = process_based_port + 200 + $1.to_i * 100 + $2.to_i * 10 + $3.to_i - - def setup - super - self.class.start_servers - self.class.enable_yaml = true - self.class.enable_zip = false - ENV.delete 'http_proxy' - ENV.delete 'HTTP_PROXY' - ENV.delete 'http_proxy_user' - ENV.delete 'HTTP_PROXY_USER' - ENV.delete 'http_proxy_pass' - ENV.delete 'HTTP_PROXY_PASS' - - base_server_uri = "http://localhost:#{SERVER_PORT}" - @proxy_uri = "http://localhost:#{PROXY_PORT}" - - @server_uri = base_server_uri + "/yaml" - @server_z_uri = base_server_uri + "/yaml.Z" - - # REFACTOR: copied from test_gem_dependency_installer.rb - @gems_dir = File.join @tempdir, 'gems' - @cache_dir = File.join @gemhome, 'cache' - FileUtils.mkdir @gems_dir - - @a1, @a1_gem = util_gem 'a', '1' do |s| s.executables << 'a_bin' end - - Gem::RemoteFetcher.fetcher = nil - - @fetcher = Gem::RemoteFetcher.fetcher - end - - def test_self_fetcher - fetcher = Gem::RemoteFetcher.fetcher - assert_not_nil fetcher - assert_kind_of Gem::RemoteFetcher, fetcher - end - - def test_self_fetcher_with_proxy - proxy_uri = 'http://proxy.example.com' - Gem.configuration[:http_proxy] = proxy_uri - Gem::RemoteFetcher.fetcher = nil - - fetcher = Gem::RemoteFetcher.fetcher - - assert_not_nil fetcher - assert_kind_of Gem::RemoteFetcher, fetcher - assert_equal proxy_uri, fetcher.instance_variable_get(:@proxy_uri).to_s - end - - def test_self_fetcher_with_proxy_URI - proxy_uri = URI.parse 'http://proxy.example.com' - Gem.configuration[:http_proxy] = proxy_uri - fetcher = Gem::RemoteFetcher.fetcher - assert_not_nil fetcher - assert_kind_of Gem::RemoteFetcher, fetcher - assert_equal proxy_uri, fetcher.instance_variable_get(:@proxy_uri) - end - - def test_fetch_size_bad_uri - fetcher = Gem::RemoteFetcher.new nil - - e = assert_raise ArgumentError do - fetcher.fetch_size 'gems.example.com/yaml' - end - - assert_equal 'uri is not an HTTP URI', e.message - end - - def test_fetch_size_socket_error - fetcher = Gem::RemoteFetcher.new nil - def fetcher.connection_for(uri) - raise SocketError, "tarded" - end - - uri = 'http://gems.example.com/yaml' - e = assert_raise Gem::RemoteFetcher::FetchError do - fetcher.fetch_size uri - end - - assert_equal "SocketError: tarded (#{uri})", e.message - end - - def test_no_proxy - use_ui @ui do - assert_data_from_server @fetcher.fetch_path(@server_uri) - assert_equal SERVER_DATA.size, @fetcher.fetch_size(@server_uri) - end - end - - def util_fuck_with_fetcher data, blow = false - fetcher = Gem::RemoteFetcher.fetcher - fetcher.instance_variable_set :@test_data, data - - unless blow then - def fetcher.fetch_path arg - @test_arg = arg - @test_data - end - else - def fetcher.fetch_path arg - # OMG I'm such an ass - class << self; remove_method :fetch_path; end - def self.fetch_path arg - @test_arg = arg - @test_data - end - - raise Gem::RemoteFetcher::FetchError.new("haha!", nil) - end - end - - fetcher - end - - def test_download - a1_data = nil - File.open @a1_gem, 'rb' do |fp| - a1_data = fp.read - end - - fetcher = util_fuck_with_fetcher a1_data - - a1_cache_gem = File.join(@gemhome, 'cache', "#{@a1.full_name}.gem") - assert_equal a1_cache_gem, fetcher.download(@a1, 'http://gems.example.com') - assert_equal("http://gems.example.com/gems/a-1.gem", - fetcher.instance_variable_get(:@test_arg).to_s) - assert File.exist?(a1_cache_gem) - end - - def test_download_cached - FileUtils.mv @a1_gem, @cache_dir - - inst = Gem::RemoteFetcher.fetcher - - assert_equal File.join(@gemhome, 'cache', "#{@a1.full_name}.gem"), - inst.download(@a1, 'http://gems.example.com') - end - - def test_download_local - FileUtils.mv @a1_gem, @tempdir - local_path = File.join @tempdir, "#{@a1.full_name}.gem" - inst = nil - - Dir.chdir @tempdir do - inst = Gem::RemoteFetcher.fetcher - end - - assert_equal File.join(@gemhome, 'cache', "#{@a1.full_name}.gem"), - inst.download(@a1, local_path) - end - - def test_download_install_dir - a1_data = nil - File.open @a1_gem, 'rb' do |fp| - a1_data = fp.read - end - - fetcher = util_fuck_with_fetcher a1_data - - install_dir = File.join @tempdir, 'more_gems' - - a1_cache_gem = File.join install_dir, 'cache', "#{@a1.full_name}.gem" - FileUtils.mkdir_p(File.dirname(a1_cache_gem)) - actual = fetcher.download(@a1, 'http://gems.example.com', install_dir) - - assert_equal a1_cache_gem, actual - assert_equal("http://gems.example.com/gems/a-1.gem", - fetcher.instance_variable_get(:@test_arg).to_s) - - assert File.exist?(a1_cache_gem) - end - - unless win_platform? # File.chmod doesn't work - def test_download_local_read_only - FileUtils.mv @a1_gem, @tempdir - local_path = File.join @tempdir, "#{@a1.full_name}.gem" - inst = nil - File.chmod 0555, File.join(@gemhome, 'cache') - - Dir.chdir @tempdir do - inst = Gem::RemoteFetcher.fetcher - end - - assert_equal File.join(@tempdir, "#{@a1.full_name}.gem"), - inst.download(@a1, local_path) - ensure - File.chmod 0755, File.join(@gemhome, 'cache') - end - - def test_download_read_only - File.chmod 0555, File.join(@gemhome, 'cache') - File.chmod 0555, File.join(@gemhome) - - fetcher = util_fuck_with_fetcher File.read(@a1_gem) - fetcher.download(@a1, 'http://gems.example.com') - assert File.exist?(File.join(@userhome, '.gem', - 'cache', "#{@a1.full_name}.gem")) - ensure - File.chmod 0755, File.join(@gemhome) - File.chmod 0755, File.join(@gemhome, 'cache') - end - end - - def test_download_platform_legacy - original_platform = 'old-platform' - - e1, e1_gem = util_gem 'e', '1' do |s| - s.platform = Gem::Platform::CURRENT - s.instance_variable_set :@original_platform, original_platform - end - - e1_data = nil - File.open e1_gem, 'rb' do |fp| - e1_data = fp.read - end - - fetcher = util_fuck_with_fetcher e1_data, :blow_chunks - - e1_cache_gem = File.join(@gemhome, 'cache', "#{e1.full_name}.gem") - - assert_equal e1_cache_gem, fetcher.download(e1, 'http://gems.example.com') - - assert_equal("http://gems.example.com/gems/#{e1.original_name}.gem", - fetcher.instance_variable_get(:@test_arg).to_s) - assert File.exist?(e1_cache_gem) - end - - def test_download_unsupported - inst = Gem::RemoteFetcher.fetcher - - e = assert_raise Gem::InstallError do - inst.download @a1, 'ftp://gems.rubyforge.org' - end - - assert_equal 'unsupported URI scheme ftp', e.message - end - - def test_explicit_proxy - use_ui @ui do - fetcher = Gem::RemoteFetcher.new @proxy_uri - assert_equal PROXY_DATA.size, fetcher.fetch_size(@server_uri) - assert_data_from_proxy fetcher.fetch_path(@server_uri) - end - end - - def test_explicit_proxy_with_user_auth - use_ui @ui do - uri = URI.parse @proxy_uri - uri.user, uri.password = 'foo', 'bar' - fetcher = Gem::RemoteFetcher.new uri.to_s - proxy = fetcher.instance_variable_get("@proxy_uri") - assert_equal 'foo', proxy.user - assert_equal 'bar', proxy.password - assert_data_from_proxy fetcher.fetch_path(@server_uri) - end - - use_ui @ui do - uri = URI.parse @proxy_uri - uri.user, uri.password = 'domain%5Cuser', 'bar' - fetcher = Gem::RemoteFetcher.new uri.to_s - proxy = fetcher.instance_variable_get("@proxy_uri") - assert_equal 'domain\user', URI.unescape(proxy.user) - assert_equal 'bar', proxy.password - assert_data_from_proxy fetcher.fetch_path(@server_uri) - end - - use_ui @ui do - uri = URI.parse @proxy_uri - uri.user, uri.password = 'user', 'my%20pass' - fetcher = Gem::RemoteFetcher.new uri.to_s - proxy = fetcher.instance_variable_get("@proxy_uri") - assert_equal 'user', proxy.user - assert_equal 'my pass', URI.unescape(proxy.password) - assert_data_from_proxy fetcher.fetch_path(@server_uri) - end - end - - def test_explicit_proxy_with_user_auth_in_env - use_ui @ui do - ENV['http_proxy'] = @proxy_uri - ENV['http_proxy_user'] = 'foo' - ENV['http_proxy_pass'] = 'bar' - fetcher = Gem::RemoteFetcher.new nil - proxy = fetcher.instance_variable_get("@proxy_uri") - assert_equal 'foo', proxy.user - assert_equal 'bar', proxy.password - assert_data_from_proxy fetcher.fetch_path(@server_uri) - end - - use_ui @ui do - ENV['http_proxy'] = @proxy_uri - ENV['http_proxy_user'] = 'foo\user' - ENV['http_proxy_pass'] = 'my bar' - fetcher = Gem::RemoteFetcher.new nil - proxy = fetcher.instance_variable_get("@proxy_uri") - assert_equal 'foo\user', URI.unescape(proxy.user) - assert_equal 'my bar', URI.unescape(proxy.password) - assert_data_from_proxy fetcher.fetch_path(@server_uri) - end - end - - def test_fetch_path_gzip - fetcher = Gem::RemoteFetcher.new nil - - def fetcher.open_uri_or_path(uri, mtime, head = nil) - Gem.gzip 'foo' - end - - assert_equal 'foo', fetcher.fetch_path(@uri + 'foo.gz') - end - - def test_fetch_path_io_error - fetcher = Gem::RemoteFetcher.new nil - - def fetcher.open_uri_or_path(uri, mtime, head = nil) - raise EOFError - end - - e = assert_raise Gem::RemoteFetcher::FetchError do - fetcher.fetch_path 'uri' - end - - assert_equal 'EOFError: EOFError (uri)', e.message - assert_equal 'uri', e.uri - end - - def test_fetch_path_socket_error - fetcher = Gem::RemoteFetcher.new nil - - def fetcher.open_uri_or_path(uri, mtime, head = nil) - raise SocketError - end - - e = assert_raise Gem::RemoteFetcher::FetchError do - fetcher.fetch_path 'uri' - end - - assert_equal 'SocketError: SocketError (uri)', e.message - assert_equal 'uri', e.uri - end - - def test_fetch_path_system_call_error - fetcher = Gem::RemoteFetcher.new nil - - def fetcher.open_uri_or_path(uri, mtime = nil, head = nil) - raise Errno::ECONNREFUSED, 'connect(2)' - end - - e = assert_raise Gem::RemoteFetcher::FetchError do - fetcher.fetch_path 'uri' - end - - assert_match %r|ECONNREFUSED:.*connect\(2\) \(uri\)\z|, - e.message - assert_equal 'uri', e.uri - end - - def test_fetch_path_unmodified - fetcher = Gem::RemoteFetcher.new nil - - def fetcher.open_uri_or_path(uri, mtime, head = nil) - '' - end - - assert_equal '', fetcher.fetch_path(URI.parse(@gem_repo), Time.at(0)) - end - - def test_get_proxy_from_env_empty - orig_env_HTTP_PROXY = ENV['HTTP_PROXY'] - orig_env_http_proxy = ENV['http_proxy'] - - ENV['HTTP_PROXY'] = '' - ENV.delete 'http_proxy' - - fetcher = Gem::RemoteFetcher.new nil - - assert_equal nil, fetcher.send(:get_proxy_from_env) - - ensure - orig_env_HTTP_PROXY.nil? ? ENV.delete('HTTP_PROXY') : - ENV['HTTP_PROXY'] = orig_env_HTTP_PROXY - orig_env_http_proxy.nil? ? ENV.delete('http_proxy') : - ENV['http_proxy'] = orig_env_http_proxy - end - - def test_implicit_no_proxy - use_ui @ui do - ENV['http_proxy'] = 'http://fakeurl:12345' - fetcher = Gem::RemoteFetcher.new :no_proxy - assert_data_from_server fetcher.fetch_path(@server_uri) - end - end - - def test_implicit_proxy - use_ui @ui do - ENV['http_proxy'] = @proxy_uri - fetcher = Gem::RemoteFetcher.new nil - assert_data_from_proxy fetcher.fetch_path(@server_uri) - end - end - - def test_implicit_upper_case_proxy - use_ui @ui do - ENV['HTTP_PROXY'] = @proxy_uri - fetcher = Gem::RemoteFetcher.new nil - assert_data_from_proxy fetcher.fetch_path(@server_uri) - end - end - - def test_implicit_proxy_no_env - use_ui @ui do - fetcher = Gem::RemoteFetcher.new nil - assert_data_from_server fetcher.fetch_path(@server_uri) - end - end - - def test_open_uri_or_path - fetcher = Gem::RemoteFetcher.new nil - - conn = Object.new - def conn.started?() true end - def conn.request(req) - unless defined? @requested then - @requested = true - res = Net::HTTPRedirection.new nil, 301, nil - res.add_field 'Location', 'http://gems.example.com/real_path' - res - else - res = Net::HTTPOK.new nil, 200, nil - def res.body() 'real_path' end - res - end - end - - conn = { 'gems.example.com:80' => conn } - fetcher.instance_variable_set :@connections, conn - - data = fetcher.open_uri_or_path 'http://gems.example.com/redirect' - - assert_equal 'real_path', data - end - - def test_open_uri_or_path_limited_redirects - fetcher = Gem::RemoteFetcher.new nil - - conn = Object.new - def conn.started?() true end - def conn.request(req) - res = Net::HTTPRedirection.new nil, 301, nil - res.add_field 'Location', 'http://gems.example.com/redirect' - res - end - - conn = { 'gems.example.com:80' => conn } - fetcher.instance_variable_set :@connections, conn - - e = assert_raise Gem::RemoteFetcher::FetchError do - fetcher.open_uri_or_path 'http://gems.example.com/redirect' - end - - assert_equal 'too many redirects (http://gems.example.com/redirect)', - e.message - end - - def test_request - uri = URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}" - util_stub_connection_for :body => :junk, :code => 200 - - response = @fetcher.request uri, Net::HTTP::Get - - assert_equal 200, response.code - assert_equal :junk, response.body - end - - def test_request_head - uri = URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}" - util_stub_connection_for :body => '', :code => 200 - response = @fetcher.request uri, Net::HTTP::Head - - assert_equal 200, response.code - assert_equal '', response.body - end - - def test_request_unmodifed - uri = URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}" - conn = util_stub_connection_for :body => '', :code => 304 - - t = Time.now - response = @fetcher.request uri, Net::HTTP::Head, t - - assert_equal 304, response.code - assert_equal '', response.body - - assert_equal t.rfc2822, conn.payload['if-modified-since'] - end - - def test_yaml_error_on_size - use_ui @ui do - self.class.enable_yaml = false - fetcher = Gem::RemoteFetcher.new nil - assert_error { fetcher.size } - end - end - - def util_stub_connection_for hash - def @fetcher.connection= conn - @conn = conn - end - - def @fetcher.connection_for uri - @conn - end - - @fetcher.connection = Conn.new OpenStruct.new(hash) - end - - def assert_error(exception_class=Exception) - got_exception = false - begin - yield - rescue exception_class => ex - got_exception = true - end - assert got_exception, "Expected exception conforming to #{exception_class}" - end - - def assert_data_from_server(data) - assert_block("Data is not from server") { data =~ /0\.4\.11/ } - end - - def assert_data_from_proxy(data) - assert_block("Data is not from proxy") { data =~ /0\.4\.2/ } - end - - class Conn - attr_accessor :payload - - def initialize(response) - @response = response - self.payload = nil - end - - def request(req) - self.payload = req - @response - end - end - - class NilLog < WEBrick::Log - def log(level, data) #Do nothing - end - end - - class << self - attr_reader :normal_server, :proxy_server - attr_accessor :enable_zip, :enable_yaml - - def start_servers - @normal_server ||= start_server(SERVER_PORT, SERVER_DATA) - @proxy_server ||= start_server(PROXY_PORT, PROXY_DATA) - @enable_yaml = true - @enable_zip = false - end - - private - - def start_server(port, data) - Thread.new do - begin - null_logger = NilLog.new - s = WEBrick::HTTPServer.new( - :Port => port, - :DocumentRoot => nil, - :Logger => null_logger, - :AccessLog => null_logger - ) - s.mount_proc("/kill") { |req, res| s.shutdown } - s.mount_proc("/yaml") { |req, res| - if @enable_yaml - res.body = data - res['Content-Type'] = 'text/plain' - res['content-length'] = data.size - else - res.status = "404" - res.body = "<h1>NOT FOUND</h1>" - res['Content-Type'] = 'text/html' - end - } - s.mount_proc("/yaml.Z") { |req, res| - if @enable_zip - res.body = Zlib::Deflate.deflate(data) - res['Content-Type'] = 'text/plain' - else - res.status = "404" - res.body = "<h1>NOT FOUND</h1>" - res['Content-Type'] = 'text/html' - end - } - s.start - rescue Exception => ex - abort ex.message - puts "ERROR during server thread: #{ex.message}" - end - end - sleep 0.2 # Give the servers time to startup - end - end - -end - diff --git a/trunk/test/rubygems/test_gem_requirement.rb b/trunk/test/rubygems/test_gem_requirement.rb deleted file mode 100644 index c441bd16df..0000000000 --- a/trunk/test/rubygems/test_gem_requirement.rb +++ /dev/null @@ -1,223 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/version' - -class TestGemRequirement < RubyGemTestCase - - def setup - super - - @r1_2 = Gem::Requirement.new '= 1.2' - @r1_3 = Gem::Requirement.new '= 1.3' - end - - def test_initialize - r = Gem::Requirement.new '2' - assert_equal '= 2', r.to_s, 'String' - - r = Gem::Requirement.new %w[2] - assert_equal '= 2', r.to_s, 'Array of Strings' - - r = Gem::Requirement.new Gem::Version.new('2') - assert_equal '= 2', r.to_s, 'Gem::Version' - end - - def test_equals2 - assert_equal @r1_2, @r1_2.dup - assert_equal @r1_2.dup, @r1_2 - - assert_not_equal @r1_3, @r1_2 - assert_not_equal @r1_2, @r1_3 - - assert_not_equal Object.new, @r1_2 - assert_not_equal @r1_2, Object.new - end - - def test_hash - assert_equal @r1_2.hash, @r1_2.dup.hash - assert_equal @r1_2.dup.hash, @r1_2.hash - - assert_not_equal @r1_2.hash, @r1_3.hash - assert_not_equal @r1_3.hash, @r1_2.hash - end - - # We may get some old gems that have requirements in old formats. - # We need to be able to handle those old requirements by normalizing - # them to the latest format. - def test_normalization - require 'yaml' - yamldep = %{--- !ruby/object:Gem::Requirement - nums: - - 1 - - 0 - - 4 - op: ">=" - version: ">= 1.0.4"} - dep = YAML.load(yamldep) - dep.normalize - assert_equal ">= 1.0.4", dep.to_s - end - - def test_parse - assert_equal ['=', Gem::Version.new(1)], @r1_2.parse(' 1') - - assert_equal ['=', Gem::Version.new(1)], @r1_2.parse('= 1') - assert_equal ['>', Gem::Version.new(1)], @r1_2.parse('> 1') - - assert_equal ['=', Gem::Version.new(0)], @r1_2.parse('=') - assert_equal ['>', Gem::Version.new(0)], @r1_2.parse('>') - - assert_equal ['=', Gem::Version.new(1)], @r1_2.parse("=\n1") - assert_equal ['=', Gem::Version.new(0)], @r1_2.parse("=\njunk") - - assert_equal ['=', Gem::Version.new(2)], @r1_2.parse(Gem::Version.new('2')) - end - - def test_parse_illformed - e = assert_raise ArgumentError do - @r1_2.parse(nil) - end - - assert_equal 'Illformed requirement [nil]', e.message - - e = assert_raise ArgumentError do - @r1_2.parse('') - end - - assert_equal 'Illformed requirement [""]', e.message - end - - def test_satisfied_by_eh_bang_equal - r1_2 = Gem::Requirement.new '!= 1.2' - v1_1 = Gem::Version.new '1.1' - v1_2 = Gem::Version.new '1.2' - v1_3 = Gem::Version.new '1.3' - - assert_equal true, r1_2.satisfied_by?(nil) - assert_equal true, r1_2.satisfied_by?(v1_1) - assert_equal false, r1_2.satisfied_by?(v1_2) - assert_equal true, r1_2.satisfied_by?(v1_3) - end - - def test_satisfied_by_eh_blank - r1_2 = Gem::Requirement.new '1.2' - v1_1 = Gem::Version.new '1.1' - v1_2 = Gem::Version.new '1.2' - v1_3 = Gem::Version.new '1.3' - - assert_equal false, r1_2.satisfied_by?(nil) - assert_equal false, r1_2.satisfied_by?(v1_1) - assert_equal true, r1_2.satisfied_by?(v1_2) - assert_equal false, r1_2.satisfied_by?(v1_3) - end - - def test_satisfied_by_eh_equal - r1_2 = @r1_2 - v1_1 = Gem::Version.new '1.1' - v1_2 = Gem::Version.new '1.2' - v1_3 = Gem::Version.new '1.3' - - assert_equal false, r1_2.satisfied_by?(nil) - assert_equal false, r1_2.satisfied_by?(v1_1) - assert_equal true, r1_2.satisfied_by?(v1_2) - assert_equal false, r1_2.satisfied_by?(v1_3) - end - - def test_satisfied_by_eh_gt - r1_2 = Gem::Requirement.new '> 1.2' - v1_1 = Gem::Version.new '1.1' - v1_2 = Gem::Version.new '1.2' - v1_3 = Gem::Version.new '1.3' - - assert_equal false, r1_2.satisfied_by?(v1_1) - assert_equal false, r1_2.satisfied_by?(v1_2) - assert_equal true, r1_2.satisfied_by?(v1_3) - - assert_raise NoMethodError do - assert_equal true, r1_2.satisfied_by?(nil) - end - end - - def test_satisfied_by_eh_gte - r1_2 = Gem::Requirement.new '>= 1.2' - v1_1 = Gem::Version.new '1.1' - v1_2 = Gem::Version.new '1.2' - v1_3 = Gem::Version.new '1.3' - - assert_equal false, r1_2.satisfied_by?(v1_1) - assert_equal true, r1_2.satisfied_by?(v1_2) - assert_equal true, r1_2.satisfied_by?(v1_3) - - assert_raise NoMethodError do - assert_equal true, r1_2.satisfied_by?(nil) - end - end - - def test_satisfied_by_eh_list - r = Gem::Requirement.create(['> 1.1', '< 1.3']) - v1_1 = Gem::Version.new '1.1' - v1_2 = Gem::Version.new '1.2' - v1_3 = Gem::Version.new '1.3' - - assert_equal false, r.satisfied_by?(v1_1) - assert_equal true, r.satisfied_by?(v1_2) - assert_equal false, r.satisfied_by?(v1_3) - - assert_raise NoMethodError do - assert_equal true, r.satisfied_by?(nil) - end - end - - def test_satisfied_by_eh_lt - r1_2 = Gem::Requirement.new '< 1.2' - v1_1 = Gem::Version.new '1.1' - v1_2 = Gem::Version.new '1.2' - v1_3 = Gem::Version.new '1.3' - - assert_equal true, r1_2.satisfied_by?(v1_1) - assert_equal false, r1_2.satisfied_by?(v1_2) - assert_equal false, r1_2.satisfied_by?(v1_3) - - assert_raise NoMethodError do - assert_equal true, r1_2.satisfied_by?(nil) - end - end - - def test_satisfied_by_eh_lte - r1_2 = Gem::Requirement.new '<= 1.2' - v1_1 = Gem::Version.new '1.1' - v1_2 = Gem::Version.new '1.2' - v1_3 = Gem::Version.new '1.3' - - assert_equal true, r1_2.satisfied_by?(v1_1) - assert_equal true, r1_2.satisfied_by?(v1_2) - assert_equal false, r1_2.satisfied_by?(v1_3) - - assert_raise NoMethodError do - assert_equal true, r1_2.satisfied_by?(nil) - end - end - - def test_satisfied_by_eh_tilde_gt - r1_2 = Gem::Requirement.new '~> 1.2' - v1_1 = Gem::Version.new '1.1' - v1_2 = Gem::Version.new '1.2' - v1_3 = Gem::Version.new '1.3' - - assert_equal false, r1_2.satisfied_by?(v1_1) - assert_equal true, r1_2.satisfied_by?(v1_2) - assert_equal true, r1_2.satisfied_by?(v1_3) - - assert_raise NoMethodError do - assert_equal true, r1_2.satisfied_by?(nil) - end - end - -end - diff --git a/trunk/test/rubygems/test_gem_server.rb b/trunk/test/rubygems/test_gem_server.rb deleted file mode 100644 index dcdc766f0f..0000000000 --- a/trunk/test/rubygems/test_gem_server.rb +++ /dev/null @@ -1,301 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/server' -require 'stringio' - -class Gem::Server - attr_accessor :source_index - attr_reader :server -end - -class TestGemServer < RubyGemTestCase - - def setup - super - - @a1 = quick_gem 'a', '1' - @a2 = quick_gem 'a', '2' - - @server = Gem::Server.new Gem.dir, process_based_port, false - @req = WEBrick::HTTPRequest.new :Logger => nil - @res = WEBrick::HTTPResponse.new :HTTPVersion => '1.0' - end - - def test_Marshal - data = StringIO.new "GET /Marshal.#{Gem.marshal_version} HTTP/1.0\r\n\r\n" - @req.parse data - - @server.Marshal @req, @res - - assert_equal 200, @res.status, @res.body - assert_match %r| \d\d:\d\d:\d\d |, @res['date'] - assert_equal 'application/octet-stream', @res['content-type'] - - si = Gem::SourceIndex.new - si.add_specs @a1, @a2 - - assert_equal si, Marshal.load(@res.body) - end - - def test_Marshal_Z - data = StringIO.new "GET /Marshal.#{Gem.marshal_version}.Z HTTP/1.0\r\n\r\n" - @req.parse data - - @server.Marshal @req, @res - - assert_equal 200, @res.status, @res.body - assert_match %r| \d\d:\d\d:\d\d |, @res['date'] - assert_equal 'application/x-deflate', @res['content-type'] - - si = Gem::SourceIndex.new - si.add_specs @a1, @a2 - - assert_equal si, Marshal.load(Gem.inflate(@res.body)) - end - - def test_latest_specs - data = StringIO.new "GET /latest_specs.#{Gem.marshal_version} HTTP/1.0\r\n\r\n" - @req.parse data - - @server.latest_specs @req, @res - - assert_equal 200, @res.status, @res.body - assert_match %r| \d\d:\d\d:\d\d |, @res['date'] - assert_equal 'application/octet-stream', @res['content-type'] - assert_equal [['a', Gem::Version.new(2), 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 - - @server.latest_specs @req, @res - - assert_equal 200, @res.status, @res.body - assert_match %r| \d\d:\d\d:\d\d |, @res['date'] - assert_equal 'application/x-gzip', @res['content-type'] - assert_equal [['a', Gem::Version.new(2), Gem::Platform::RUBY]], - Marshal.load(Gem.gunzip(@res.body)) - end - - def test_quick_a_1_gemspec_rz - data = StringIO.new "GET /quick/a-1.gemspec.rz HTTP/1.0\r\n\r\n" - @req.parse data - - @server.quick @req, @res - - assert_equal 200, @res.status, @res.body - assert @res['date'] - assert_equal 'application/x-deflate', @res['content-type'] - - spec = YAML.load Gem.inflate(@res.body) - assert_equal 'a', spec.name - assert_equal Gem::Version.new(1), spec.version - end - - def test_quick_a_1_mswin32_gemspec_rz - a1_p = quick_gem 'a', '1' do |s| s.platform = Gem::Platform.local end - - data = StringIO.new "GET /quick/a-1-#{Gem::Platform.local}.gemspec.rz HTTP/1.0\r\n\r\n" - @req.parse data - - @server.quick @req, @res - - assert_equal 200, @res.status, @res.body - assert @res['date'] - assert_equal 'application/x-deflate', @res['content-type'] - - spec = YAML.load Gem.inflate(@res.body) - assert_equal 'a', spec.name - assert_equal Gem::Version.new(1), spec.version - assert_equal Gem::Platform.local, spec.platform - end - - def test_quick_common_substrings - ab1 = quick_gem 'ab', '1' - - data = StringIO.new "GET /quick/a-1.gemspec.rz HTTP/1.0\r\n\r\n" - @req.parse data - - @server.quick @req, @res - - assert_equal 200, @res.status, @res.body - assert @res['date'] - assert_equal 'application/x-deflate', @res['content-type'] - - spec = YAML.load Gem.inflate(@res.body) - assert_equal 'a', spec.name - assert_equal Gem::Version.new(1), spec.version - end - - def test_quick_index - data = StringIO.new "GET /quick/index HTTP/1.0\r\n\r\n" - @req.parse data - - @server.quick @req, @res - - assert_equal 200, @res.status, @res.body - assert_match %r| \d\d:\d\d:\d\d |, @res['date'] - assert_equal 'text/plain', @res['content-type'] - assert_equal "a-1\na-2", @res.body - end - - def test_quick_index_rz - data = StringIO.new "GET /quick/index.rz HTTP/1.0\r\n\r\n" - @req.parse data - - @server.quick @req, @res - - assert_equal 200, @res.status, @res.body - assert_match %r| \d\d:\d\d:\d\d |, @res['date'] - assert_equal 'application/x-deflate', @res['content-type'] - assert_equal "a-1\na-2", Gem.inflate(@res.body) - end - - def test_quick_latest_index - data = StringIO.new "GET /quick/latest_index HTTP/1.0\r\n\r\n" - @req.parse data - - @server.quick @req, @res - - assert_equal 200, @res.status, @res.body - assert_match %r| \d\d:\d\d:\d\d |, @res['date'] - assert_equal 'text/plain', @res['content-type'] - assert_equal 'a-2', @res.body - end - - def test_quick_latest_index_rz - data = StringIO.new "GET /quick/latest_index.rz HTTP/1.0\r\n\r\n" - @req.parse data - - @server.quick @req, @res - - assert_equal 200, @res.status, @res.body - assert_match %r| \d\d:\d\d:\d\d |, @res['date'] - assert_equal 'application/x-deflate', @res['content-type'] - assert_equal 'a-2', Gem.inflate(@res.body) - end - - def test_quick_missing - data = StringIO.new "GET /quick/z-9.gemspec.rz HTTP/1.0\r\n\r\n" - @req.parse data - - @server.quick @req, @res - - assert_equal 404, @res.status, @res.body - assert_match %r| \d\d:\d\d:\d\d |, @res['date'] - assert_equal 'text/plain', @res['content-type'] - assert_equal 'No gems found matching "z" "9" nil', @res.body - assert_equal 404, @res.status - end - - def test_quick_marshal_a_1_gemspec_rz - data = StringIO.new "GET /quick/Marshal.#{Gem.marshal_version}/a-1.gemspec.rz HTTP/1.0\r\n\r\n" - @req.parse data - - @server.quick @req, @res - - assert_equal 200, @res.status, @res.body - assert @res['date'] - assert_equal 'application/x-deflate', @res['content-type'] - - spec = Marshal.load Gem.inflate(@res.body) - assert_equal 'a', spec.name - assert_equal Gem::Version.new(1), spec.version - end - - def test_quick_marshal_a_1_mswin32_gemspec_rz - a1_p = quick_gem 'a', '1' do |s| s.platform = Gem::Platform.local end - - data = StringIO.new "GET /quick/Marshal.#{Gem.marshal_version}/a-1-#{Gem::Platform.local}.gemspec.rz HTTP/1.0\r\n\r\n" - @req.parse data - - @server.quick @req, @res - - assert_equal 200, @res.status, @res.body - assert @res['date'] - assert_equal 'application/x-deflate', @res['content-type'] - - spec = Marshal.load Gem.inflate(@res.body) - assert_equal 'a', spec.name - assert_equal Gem::Version.new(1), spec.version - assert_equal Gem::Platform.local, spec.platform - end - - - def test_root - data = StringIO.new "GET / HTTP/1.0\r\n\r\n" - @req.parse data - - @server.root @req, @res - - assert_equal 200, @res.status, @res.body - assert_match %r| \d\d:\d\d:\d\d |, @res['date'] - assert_equal 'text/html', @res['content-type'] - end - - def test_specs - data = StringIO.new "GET /specs.#{Gem.marshal_version} HTTP/1.0\r\n\r\n" - @req.parse data - - @server.specs @req, @res - - assert_equal 200, @res.status, @res.body - assert_match %r| \d\d:\d\d:\d\d |, @res['date'] - assert_equal 'application/octet-stream', @res['content-type'] - - assert_equal [['a', Gem::Version.new(1), Gem::Platform::RUBY], - ['a', Gem::Version.new(2), 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 - - @server.specs @req, @res - - assert_equal 200, @res.status, @res.body - assert_match %r| \d\d:\d\d:\d\d |, @res['date'] - assert_equal 'application/x-gzip', @res['content-type'] - - assert_equal [['a', Gem::Version.new(1), Gem::Platform::RUBY], - ['a', Gem::Version.new(2), Gem::Platform::RUBY]], - Marshal.load(Gem.gunzip(@res.body)) - end - - def test_yaml - data = StringIO.new "GET /yaml.#{Gem.marshal_version} HTTP/1.0\r\n\r\n" - @req.parse data - - @server.yaml @req, @res - - assert_equal 200, @res.status, @res.body - assert_match %r| \d\d:\d\d:\d\d |, @res['date'] - assert_equal 'text/plain', @res['content-type'] - - si = Gem::SourceIndex.new - si.add_specs @a1, @a2 - - assert_equal si, YAML.load(@res.body) - end - - def test_yaml_Z - data = StringIO.new "GET /yaml.#{Gem.marshal_version}.Z HTTP/1.0\r\n\r\n" - @req.parse data - - @server.yaml @req, @res - - assert_equal 200, @res.status, @res.body - assert_match %r| \d\d:\d\d:\d\d |, @res['date'] - assert_equal 'application/x-deflate', @res['content-type'] - - si = Gem::SourceIndex.new - si.add_specs @a1, @a2 - - assert_equal si, YAML.load(Gem.inflate(@res.body)) - end - -end - diff --git a/trunk/test/rubygems/test_gem_source_index.rb b/trunk/test/rubygems/test_gem_source_index.rb deleted file mode 100644 index 263826759a..0000000000 --- a/trunk/test/rubygems/test_gem_source_index.rb +++ /dev/null @@ -1,834 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/source_index' -require 'rubygems/config_file' - -class Gem::SourceIndex - public :fetcher, :fetch_bulk_index, :fetch_quick_index, - :find_missing, :gems, :remove_extra, - :update_with_missing, :unzip -end - -class TestGemSourceIndex < RubyGemTestCase - - def setup - super - - util_setup_fake_fetcher - end - - def test_self_from_gems_in - spec_dir = File.join @gemhome, 'specifications' - - FileUtils.rm_r spec_dir - - FileUtils.mkdir_p spec_dir - - a1 = quick_gem 'a', '1' do |spec| spec.author = 'author 1' end - - spec_file = File.join spec_dir, "#{a1.full_name}.gemspec" - - File.open spec_file, 'w' do |fp| - fp.write a1.to_ruby - end - - si = Gem::SourceIndex.from_gems_in spec_dir - - assert_equal [spec_dir], si.spec_dirs - assert_equal [a1.full_name], si.gems.keys - end - - def test_self_load_specification - spec_dir = File.join @gemhome, 'specifications' - - FileUtils.rm_r spec_dir - - FileUtils.mkdir_p spec_dir - - a1 = quick_gem 'a', '1' do |spec| spec.author = 'author 1' end - - spec_file = File.join spec_dir, "#{a1.full_name}.gemspec" - - File.open spec_file, 'w' do |fp| - fp.write a1.to_ruby - end - - spec = Gem::SourceIndex.load_specification spec_file - - assert_equal a1.author, spec.author - end - - def test_self_load_specification_exception - spec_dir = File.join @gemhome, 'specifications' - - FileUtils.mkdir_p spec_dir - - spec_file = File.join spec_dir, 'a-1.gemspec' - - File.open spec_file, 'w' do |fp| - fp.write 'raise Exception, "epic fail"' - end - - use_ui @ui do - assert_equal nil, Gem::SourceIndex.load_specification(spec_file) - end - - assert_equal '', @ui.output - - expected = <<-EOF -WARNING: #<Exception: epic fail> -raise Exception, "epic fail" -WARNING: Invalid .gemspec format in '#{spec_file}' - EOF - - assert_equal expected, @ui.error - end - - def test_self_load_specification_interrupt - spec_dir = File.join @gemhome, 'specifications' - - FileUtils.mkdir_p spec_dir - - spec_file = File.join spec_dir, 'a-1.gemspec' - - File.open spec_file, 'w' do |fp| - fp.write 'raise Interrupt, "^C"' - end - - use_ui @ui do - assert_raise Interrupt do - Gem::SourceIndex.load_specification(spec_file) - end - end - - assert_equal '', @ui.output - assert_equal '', @ui.error - end - - def test_self_load_specification_syntax_error - spec_dir = File.join @gemhome, 'specifications' - - FileUtils.mkdir_p spec_dir - - spec_file = File.join spec_dir, 'a-1.gemspec' - - File.open spec_file, 'w' do |fp| - fp.write '1 +' - end - - use_ui @ui do - assert_equal nil, Gem::SourceIndex.load_specification(spec_file) - end - - assert_equal '', @ui.output - - assert_match(/syntax error/, @ui.error) - assert_match(/1 \+/, @ui.error) - end - - def test_self_load_specification_system_exit - spec_dir = File.join @gemhome, 'specifications' - - FileUtils.mkdir_p spec_dir - - spec_file = File.join spec_dir, 'a-1.gemspec' - - File.open spec_file, 'w' do |fp| - fp.write 'raise SystemExit, "bye-bye"' - end - - use_ui @ui do - assert_raise SystemExit do - Gem::SourceIndex.load_specification(spec_file) - end - end - - assert_equal '', @ui.output - assert_equal '', @ui.error - end - - def test_create_from_directory - # TODO - end - - def test_fetcher - assert_equal @fetcher, @source_index.fetcher - end - - def test_fetch_bulk_index_compressed - util_setup_bulk_fetch true - - use_ui @ui do - fetched_index = @source_index.fetch_bulk_index @uri - assert_equal [@a1.full_name, @a2.full_name, @a_evil9.full_name, - @c1_2.full_name].sort, - fetched_index.gems.map { |n,s| n }.sort - end - - paths = @fetcher.paths - - assert_equal "#{@gem_repo}Marshal.#{@marshal_version}.Z", paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_fetch_bulk_index_error - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}.Z"] = proc { raise SocketError } - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = proc { raise SocketError } - @fetcher.data["#{@gem_repo}yaml.Z"] = proc { raise SocketError } - @fetcher.data["#{@gem_repo}yaml"] = proc { raise SocketError } - - e = assert_raise Gem::RemoteSourceException do - use_ui @ui do - @source_index.fetch_bulk_index @uri - end - end - - paths = @fetcher.paths - - assert_equal "#{@gem_repo}Marshal.#{@marshal_version}.Z", paths.shift - assert_equal "#{@gem_repo}Marshal.#{@marshal_version}", paths.shift - assert_equal "#{@gem_repo}yaml.Z", paths.shift - assert_equal "#{@gem_repo}yaml", paths.shift - - assert paths.empty?, paths.join(', ') - - assert_equal 'Error fetching remote gem cache: SocketError', - e.message - end - - def test_fetch_bulk_index_fallback - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}.Z"] = - proc { raise SocketError } - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = - proc { raise SocketError } - @fetcher.data["#{@gem_repo}yaml.Z"] = proc { raise SocketError } - @fetcher.data["#{@gem_repo}yaml"] = @source_index.to_yaml - - use_ui @ui do - fetched_index = @source_index.fetch_bulk_index @uri - assert_equal [@a1.full_name, @a2.full_name, @a_evil9.full_name, - @c1_2.full_name].sort, - fetched_index.gems.map { |n,s| n }.sort - end - - paths = @fetcher.paths - - assert_equal "#{@gem_repo}Marshal.#{@marshal_version}.Z", paths.shift - assert_equal "#{@gem_repo}Marshal.#{@marshal_version}", paths.shift - assert_equal "#{@gem_repo}yaml.Z", paths.shift - assert_equal "#{@gem_repo}yaml", paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_fetch_bulk_index_marshal_mismatch - marshal = @source_index.dump - marshal[0] = (Marshal::MAJOR_VERSION - 1).chr - - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = marshal - @fetcher.data["#{@gem_repo}yaml"] = @source_index.to_yaml - - use_ui @ui do - fetched_index = @source_index.fetch_bulk_index @uri - assert_equal [@a1.full_name, @a2.full_name, @a_evil9.full_name, - @c1_2.full_name].sort, - fetched_index.gems.map { |n,s| n }.sort - end - - paths = @fetcher.paths - - assert_equal "#{@gem_repo}Marshal.#{@marshal_version}.Z", paths.shift - assert_equal "#{@gem_repo}Marshal.#{@marshal_version}", paths.shift - assert_equal "#{@gem_repo}yaml.Z", paths.shift - assert_equal "#{@gem_repo}yaml", paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_fetch_bulk_index_uncompressed - util_setup_bulk_fetch false - use_ui @ui do - fetched_index = @source_index.fetch_bulk_index @uri - assert_equal [@a1.full_name, @a2.full_name, @a_evil9.full_name, - @c1_2.full_name].sort, - fetched_index.gems.map { |n,s| n }.sort - end - - paths = @fetcher.paths - - assert_equal "#{@gem_repo}Marshal.#{@marshal_version}.Z", paths.shift - assert_equal "#{@gem_repo}Marshal.#{@marshal_version}", paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_fetch_quick_index - index = util_zip @gem_names - latest_index = util_zip [@a2.full_name, @b2.full_name].join("\n") - - @fetcher.data["#{@gem_repo}quick/index.rz"] = index - @fetcher.data["#{@gem_repo}quick/latest_index.rz"] = latest_index - - quick_index = @source_index.fetch_quick_index @uri, false - assert_equal [@a2.full_name, @b2.full_name].sort, - quick_index.sort - - paths = @fetcher.paths - - assert_equal "#{@gem_repo}quick/latest_index.rz", paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_fetch_quick_index_all - index = util_zip @gem_names - latest_index = util_zip [@a2.full_name, @b2.full_name].join("\n") - - @fetcher.data["#{@gem_repo}quick/index.rz"] = index - @fetcher.data["#{@gem_repo}quick/latest_index.rz"] = latest_index - - quick_index = @source_index.fetch_quick_index @uri, true - assert_equal [@a1.full_name, @a2.full_name, @b2.full_name].sort, - quick_index.sort - - paths = @fetcher.paths - - assert_equal "#{@gem_repo}quick/index.rz", paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_fetch_quick_index_error - @fetcher.data["#{@gem_repo}quick/index.rz"] = - proc { raise Exception } - - e = assert_raise Gem::OperationNotSupportedError do - @source_index.fetch_quick_index @uri, true - end - - assert_equal 'No quick index found: Exception', e.message - - paths = @fetcher.paths - - assert_equal "#{@gem_repo}quick/index.rz", paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_fetch_quick_index_fallback - index = util_zip @gem_names - - @fetcher.data["#{@gem_repo}quick/index.rz"] = index - - quick_index = @source_index.fetch_quick_index @uri, false - assert_equal @gem_names.split, quick_index.sort - - paths = @fetcher.paths - - assert_equal "#{@gem_repo}quick/latest_index.rz", paths.shift - assert_equal "#{@gem_repo}quick/index.rz", paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_fetch_quick_index_subdir - latest_index = util_zip [@a2.full_name, @b2.full_name].join("\n") - repo = URI.parse "#{@gem_repo}~nobody/mirror/" - - @fetcher.data["#{repo}quick/latest_index.rz"] = latest_index - - quick_index = @source_index.fetch_quick_index repo, false - assert_equal [@a2.full_name, @b2.full_name].sort, - quick_index.sort - - paths = @fetcher.paths - - assert_equal "#{repo}quick/latest_index.rz", paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_fetch_single_spec - a1_spec_url = "#{@gem_repo}quick/Marshal.#{Gem.marshal_version}/#{@a1.full_name}.gemspec.rz" - @fetcher.data[a1_spec_url] = util_zip Marshal.dump(@a1) - - spec = @source_index.send :fetch_single_spec, URI.parse(@gem_repo), - @a1.full_name - - assert_equal @a1.full_name, spec.full_name - - paths = @fetcher.paths - - assert_equal a1_spec_url, paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_fetch_single_spec_subdir - repo = URI.parse "#{@gem_repo}~nobody/mirror/" - - a1_spec_url = "#{repo}quick/Marshal.#{Gem.marshal_version}/#{@a1.full_name}.gemspec.rz" - @fetcher.data[a1_spec_url] = util_zip Marshal.dump(@a1) - - spec = @source_index.send :fetch_single_spec, repo, @a1.full_name - - assert_equal @a1.full_name, spec.full_name - - paths = @fetcher.paths - - assert_equal a1_spec_url, paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_fetch_single_spec_yaml - a1_spec_url = "#{@gem_repo}quick/#{@a1.full_name}.gemspec.rz" - @fetcher.data[a1_spec_url] = util_zip @a1.to_yaml - - repo = URI.parse @gem_repo - - spec = @source_index.send :fetch_single_spec, repo, @a1.full_name - - assert_equal @a1.full_name, spec.full_name - - paths = @fetcher.paths - - assert_equal "#{@gem_repo}quick/Marshal.#{Gem.marshal_version}/#{@a1.full_name}.gemspec.rz", paths.shift - assert_equal a1_spec_url, paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_fetch_single_spec_yaml_subdir - repo = URI.parse "#{@gem_repo}~nobody/mirror/" - - a1_spec_url = "#{repo}quick/#{@a1.full_name}.gemspec.rz" - @fetcher.data[a1_spec_url] = util_zip @a1.to_yaml - - spec = @source_index.send :fetch_single_spec, repo, @a1.full_name - - assert_equal @a1.full_name, spec.full_name - - paths = @fetcher.paths - - assert_equal "#{repo}quick/Marshal.#{Gem.marshal_version}/#{@a1.full_name}.gemspec.rz", paths.shift - assert_equal a1_spec_url, paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_find_missing - missing = @source_index.find_missing [@b2.full_name] - assert_equal [@b2.full_name], missing - end - - def test_find_missing_none_missing - missing = @source_index.find_missing [ - @a1.full_name, @a2.full_name, @c1_2.full_name - ] - - assert_equal [], missing - end - - def test_latest_specs - p1_ruby = quick_gem 'p', '1' - p1_platform = quick_gem 'p', '1' do |spec| - spec.platform = Gem::Platform::CURRENT - end - - a1_platform = quick_gem @a1.name, (@a1.version) do |s| - s.platform = Gem::Platform.new 'x86-my_platform1' - end - - a2_platform = quick_gem @a2.name, (@a2.version) do |s| - s.platform = Gem::Platform.new 'x86-my_platform1' - end - - a2_platform_other = quick_gem @a2.name, (@a2.version) do |s| - s.platform = Gem::Platform.new 'x86-other_platform1' - end - - a3_platform_other = quick_gem @a2.name, (@a2.version.bump) do |s| - s.platform = Gem::Platform.new 'x86-other_platform1' - end - - @source_index.add_spec p1_ruby - @source_index.add_spec p1_platform - @source_index.add_spec a1_platform - @source_index.add_spec a2_platform - @source_index.add_spec a2_platform_other - @source_index.add_spec a3_platform_other - - expected = [ - @a2.full_name, - a2_platform.full_name, - a3_platform_other.full_name, - @c1_2.full_name, - @a_evil9.full_name, - p1_ruby.full_name, - p1_platform.full_name, - ].sort - - latest_specs = @source_index.latest_specs.map { |s| s.full_name }.sort - - assert_equal expected, latest_specs - end - - def test_load_gems_in - spec_dir1 = File.join @gemhome, 'specifications' - spec_dir2 = File.join @tempdir, 'gemhome2', 'specifications' - - FileUtils.rm_r spec_dir1 - - FileUtils.mkdir_p spec_dir1 - FileUtils.mkdir_p spec_dir2 - - a1 = quick_gem 'a', '1' do |spec| spec.author = 'author 1' end - a2 = quick_gem 'a', '1' do |spec| spec.author = 'author 2' end - - File.open File.join(spec_dir1, "#{a1.full_name}.gemspec"), 'w' do |fp| - fp.write a1.to_ruby - end - - File.open File.join(spec_dir2, "#{a2.full_name}.gemspec"), 'w' do |fp| - fp.write a2.to_ruby - end - - @source_index.load_gems_in spec_dir1, spec_dir2 - - assert_equal a1.author, @source_index.specification(a1.full_name).author - end - - def test_outdated - util_setup_spec_fetcher - - assert_equal [], @source_index.outdated - - updated = quick_gem @a2.name, (@a2.version.bump) - util_setup_spec_fetcher updated - - assert_equal [updated.name], @source_index.outdated - - updated_platform = quick_gem @a2.name, (updated.version.bump) do |s| - s.platform = Gem::Platform.new 'x86-other_platform1' - end - - util_setup_spec_fetcher updated, updated_platform - - assert_equal [updated_platform.name], @source_index.outdated - end - - def test_refresh_bang - a1_spec = File.join @gemhome, "specifications", "#{@a1.full_name}.gemspec" - - FileUtils.mv a1_spec, @tempdir - - source_index = Gem::SourceIndex.from_installed_gems - - assert !source_index.gems.include?(@a1.full_name) - - FileUtils.mv File.join(@tempdir, "#{@a1.full_name}.gemspec"), a1_spec - - source_index.refresh! - - assert source_index.gems.include?(@a1.full_name) - end - - def test_refresh_bang_not_from_dir - source_index = Gem::SourceIndex.new - - e = assert_raise RuntimeError do - source_index.refresh! - end - - assert_equal 'source index not created from disk', e.message - end - - def test_remove_extra - @source_index.add_spec @a1 - @source_index.add_spec @a2 - @source_index.add_spec @pl1 - - @source_index.remove_extra [@a1.full_name, @pl1.full_name] - - assert_equal [@a1.full_name], - @source_index.gems.map { |n,s| n }.sort - end - - def test_remove_extra_no_changes - gems = [@a1.full_name, @a2.full_name] - @source_index.add_spec @a1 - @source_index.add_spec @a2 - - @source_index.remove_extra gems - - assert_equal gems, @source_index.gems.map { |n,s| n }.sort - end - - def test_search - assert_equal [@a1, @a2, @a_evil9], @source_index.search('a') - assert_equal [@a2], @source_index.search('a', '= 2') - - assert_equal [], @source_index.search('bogusstring') - assert_equal [], @source_index.search('a', '= 3') - - source_index = Gem::SourceIndex.new - source_index.add_spec @a1 - source_index.add_spec @a2 - - assert_equal [@a1], source_index.search(@a1.name, '= 1') - - r1 = Gem::Requirement.create '= 1' - assert_equal [@a1], source_index.search(@a1.name, r1) - - dep = Gem::Dependency.new @a1.name, r1 - assert_equal [@a1], source_index.search(dep) - end - - def test_search_empty_cache - empty_source_index = Gem::SourceIndex.new({}) - assert_equal [], empty_source_index.search("foo") - end - - def test_search_platform - util_set_arch 'x86-my_platform1' - - a1 = quick_gem 'a', '1' - a1_mine = quick_gem 'a', '1' do |s| - s.platform = Gem::Platform.new 'x86-my_platform1' - end - a1_other = quick_gem 'a', '1' do |s| - s.platform = Gem::Platform.new 'x86-other_platform1' - end - - si = Gem::SourceIndex.new(a1.full_name => a1, a1_mine.full_name => a1_mine, - a1_other.full_name => a1_other) - - dep = Gem::Dependency.new 'a', Gem::Requirement.new('1') - - gems = si.search dep, true - - assert_equal [a1, a1_mine], gems.sort - end - - def test_signature - sig = @source_index.gem_signature('foo-1.2.3') - assert_equal 64, sig.length - assert_match(/^[a-f0-9]{64}$/, sig) - end - - def test_specification - assert_equal @a1, @source_index.specification(@a1.full_name) - - assert_nil @source_index.specification("foo-1.2.4") - end - - def test_index_signature - sig = @source_index.index_signature - assert_match(/^[a-f0-9]{64}$/, sig) - end - - def test_unzip - input = "x\234+\316\317MU(I\255(\001\000\021\350\003\232" - assert_equal 'some text', @source_index.unzip(input) - end - - def test_update_bulk - util_setup_bulk_fetch true - - @source_index.gems.replace({}) - assert_equal [], @source_index.gems.keys.sort - - use_ui @ui do - @source_index.update @uri, true - - assert_equal [@a1.full_name, @a2.full_name, @a_evil9.full_name, - @c1_2.full_name], - @source_index.gems.keys.sort - end - - paths = @fetcher.paths - - assert_equal "#{@gem_repo}quick/index.rz", paths.shift - assert_equal "#{@gem_repo}Marshal.#{@marshal_version}.Z", paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_update_incremental - old_gem_conf = Gem.configuration - Gem.configuration = Gem::ConfigFile.new([]) - - latest_names = [@a2, @a_evil9, @b2, @c1_2].map { |s| s.full_name } - latest_index = util_zip latest_names.join("\n") - @fetcher.data["#{@gem_repo}quick/latest_index.rz"] = latest_index - - marshal_uri = File.join @gem_repo, "quick", "Marshal.#{@marshal_version}", - "#{@b2.full_name}.gemspec.rz" - @fetcher.data[marshal_uri] = util_zip Marshal.dump(@b2) - - use_ui @ui do - @source_index.update @uri, false - - assert_equal latest_names, @source_index.gems.keys.sort - end - - paths = @fetcher.paths - assert_equal "#{@gem_repo}quick/latest_index.rz", paths.shift - assert_equal marshal_uri, paths.shift - - assert paths.empty?, paths.join(', ') - ensure - Gem.configuration = old_gem_conf - end - - def test_update_incremental_all - old_gem_conf = Gem.configuration - Gem.configuration = Gem::ConfigFile.new([]) - - quick_index = util_zip @all_gem_names.join("\n") - @fetcher.data["#{@gem_repo}quick/index.rz"] = quick_index - - marshal_uri = File.join @gem_repo, "quick", "Marshal.#{@marshal_version}", - "#{@b2.full_name}.gemspec.rz" - @fetcher.data[marshal_uri] = util_zip Marshal.dump(@b2) - - use_ui @ui do - @source_index.update @uri, true - - assert_equal @all_gem_names, @source_index.gems.keys.sort - end - - paths = @fetcher.paths - assert_equal "#{@gem_repo}quick/index.rz", paths.shift - assert_equal marshal_uri, paths.shift - - assert paths.empty?, paths.join(', ') - ensure - Gem.configuration = old_gem_conf - end - - def test_update_incremental_fallback - old_gem_conf = Gem.configuration - Gem.configuration = Gem::ConfigFile.new([]) - - quick_index = util_zip @all_gem_names.join("\n") - @fetcher.data["#{@gem_repo}quick/index.rz"] = quick_index - - marshal_uri = File.join @gem_repo, "quick", "Marshal.#{@marshal_version}", - "#{@b2.full_name}.gemspec.rz" - - yaml_uri = "#{@gem_repo}quick/#{@b2.full_name}.gemspec.rz" - @fetcher.data[yaml_uri] = util_zip @b2.to_yaml - - use_ui @ui do - @source_index.update @uri, true - - assert_equal @all_gem_names, @source_index.gems.keys.sort - end - - paths = @fetcher.paths - assert_equal "#{@gem_repo}quick/index.rz", paths.shift - assert_equal marshal_uri, paths.shift - assert_equal yaml_uri, paths.shift - - assert paths.empty?, paths.join(', ') - ensure - Gem.configuration = old_gem_conf - end - - def test_update_incremental_marshal_mismatch - old_gem_conf = Gem.configuration - Gem.configuration = Gem::ConfigFile.new([]) - - quick_index = util_zip @all_gem_names.join("\n") - @fetcher.data["#{@gem_repo}quick/index.rz"] = quick_index - - marshal_uri = File.join @gem_repo, "quick", "Marshal.#{@marshal_version}", - "#{@b2.full_name}.gemspec.rz" - marshal_data = Marshal.dump(@b2) - marshal_data[0] = (Marshal::MAJOR_VERSION - 1).chr - @fetcher.data[marshal_uri] = util_zip marshal_data - - yaml_uri = "#{@gem_repo}quick/#{@b2.full_name}.gemspec.rz" - @fetcher.data[yaml_uri] = util_zip @b2.to_yaml - - use_ui @ui do - @source_index.update @uri, true - - assert_equal @all_gem_names, @source_index.gems.keys.sort - end - - paths = @fetcher.paths - assert_equal "#{@gem_repo}quick/index.rz", paths.shift - assert_equal marshal_uri, paths.shift - assert_equal yaml_uri, paths.shift - - assert paths.empty?, paths.join(', ') - ensure - Gem.configuration = old_gem_conf - end - - def test_update_subdir - @gem_repo = @gem_repo + 'subdir/' - - util_setup_bulk_fetch true - - @source_index.gems.replace({}) - assert_equal [], @source_index.gems.keys.sort - - uri = @uri.to_s + 'subdir/' - - use_ui @ui do - @source_index.update uri, true - - assert_equal [@a1.full_name, @a2.full_name, @a_evil9.full_name, - @c1_2.full_name], - @source_index.gems.keys.sort - end - - paths = @fetcher.paths - - assert_equal "#{@gem_repo}quick/index.rz", paths.shift - assert_equal "#{@gem_repo}Marshal.#{@marshal_version}.Z", paths.shift - - assert paths.empty?, paths.join(', ') - end - - def test_update_with_missing - marshal_uri = File.join @gem_repo, "quick", "Marshal.#{@marshal_version}", - "#{@c1_2.full_name}.gemspec.rz" - dumped = Marshal.dump @c1_2 - @fetcher.data[marshal_uri] = util_zip(dumped) - - use_ui @ui do - @source_index.update_with_missing @uri, [@c1_2.full_name] - end - - spec = @source_index.specification(@c1_2.full_name) - # We don't care about the equality of undumped attributes - @c1_2.files = spec.files - @c1_2.loaded_from = spec.loaded_from - - assert_equal @c1_2, spec - end - - def util_setup_bulk_fetch(compressed) - source_index = @source_index.dump - - if compressed then - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}.Z"] = util_zip source_index - else - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = source_index - end - end - -end - diff --git a/trunk/test/rubygems/test_gem_source_info_cache.rb b/trunk/test/rubygems/test_gem_source_info_cache.rb deleted file mode 100644 index 86866a8012..0000000000 --- a/trunk/test/rubygems/test_gem_source_info_cache.rb +++ /dev/null @@ -1,448 +0,0 @@ -#!/usr/bin/env ruby -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/source_info_cache' - -class Gem::SourceIndex - public :gems -end - -class TestGemSourceInfoCache < RubyGemTestCase - - def setup - @original_sources = Gem.sources - - super - - util_setup_fake_fetcher - - @sic = Gem::SourceInfoCache.new - @sic.instance_variable_set :@fetcher, @fetcher - - @si_new = Gem::SourceIndex.new - @sice_new = Gem::SourceInfoCacheEntry.new @si_new, 0 - - prep_cache_files @sic - - @sic.reset_cache_data - end - - def teardown - super - Gem.sources.replace @original_sources - Gem::SourceInfoCache.instance_variable_set :@cache, nil - end - - def test_self_cache_refreshes - Gem.configuration.update_sources = true #true by default - si = Gem::SourceIndex.new - si.add_spec @a1 - - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = si.dump - - Gem.sources.replace %W[#{@gem_repo}] - - use_ui @ui do - assert_not_nil Gem::SourceInfoCache.cache - assert_kind_of Gem::SourceInfoCache, Gem::SourceInfoCache.cache - assert_equal Gem::SourceInfoCache.cache.object_id, - Gem::SourceInfoCache.cache.object_id - end - - assert_match %r|Bulk updating|, @ui.output - end - - def test_self_cache_skips_refresh_based_on_configuration - Gem.configuration.update_sources = false - si = Gem::SourceIndex.new - si.add_spec @a1 - - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = si.dump - - Gem.sources.replace %w[#{@gem_repo}] - - use_ui @ui do - assert_not_nil Gem::SourceInfoCache.cache - assert_kind_of Gem::SourceInfoCache, Gem::SourceInfoCache.cache - assert_equal Gem::SourceInfoCache.cache.object_id, - Gem::SourceInfoCache.cache.object_id - assert_no_match %r|Bulk updating|, @ui.output - end - end - - def test_self_cache_data - si = Gem::SourceIndex.new - si.add_spec @a1 - - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = si.dump - - Gem::SourceInfoCache.instance_variable_set :@cache, nil - sice = Gem::SourceInfoCacheEntry.new si, 0 - - use_ui @ui do - gems = Gem::SourceInfoCache.cache_data[@gem_repo].source_index.gems - gem_names = gems.map { |_, spec| spec.full_name } - - assert_equal si.gems.map { |_,spec| spec.full_name }, gem_names - end - end - - def test_cache_data - assert_equal [[@gem_repo, @usr_sice]], @sic.cache_data.to_a.sort - end - - def test_cache_data_dirty - def @sic.dirty() @dirty; end - assert_equal false, @sic.dirty, 'clean on init' - @sic.cache_data - assert_equal false, @sic.dirty, 'clean on fetch' - @sic.update - @sic.cache_data - assert_equal true, @sic.dirty, 'still dirty' - end - - def test_cache_data_irreparable - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = @source_index.dump - - data = { @gem_repo => { 'totally' => 'borked' } } - - cache_files = [ - @sic.system_cache_file, - @sic.latest_system_cache_file, - @sic.user_cache_file, - @sic.latest_user_cache_file - ] - - cache_files.each do |fn| - FileUtils.mkdir_p File.dirname(fn) - open(fn, "wb") { |f| f.write Marshal.dump(data) } - end - - @sic.instance_eval { @cache_data = nil } - - fetched = use_ui @ui do @sic.cache_data end - - fetched_si = fetched["#{@gem_repo}"].source_index - - assert_equal @source_index.index_signature, fetched_si.index_signature - end - - def test_cache_data_none_readable - FileUtils.chmod 0222, @sic.system_cache_file - FileUtils.chmod 0222, @sic.latest_system_cache_file - FileUtils.chmod 0222, @sic.user_cache_file - FileUtils.chmod 0222, @sic.latest_user_cache_file - return if (File.stat(@sic.system_cache_file).mode & 0222) != 0222 - return if (File.stat(@sic.user_cache_file).mode & 0222) != 0222 - # HACK for systems that don't support chmod - assert_equal({}, @sic.cache_data) - end - - def test_cache_data_none_writable - FileUtils.chmod 0444, @sic.system_cache_file - FileUtils.chmod 0444, @sic.user_cache_file - e = assert_raise RuntimeError do - @sic.cache_data - end - assert_equal 'unable to locate a writable cache file', e.message - end - - def test_cache_data_nonexistent - FileUtils.rm @sic.system_cache_file - FileUtils.rm @sic.latest_system_cache_file - FileUtils.rm @sic.user_cache_file - FileUtils.rm @sic.latest_user_cache_file - - # TODO test verbose output - assert_equal [], @sic.cache_data.to_a.sort - end - - def test_cache_data_repair - data = { - @gem_repo => { - 'cache' => Gem::SourceIndex.new, - 'size' => 0, - } - } - [@sic.system_cache_file, @sic.user_cache_file].each do |fn| - FileUtils.mkdir_p File.dirname(fn) - open(fn, "wb") { |f| f.write Marshal.dump(data) } - end - - @sic.instance_eval { @cache_data = nil } - - expected = { - @gem_repo => - Gem::SourceInfoCacheEntry.new(Gem::SourceIndex.new, 0) - } - assert_equal expected, @sic.cache_data - end - - def test_cache_data_user_fallback - FileUtils.chmod 0444, @sic.system_cache_file - - assert_equal [[@gem_repo, @usr_sice]], @sic.cache_data.to_a.sort - end - - def test_cache_file - assert_equal @gemcache, @sic.cache_file - end - - def test_cache_file_user_fallback - FileUtils.chmod 0444, @sic.system_cache_file - assert_equal @usrcache, @sic.cache_file - end - - def test_cache_file_none_writable - FileUtils.chmod 0444, @sic.system_cache_file - FileUtils.chmod 0444, @sic.user_cache_file - e = assert_raise RuntimeError do - @sic.cache_file - end - assert_equal 'unable to locate a writable cache file', e.message - end - - def test_flush - @sic.cache_data[@gem_repo] = @sice_new - @sic.update - @sic.flush - - assert_equal [[@gem_repo, @sice_new]], - read_cache(@sic.system_cache_file).to_a.sort - end - - def test_latest_cache_data - util_make_gems - - sice = Gem::SourceInfoCacheEntry.new @source_index, 0 - - @sic.set_cache_data @gem_repo => sice - latest = @sic.latest_cache_data - gems = latest[@gem_repo].source_index.search('a').map { |s| s.full_name } - - assert_equal %w[a-2 a_evil-9], gems - end - - def test_latest_cache_file - latest_cache_file = File.join File.dirname(@gemcache), - "latest_#{File.basename @gemcache}" - assert_equal latest_cache_file, @sic.latest_cache_file - end - - def test_latest_system_cache_file - assert_equal File.join(Gem.dir, "latest_source_cache"), - @sic.latest_system_cache_file - end - - def test_latest_user_cache_file - assert_equal @latest_usrcache, @sic.latest_user_cache_file - end - - def test_read_system_cache - assert_equal [[@gem_repo, @sys_sice]], @sic.cache_data.to_a.sort - end - - def test_read_user_cache - FileUtils.chmod 0444, @sic.user_cache_file - FileUtils.chmod 0444, @sic.latest_user_cache_file - - @si = Gem::SourceIndex.new - @si.add_specs @a1, @a2 - - @sice = Gem::SourceInfoCacheEntry.new @si, 0 - - @sic.set_cache_data({ @gem_repo => @sice }) - @sic.update - @sic.write_cache - @sic.reset_cache_data - - user_cache_data = @sic.cache_data.to_a.sort - - assert_equal 1, user_cache_data.length - user_cache_data = user_cache_data.first - - assert_equal @gem_repo, user_cache_data.first - - gems = user_cache_data.last.source_index.map { |_,spec| spec.full_name } - assert_equal [@a2.full_name], gems - end - - def test_search - si = Gem::SourceIndex.new - si.add_spec @a1 - cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) } - @sic.instance_variable_set :@cache_data, cache_data - - assert_equal [@a1], @sic.search(//) - end - - def test_search_all - util_make_gems - - sice = Gem::SourceInfoCacheEntry.new @source_index, 0 - - @sic.set_cache_data @gem_repo => sice - @sic.update - @sic.instance_variable_set :@only_latest, false - @sic.write_cache - @sic.reset_cache_data - - gem_names = @sic.search(//, false, true).map { |spec| spec.full_name } - - assert_equal %w[a-1 a-2 a_evil-9 c-1.2], gem_names - end - - def test_search_dependency - si = Gem::SourceIndex.new - si.add_spec @a1 - cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) } - @sic.instance_variable_set :@cache_data, cache_data - - dep = Gem::Dependency.new @a1.name, @a1.version - - assert_equal [@a1], @sic.search(dep) - end - - def test_search_no_matches - si = Gem::SourceIndex.new - si.add_spec @a1 - cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) } - @sic.instance_variable_set :@cache_data, cache_data - - assert_equal [], @sic.search(/nonexistent/) - end - - def test_search_no_matches_in_source - si = Gem::SourceIndex.new - si.add_spec @a1 - cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) } - @sic.instance_variable_set :@cache_data, cache_data - Gem.sources.replace %w[more-gems.example.com] - - assert_equal [], @sic.search(/nonexistent/) - end - - def test_search_with_source - si = Gem::SourceIndex.new - si.add_spec @a1 - cache_data = { @gem_repo => Gem::SourceInfoCacheEntry.new(si, nil) } - @sic.instance_variable_set :@cache_data, cache_data - - assert_equal [[@a1, @gem_repo]], - @sic.search_with_source(//) - end - - def test_system_cache_file - assert_equal File.join(Gem.dir, "source_cache"), @sic.system_cache_file - end - - def test_user_cache_file - assert_equal @usrcache, @sic.user_cache_file - end - - def test_write_cache - @sic.cache_data[@gem_repo] = @sice_new - @sic.write_cache - - assert_equal [[@gem_repo, @sice_new]], - read_cache(@sic.system_cache_file).to_a.sort - assert_equal [[@gem_repo, @usr_sice]], - read_cache(@sic.user_cache_file).to_a.sort - end - - def test_write_cache_user - FileUtils.chmod 0444, @sic.system_cache_file - @sic.set_cache_data({@gem_repo => @sice_new}) - @sic.update - @sic.write_cache - @sic.instance_variable_set :@only_latest, false - - assert File.exist?(@sic.user_cache_file), 'user_cache_file' - assert File.exist?(@sic.latest_user_cache_file), - 'latest_user_cache_file exists' - - assert_equal [[@gem_repo, @sys_sice]], - read_cache(@sic.system_cache_file).to_a.sort - assert_equal [[@gem_repo, @sice_new]], - read_cache(@sic.user_cache_file).to_a.sort - end - - def test_write_cache_user_from_scratch - FileUtils.rm_rf @sic.user_cache_file - FileUtils.rm_rf @sic.latest_user_cache_file - - FileUtils.chmod 0444, @sic.system_cache_file - FileUtils.chmod 0444, @sic.latest_system_cache_file - - @si = Gem::SourceIndex.new - @si.add_specs @a1, @a2 - - @sice = Gem::SourceInfoCacheEntry.new @si, 0 - - @sic.set_cache_data({ @gem_repo => @sice }) - @sic.update - - @sic.write_cache - - assert File.exist?(@sic.user_cache_file), 'system_cache_file' - assert File.exist?(@sic.latest_user_cache_file), - 'latest_system_cache_file' - - user_cache_data = read_cache(@sic.user_cache_file).to_a.sort - assert_equal 1, user_cache_data.length, 'user_cache_data length' - user_cache_data = user_cache_data.first - - assert_equal @gem_repo, user_cache_data.first - - gems = user_cache_data.last.source_index.map { |_,spec| spec.full_name } - assert_equal [@a1.full_name, @a2.full_name], gems.sort - - user_cache_data = read_cache(@sic.latest_user_cache_file).to_a.sort - assert_equal 1, user_cache_data.length - user_cache_data = user_cache_data.first - - assert_equal @gem_repo, user_cache_data.first - - gems = user_cache_data.last.source_index.map { |_,spec| spec.full_name } - assert_equal [@a2.full_name], gems - end - - def test_write_cache_user_no_directory - FileUtils.rm_rf File.dirname(@sic.user_cache_file) - FileUtils.chmod 0444, @sic.system_cache_file - @sic.set_cache_data({ @gem_repo => @sice_new }) - @sic.update - @sic.write_cache - - assert_equal [[@gem_repo, @sys_sice]], - read_cache(@sic.system_cache_file).to_a.sort - assert_equal [[@gem_repo, @sys_sice]], - read_cache(@sic.user_cache_file).to_a.sort - assert_equal [[@gem_repo, @sice_new]], - read_cache(@sic.latest_user_cache_file).to_a.sort - end - - def test_write_cache_user_only_latest - FileUtils.chmod 0444, @sic.system_cache_file - @sic.set_cache_data({@gem_repo => @sice_new}) - @sic.update - @sic.write_cache - - assert File.exist?(@sic.user_cache_file), 'user_cache_file' - assert File.exist?(@sic.latest_user_cache_file), - 'latest_user_cache_file exists' - - assert_equal [[@gem_repo, @sys_sice]], - read_cache(@sic.system_cache_file).to_a.sort - assert_equal [[@gem_repo, @sice_new]], - read_cache(@sic.user_cache_file).to_a.sort - end - -end - diff --git a/trunk/test/rubygems/test_gem_source_info_cache_entry.rb b/trunk/test/rubygems/test_gem_source_info_cache_entry.rb deleted file mode 100644 index 6986c9cd7f..0000000000 --- a/trunk/test/rubygems/test_gem_source_info_cache_entry.rb +++ /dev/null @@ -1,79 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/source_info_cache_entry' - -class TestGemSourceInfoCacheEntry < RubyGemTestCase - - def setup - super - - util_setup_fake_fetcher - - @si = Gem::SourceIndex.new - @si.add_spec @a1 - @sic_e = Gem::SourceInfoCacheEntry.new @si, @si.dump.size - end - - def test_refresh - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}.Z"] = - proc { raise } - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = @si.dump - - use_ui @ui do - @sic_e.refresh @gem_repo, true - end - end - - def test_refresh_all - @si.add_spec @a2 - - a1_name = @a1.full_name - a2_name = @a2.full_name - - @fetcher.data["#{@gem_repo}quick/index.rz"] = - util_zip [a1_name, a2_name].join("\n") - @fetcher.data["#{@gem_repo}quick/latest_index.rz"] = util_zip a2_name - @fetcher.data["#{@gem_repo}quick/Marshal.#{Gem.marshal_version}/#{a1_name}.gemspec.rz"] = util_zip Marshal.dump(@a1) - @fetcher.data["#{@gem_repo}quick/Marshal.#{Gem.marshal_version}/#{a2_name}.gemspec.rz"] = util_zip Marshal.dump(@a2) - @fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] = - Marshal.dump @si - - sic_e = Gem::SourceInfoCacheEntry.new Gem::SourceIndex.new, 0 - - assert_equal [], sic_e.source_index.map { |n,| n } - - use_ui @ui do - assert sic_e.refresh(@gem_repo, false) - end - - assert_equal [a2_name], sic_e.source_index.map { |n,| n }.sort - - use_ui @ui do - sic_e.refresh @gem_repo, true - end - - assert_equal [a1_name, a2_name], sic_e.source_index.map { |n,| n }.sort - end - - def test_refresh_bad_uri - assert_raise URI::BadURIError do - @sic_e.refresh 'gems.example.com', true - end - end - - def test_refresh_update - si = Gem::SourceIndex.new - si.add_spec @a1 - si.add_spec @b2 - @fetcher.data["#{@gem_repo}Marshal.#{@marshal_version}"] = si.dump - - use_ui @ui do - @sic_e.refresh @gem_repo, true - end - - new_gem = @sic_e.source_index.specification(@b2.full_name) - assert_equal @b2.full_name, new_gem.full_name - end - -end - diff --git a/trunk/test/rubygems/test_gem_spec_fetcher.rb b/trunk/test/rubygems/test_gem_spec_fetcher.rb deleted file mode 100644 index 2e9ce1b7eb..0000000000 --- a/trunk/test/rubygems/test_gem_spec_fetcher.rb +++ /dev/null @@ -1,303 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/spec_fetcher' - -class TestGemSpecFetcher < RubyGemTestCase - - def setup - super - - @uri = URI.parse @gem_repo - - util_setup_fake_fetcher - - @source_index.add_spec @pl1 - - @specs = @source_index.gems.sort.map do |name, spec| - [spec.name, spec.version, spec.original_platform] - end.sort - - @fetcher.data["#{@gem_repo}specs.#{Gem.marshal_version}.gz"] = - util_gzip(Marshal.dump(@specs)) - - @latest_specs = @source_index.latest_specs.sort.map do |spec| - [spec.name, spec.version, spec.original_platform] - end - - @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] = - util_gzip(Marshal.dump(@latest_specs)) - - @sf = Gem::SpecFetcher.new - end - - def test_fetch_all - @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.full_name}.gemspec.rz"] = - util_zip(Marshal.dump(@a1)) - @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a2.full_name}.gemspec.rz"] = - util_zip(Marshal.dump(@a2)) - - dep = Gem::Dependency.new 'a', 1 - specs_and_sources = @sf.fetch dep, true - - spec_names = specs_and_sources.map do |spec, source_uri| - [spec.full_name, source_uri] - end - - expected = [[@a1.full_name, @gem_repo], [@a2.full_name, @gem_repo]] - - assert_equal expected, spec_names - - assert_same specs_and_sources.first.last, specs_and_sources.last.last - end - - def test_fetch_latest - @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.full_name}.gemspec.rz"] = - util_zip(Marshal.dump(@a1)) - @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a2.full_name}.gemspec.rz"] = - util_zip(Marshal.dump(@a2)) - - dep = Gem::Dependency.new 'a', 1 - specs_and_sources = @sf.fetch dep - - spec_names = specs_and_sources.map do |spec, source_uri| - [spec.full_name, source_uri] - end - - assert_equal [[@a2.full_name, @gem_repo]], spec_names - end - - def test_fetch_legacy_repo - @fetcher.data["#{@gem_repo}specs.#{Gem.marshal_version}.gz"] = nil - @fetcher.data["#{@gem_repo}yaml"] = '' - util_setup_source_info_cache @a1, @a2 - - dep = Gem::Dependency.new 'a', 1 - specs = nil - - use_ui @ui do - specs = @sf.fetch dep, true - end - - expected = <<-EOF -WARNING: RubyGems 1.2+ index not found for: -\thttp://gems.example.com/ - -RubyGems will revert to legacy indexes degrading performance. - EOF - - assert_equal expected, @ui.error - - specs = specs.map { |spec, source_uri| [spec.full_name, source_uri] } - - expected = [ - [@a1.full_name, @gem_repo], - [@a2.full_name, @gem_repo], - ] - - assert_equal expected, specs - end - - def test_fetch_platform - util_set_arch 'i386-linux' - - @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@pl1.original_name}.gemspec.rz"] = - util_zip(Marshal.dump(@pl1)) - - dep = Gem::Dependency.new 'pl', 1 - specs_and_sources = @sf.fetch dep - - spec_names = specs_and_sources.map do |spec, source_uri| - [spec.full_name, source_uri] - end - - assert_equal [[@pl1.full_name, @gem_repo]], spec_names - end - - def test_fetch_spec - spec_uri = "#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.full_name}.gemspec" - @fetcher.data["#{spec_uri}.rz"] = util_zip(Marshal.dump(@a1)) - - spec = @sf.fetch_spec ['a', Gem::Version.new(1), 'ruby'], @uri - assert_equal @a1.full_name, spec.full_name - - cache_dir = @sf.cache_dir URI.parse(spec_uri) - - cache_file = File.join cache_dir, "#{@a1.full_name}.gemspec" - - assert File.exist?(cache_file) - end - - def test_fetch_spec_cached - spec_uri = "#{@gem_repo}/#{Gem::MARSHAL_SPEC_DIR}#{@a1.full_name}.gemspec" - @fetcher.data["#{spec_uri}.rz"] = nil - - cache_dir = @sf.cache_dir URI.parse(spec_uri) - FileUtils.mkdir_p cache_dir - - cache_file = File.join cache_dir, "#{@a1.full_name}.gemspec" - - open cache_file, 'wb' do |io| - Marshal.dump @a1, io - end - - spec = @sf.fetch_spec ['a', Gem::Version.new(1), 'ruby'], @uri - assert_equal @a1.full_name, spec.full_name - end - - def test_fetch_spec_platform - @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@pl1.original_name}.gemspec.rz"] = - util_zip(Marshal.dump(@pl1)) - - spec = @sf.fetch_spec ['pl', Gem::Version.new(1), 'i386-linux'], @uri - - assert_equal @pl1.full_name, spec.full_name - end - - def test_fetch_spec_platform_ruby - @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.full_name}.gemspec.rz"] = - util_zip(Marshal.dump(@a1)) - - spec = @sf.fetch_spec ['a', Gem::Version.new(1), nil], @uri - assert_equal @a1.full_name, spec.full_name - - spec = @sf.fetch_spec ['a', Gem::Version.new(1), ''], @uri - assert_equal @a1.full_name, spec.full_name - end - - def test_find_matching_all - dep = Gem::Dependency.new 'a', 1 - specs = @sf.find_matching dep, true - - expected = [ - [['a', Gem::Version.new(1), Gem::Platform::RUBY], @gem_repo], - [['a', Gem::Version.new(2), Gem::Platform::RUBY], @gem_repo], - ] - - assert_equal expected, specs - end - - def test_find_matching_latest - dep = Gem::Dependency.new 'a', 1 - specs = @sf.find_matching dep - - expected = [ - [['a', Gem::Version.new(2), Gem::Platform::RUBY], @gem_repo], - ] - - assert_equal expected, specs - end - - def test_find_matching_platform - util_set_arch 'i386-linux' - - dep = Gem::Dependency.new 'pl', 1 - specs = @sf.find_matching dep - - expected = [ - [['pl', Gem::Version.new(1), 'i386-linux'], @gem_repo], - ] - - assert_equal expected, specs - - util_set_arch 'i386-freebsd6' - - dep = Gem::Dependency.new 'pl', 1 - specs = @sf.find_matching dep - - assert_equal [], specs - end - - def test_find_all_platforms - util_set_arch 'i386-freebsd6' - - dep = Gem::Dependency.new 'pl', 1 - specs = @sf.find_matching dep, false, false - - expected = [ - [['pl', Gem::Version.new(1), 'i386-linux'], @gem_repo], - ] - - assert_equal expected, specs - end - - def test_list - specs = @sf.list - - assert_equal [@uri], specs.keys - assert_equal @latest_specs, specs[@uri].sort - end - - def test_list_all - specs = @sf.list true - - assert_equal [@uri], specs.keys - - assert_equal @specs, specs[@uri].sort - end - - def test_list_cache - specs = @sf.list - - assert !specs[@uri].empty? - - @fetcher.data["#{@gem_repo}/latest_specs.#{Gem.marshal_version}.gz"] = nil - - cached_specs = @sf.list - - assert_equal specs, cached_specs - end - - def test_list_cache_all - specs = @sf.list true - - assert !specs[@uri].empty? - - @fetcher.data["#{@gem_repo}/specs.#{Gem.marshal_version}.gz"] = nil - - cached_specs = @sf.list true - - assert_equal specs, cached_specs - end - - def test_load_specs - specs = @sf.load_specs @uri, 'specs' - - expected = [ - ['a', Gem::Version.new(1), Gem::Platform::RUBY], - ['a', Gem::Version.new(2), Gem::Platform::RUBY], - ['a_evil', Gem::Version.new(9), Gem::Platform::RUBY], - ['c', Gem::Version.new('1.2'), Gem::Platform::RUBY], - ['pl', Gem::Version.new(1), 'i386-linux'], - ] - - assert_equal expected, specs - - cache_dir = File.join Gem.user_home, '.gem', 'specs', 'gems.example.com%80' - assert File.exist?(cache_dir), "#{cache_dir} does not exist" - - cache_file = File.join cache_dir, "specs.#{Gem.marshal_version}" - assert File.exist?(cache_file) - end - - def test_load_specs_cached - @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] = '' - @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}"] = - ' ' * Marshal.dump(@latest_specs).length - - cache_dir = File.join Gem.user_home, '.gem', 'specs', 'gems.example.com%80' - - FileUtils.mkdir_p cache_dir - - cache_file = File.join cache_dir, "latest_specs.#{Gem.marshal_version}" - - open cache_file, 'wb' do |io| - Marshal.dump @latest_specs, io - end - - latest_specs = @sf.load_specs @uri, 'latest_specs' - - assert_equal @latest_specs, latest_specs - end - -end - diff --git a/trunk/test/rubygems/test_gem_specification.rb b/trunk/test/rubygems/test_gem_specification.rb deleted file mode 100644 index 57c3fdc158..0000000000 --- a/trunk/test/rubygems/test_gem_specification.rb +++ /dev/null @@ -1,954 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'stringio' -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/specification' - -class TestGemSpecification < RubyGemTestCase - - LEGACY_YAML_SPEC = <<-EOF ---- !ruby/object:Gem::Specification -rubygems_version: "1.0" -name: keyedlist -version: !ruby/object:Gem::Version - version: 0.4.0 -date: 2004-03-28 15:37:49.828000 +02:00 -platform: -summary: A Hash which automatically computes keys. -require_paths: - - lib -files: - - lib/keyedlist.rb -autorequire: keyedlist -author: Florian Gross -email: flgr@ccan.de -has_rdoc: true - EOF - - LEGACY_RUBY_SPEC = <<-EOF -Gem::Specification.new do |s| - s.name = %q{keyedlist} - s.version = %q{0.4.0} - s.has_rdoc = true - s.summary = %q{A Hash which automatically computes keys.} - s.files = ["lib/keyedlist.rb"] - s.require_paths = ["lib"] - s.autorequire = %q{keyedlist} - s.author = %q{Florian Gross} - s.email = %q{flgr@ccan.de} -end - EOF - - def setup - super - - @a1 = quick_gem 'a', '1' do |s| - s.executable = 'exec' - s.extensions << 'ext/a/extconf.rb' - s.has_rdoc = 'true' - s.test_file = 'test/suite.rb' - s.requirements << 'A working computer' - s.rubyforge_project = 'example' - - s.add_dependency 'rake', '> 0.4' - s.add_dependency 'jabber4r', '> 0.0.0' - s.add_dependency 'pqa', ['> 0.4', '<= 0.6'] - - s.mark_version - s.files = %w[lib/code.rb] - end - - @a2 = quick_gem 'a', '2' do |s| - s.files = %w[lib/code.rb] - end - - FileUtils.mkdir_p File.join(@tempdir, 'bin') - File.open File.join(@tempdir, 'bin', 'exec'), 'w' do |fp| - fp.puts "#!#{Gem.ruby}" - end - - @current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION - end - - def test_self_attribute_names - expected_value = %w[ - authors - autorequire - bindir - cert_chain - date - default_executable - dependencies - description - email - executables - extensions - extra_rdoc_files - files - has_rdoc - homepage - name - platform - post_install_message - rdoc_options - require_paths - required_ruby_version - required_rubygems_version - requirements - rubyforge_project - rubygems_version - signing_key - specification_version - summary - test_files - version - ] - - actual_value = Gem::Specification.attribute_names.map { |a| a.to_s }.sort - - assert_equal expected_value, actual_value - end - - def test_self__load_future - spec = Gem::Specification.new - spec.name = 'a' - spec.version = '1' - spec.specification_version = @current_version + 1 - - new_spec = Marshal.load Marshal.dump(spec) - - assert_equal 'a', new_spec.name - assert_equal Gem::Version.new(1), new_spec.version - assert_equal @current_version, new_spec.specification_version - end - - def test_self_load - spec = File.join @gemhome, 'specifications', "#{@a2.full_name}.gemspec" - gs = Gem::Specification.load spec - - assert_equal @a2, gs - end - - def test_self_load_legacy_ruby - spec = eval LEGACY_RUBY_SPEC - assert_equal 'keyedlist', spec.name - assert_equal '0.4.0', spec.version.to_s - assert_equal true, spec.has_rdoc? - assert_equal Gem::Specification::TODAY, spec.date - assert spec.required_ruby_version.satisfied_by?(Gem::Version.new('1')) - assert_equal false, spec.has_unit_tests? - end - - def test_self_load_legacy_yaml - s = YAML.load StringIO.new(LEGACY_YAML_SPEC) - assert_equal 'keyedlist', s.name - assert_equal '0.4.0', s.version.to_s - assert_equal true, s.has_rdoc? - #assert_equal Date.today, s.date - #assert s.required_ruby_version.satisfied_by?(Gem::Version.new('1')) - assert_equal false, s.has_unit_tests? - end - - def test_self_normalize_yaml_input_with_183_yaml - input = "!ruby/object:Gem::Specification " - assert_equal "--- #{input}", Gem::Specification.normalize_yaml_input(input) - end - - def test_self_normalize_yaml_input_with_non_183_yaml - input = "--- !ruby/object:Gem::Specification " - assert_equal input, Gem::Specification.normalize_yaml_input(input) - end - - def test_self_normalize_yaml_input_with_183_io - input = "!ruby/object:Gem::Specification " - assert_equal "--- #{input}", - Gem::Specification.normalize_yaml_input(StringIO.new(input)) - end - - def test_self_normalize_yaml_input_with_non_183_io - input = "--- !ruby/object:Gem::Specification " - assert_equal input, - Gem::Specification.normalize_yaml_input(StringIO.new(input)) - end - - def test_initialize - spec = Gem::Specification.new do |s| - s.name = "blah" - s.version = "1.3.5" - end - - assert_equal "blah", spec.name - assert_equal "1.3.5", spec.version.to_s - assert_equal Gem::Platform::RUBY, spec.platform - assert_equal nil, spec.summary - assert_equal [], spec.files - - assert_equal [], spec.test_files - assert_equal [], spec.rdoc_options - assert_equal [], spec.extra_rdoc_files - assert_equal [], spec.executables - assert_equal [], spec.extensions - assert_equal [], spec.requirements - assert_equal [], spec.dependencies - assert_equal 'bin', spec.bindir - assert_equal false, spec.has_rdoc - assert_equal false, spec.has_rdoc? - assert_equal '>= 0', spec.required_ruby_version.to_s - assert_equal '>= 0', spec.required_rubygems_version.to_s - end - - def test_initialize_future - version = Gem::Specification::CURRENT_SPECIFICATION_VERSION + 1 - spec = Gem::Specification.new do |s| - s.name = "blah" - s.version = "1.3.5" - - s.specification_version = version - - s.new_unknown_attribute = "a value" - end - - assert_equal "blah", spec.name - assert_equal "1.3.5", spec.version.to_s - end - - def test__dump - @a2.platform = Gem::Platform.local - @a2.instance_variable_set :@original_platform, 'old_platform' - - data = Marshal.dump @a2 - - same_spec = Marshal.load data - - assert_equal 'old_platform', same_spec.original_platform - end - - def test_add_dependency_with_explicit_type - gem = quick_gem "awesome", "1.0" do |awesome| - awesome.add_development_dependency "monkey" - end - - monkey = gem.dependencies.detect { |d| d.name == "monkey" } - assert_equal(:development, monkey.type) - end - - def test_author - assert_equal 'A User', @a1.author - end - - def test_authors - assert_equal ['A User'], @a1.authors - end - - def test_bindir_equals - @a1.bindir = 'apps' - - assert_equal 'apps', @a1.bindir - end - - def test_bindir_equals_nil - @a2.bindir = nil - @a2.executable = 'app' - - assert_equal nil, @a2.bindir - assert_equal %w[lib/code.rb app], @a2.files - end - - def test_date - assert_equal Gem::Specification::TODAY, @a1.date - end - - def test_date_equals_date - @a1.date = Date.new(2003, 9, 17) - assert_equal Time.local(2003, 9, 17, 0,0,0), @a1.date - end - - def test_date_equals_string - @a1.date = '2003-09-17' - assert_equal Time.local(2003, 9, 17, 0,0,0), @a1.date - end - - def test_date_equals_time - @a1.date = Time.local(2003, 9, 17, 0,0,0) - assert_equal Time.local(2003, 9, 17, 0,0,0), @a1.date - end - - def test_date_equals_time_local - # HACK PDT - @a1.date = Time.local(2003, 9, 17, 19,50,0) - assert_equal Time.local(2003, 9, 17, 0,0,0), @a1.date - end - - def test_date_equals_time_utc - # HACK PDT - @a1.date = Time.local(2003, 9, 17, 19,50,0) - assert_equal Time.local(2003, 9, 17, 0,0,0), @a1.date - end - - def test_default_executable - assert_equal 'exec', @a1.default_executable - - @a1.default_executable = nil - @a1.instance_variable_set :@executables, nil - assert_equal nil, @a1.default_executable - end - - def test_dependencies - rake = Gem::Dependency.new 'rake', '> 0.4' - jabber = Gem::Dependency.new 'jabber4r', '> 0.0.0' - pqa = Gem::Dependency.new 'pqa', ['> 0.4', '<= 0.6'] - - assert_equal [rake, jabber, pqa], @a1.dependencies - end - - def test_dependencies_scoped_by_type - gem = quick_gem "awesome", "1.0" do |awesome| - awesome.add_runtime_dependency "bonobo", [] - awesome.add_development_dependency "monkey", [] - end - - bonobo = Gem::Dependency.new("bonobo", []) - monkey = Gem::Dependency.new("monkey", [], :development) - - assert_equal([bonobo, monkey], gem.dependencies) - assert_equal([bonobo], gem.runtime_dependencies) - assert_equal([monkey], gem.development_dependencies) - end - - def test_description - assert_equal 'This is a test description', @a1.description - end - - def test_eql_eh - g1 = quick_gem 'gem' - g2 = quick_gem 'gem' - - assert_equal g1, g2 - assert_equal g1.hash, g2.hash - assert_equal true, g1.eql?(g2) - end - - def test_equals2 - assert_equal @a1, @a1 - assert_equal @a1, @a1.dup - assert_not_equal @a1, @a2 - assert_not_equal @a1, Object.new - end - - # The cgikit specification was reported to be causing trouble in at least - # one version of RubyGems, so we test explicitly for it. - def test_equals2_cgikit - cgikit = Gem::Specification.new do |s| - s.name = %q{cgikit} - s.version = "1.1.0" - s.date = %q{2004-03-13} - s.summary = %q{CGIKit is a componented-oriented web application } + - %q{framework like Apple Computers WebObjects. } + - %{This framework services Model-View-Controller architecture } + - %q{programming by components based on a HTML file, a definition } + - %q{file and a Ruby source. } - s.email = %q{info@spice-of-life.net} - s.homepage = %q{http://www.spice-of-life.net/download/cgikit/} - s.autorequire = %q{cgikit} - s.bindir = nil - s.has_rdoc = nil - s.required_ruby_version = nil - s.platform = nil - s.files = ["lib/cgikit", "lib/cgikit.rb", "lib/cgikit/components", "..."] - end - - assert_equal cgikit, cgikit - end - - def test_equals2_default_executable - spec = @a1.dup - spec.default_executable = 'xx' - - assert_not_equal @a1, spec - assert_not_equal spec, @a1 - end - - def test_equals2_extensions - spec = @a1.dup - spec.extensions = 'xx' - - assert_not_equal @a1, spec - assert_not_equal spec, @a1 - end - - def test_executables - @a1.executable = 'app' - assert_equal %w[app], @a1.executables - end - - def test_executable_equals - @a2.executable = 'app' - assert_equal 'app', @a2.executable - assert_equal %w[lib/code.rb bin/app], @a2.files - end - - def test_extensions - assert_equal ['ext/a/extconf.rb'], @a1.extensions - end - - def test_files - @a1.files = %w(files bin/common) - @a1.test_files = %w(test_files bin/common) - @a1.executables = %w(executables common) - @a1.extra_rdoc_files = %w(extra_rdoc_files bin/common) - @a1.extensions = %w(extensions bin/common) - - expected = %w[ - bin/common - bin/executables - extensions - extra_rdoc_files - files - test_files - ] - assert_equal expected, @a1.files.sort - end - - def test_files_duplicate - @a2.files = %w[a b c d b] - @a2.extra_rdoc_files = %w[x y z x] - @a2.normalize - - assert_equal %w[a b c d x y z], @a2.files - assert_equal %w[x y z], @a2.extra_rdoc_files - end - - def test_files_extra_rdoc_files - @a2.files = %w[a b c d] - @a2.extra_rdoc_files = %w[x y z] - @a2.normalize - assert_equal %w[a b c d x y z], @a2.files - end - - def test_files_non_array - @a1.files = "F" - @a1.test_files = "TF" - @a1.executables = "X" - @a1.extra_rdoc_files = "ERF" - @a1.extensions = "E" - - assert_equal %w[E ERF F TF bin/X], @a1.files.sort - end - - def test_files_non_array_pathological - @a1.instance_variable_set :@files, "F" - @a1.instance_variable_set :@test_files, "TF" - @a1.instance_variable_set :@extra_rdoc_files, "ERF" - @a1.instance_variable_set :@extensions, "E" - @a1.instance_variable_set :@executables, "X" - - assert_equal %w[E ERF F TF bin/X], @a1.files.sort - assert_kind_of Integer, @a1.hash - end - - def test_full_gem_path - assert_equal File.join(@gemhome, 'gems', @a1.full_name), - @a1.full_gem_path - - @a1.original_platform = 'mswin32' - - assert_equal File.join(@gemhome, 'gems', @a1.original_name), - @a1.full_gem_path - end - - def test_full_gem_path_double_slash - gemhome = @gemhome.sub(/\w\//, '\&/') - @a1.loaded_from = File.join gemhome, 'specifications', - "#{@a1.full_name}.gemspec" - - assert_equal File.join(@gemhome, 'gems', @a1.full_name), - @a1.full_gem_path - end - - def test_full_name - assert_equal 'a-1', @a1.full_name - - @a1.platform = Gem::Platform.new ['universal', 'darwin', nil] - assert_equal 'a-1-universal-darwin', @a1.full_name - - @a1.instance_variable_set :@new_platform, 'mswin32' - assert_equal 'a-1-mswin32', @a1.full_name, 'legacy' - - return if win_platform? - - @a1.platform = 'current' - assert_equal 'a-1-x86-darwin-8', @a1.full_name - end - - def test_full_name_windows - test_cases = { - 'i386-mswin32' => 'a-1-x86-mswin32-60', - 'i386-mswin32_80' => 'a-1-x86-mswin32-80', - 'i386-mingw32' => 'a-1-x86-mingw32' - } - - test_cases.each do |arch, expected| - util_set_arch arch - @a1.platform = 'current' - assert_equal expected, @a1.full_name - end - end - - def test_has_rdoc_eh - assert_equal true, @a1.has_rdoc? - end - - def test_hash - assert_equal @a1.hash, @a1.hash - assert_equal @a1.hash, @a1.dup.hash - assert_not_equal @a1.hash, @a2.hash - end - - def test_lib_files - @a1.files = %w[lib/foo.rb Rakefile] - - assert_equal %w[lib/foo.rb], @a1.lib_files - end - - def test_name - assert_equal 'a', @a1.name - end - - def test_original_name - assert_equal 'a-1', @a1.full_name - - @a1.platform = 'i386-linux' - @a1.instance_variable_set :@original_platform, 'i386-linux' - assert_equal 'a-1-i386-linux', @a1.original_name - end - - def test_platform - assert_equal Gem::Platform::RUBY, @a1.platform - end - - def test_platform_equals - @a1.platform = nil - assert_equal Gem::Platform::RUBY, @a1.platform - - @a1.platform = Gem::Platform::RUBY - assert_equal Gem::Platform::RUBY, @a1.platform - - test_cases = { - 'i386-mswin32' => ['x86', 'mswin32', '60'], - 'i386-mswin32_80' => ['x86', 'mswin32', '80'], - 'i386-mingw32' => ['x86', 'mingw32', nil ], - 'x86-darwin8' => ['x86', 'darwin', '8' ], - } - - test_cases.each do |arch, expected| - util_set_arch arch - @a1.platform = Gem::Platform::CURRENT - assert_equal Gem::Platform.new(expected), @a1.platform - end - end - - def test_platform_equals_current - @a1.platform = Gem::Platform::CURRENT - assert_equal Gem::Platform.local, @a1.platform - assert_equal Gem::Platform.local.to_s, @a1.original_platform - end - - def test_platform_equals_legacy - @a1.platform = 'mswin32' - assert_equal Gem::Platform.new('x86-mswin32'), @a1.platform - - @a1.platform = 'i586-linux' - assert_equal Gem::Platform.new('x86-linux'), @a1.platform - - @a1.platform = 'powerpc-darwin' - assert_equal Gem::Platform.new('ppc-darwin'), @a1.platform - end - - def test_require_paths - @a1.require_path = 'lib' - assert_equal %w[lib], @a1.require_paths - end - - def test_requirements - assert_equal ['A working computer'], @a1.requirements - end - - def test_runtime_dependencies_legacy - # legacy gems don't have a type - @a1.runtime_dependencies.each do |dep| - dep.instance_variable_set :@type, nil - end - - expected = %w[rake jabber4r pqa] - - assert_equal expected, @a1.runtime_dependencies.map { |d| d.name } - end - - def test_spaceship_name - s1 = quick_gem 'a', '1' - s2 = quick_gem 'b', '1' - - assert_equal(-1, (s1 <=> s2)) - assert_equal( 0, (s1 <=> s1)) - assert_equal( 1, (s2 <=> s1)) - end - - def test_spaceship_platform - s1 = quick_gem 'a', '1' - s2 = quick_gem 'a', '1' do |s| - s.platform = Gem::Platform.new 'x86-my_platform1' - end - - assert_equal( -1, (s1 <=> s2)) - assert_equal( 0, (s1 <=> s1)) - assert_equal( 1, (s2 <=> s1)) - end - - def test_spaceship_version - s1 = quick_gem 'a', '1' - s2 = quick_gem 'a', '2' - - assert_equal( -1, (s1 <=> s2)) - assert_equal( 0, (s1 <=> s1)) - assert_equal( 1, (s2 <=> s1)) - end - - def test_summary - assert_equal 'this is a summary', @a1.summary - end - - def test_test_files - @a1.test_file = 'test/suite.rb' - assert_equal ['test/suite.rb'], @a1.test_files - end - - def test_to_ruby - @a2.add_runtime_dependency 'b', '1' - @a2.dependencies.first.instance_variable_set :@type, nil - @a2.required_rubygems_version = Gem::Requirement.new '> 0' - - ruby_code = @a2.to_ruby - - expected = "Gem::Specification.new do |s| - s.name = %q{a} - s.version = \"2\" - - s.required_rubygems_version = Gem::Requirement.new(\"> 0\") if s.respond_to? :required_rubygems_version= - s.authors = [\"A User\"] - s.date = %q{#{Gem::Specification::TODAY.strftime "%Y-%m-%d"}} - s.description = %q{This is a test description} - s.email = %q{example@example.com} - s.files = [\"lib/code.rb\"] - s.has_rdoc = true - s.homepage = %q{http://example.com} - s.require_paths = [\"lib\"] - s.rubygems_version = %q{#{Gem::RubyGemsVersion}} - s.summary = %q{this is a summary} - - if s.respond_to? :specification_version then - current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION - s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION} - - if current_version >= 3 then - s.add_runtime_dependency(%q<b>, [\"= 1\"]) - else - s.add_dependency(%q<b>, [\"= 1\"]) - end - else - s.add_dependency(%q<b>, [\"= 1\"]) - end -end -" - - assert_equal expected, ruby_code - - same_spec = eval ruby_code - - assert_equal @a2, same_spec - end - - def test_to_ruby_fancy - @a1.platform = Gem::Platform.local - ruby_code = @a1.to_ruby - - local = Gem::Platform.local - expected_platform = "[#{local.cpu.inspect}, #{local.os.inspect}, #{local.version.inspect}]" - - expected = "Gem::Specification.new do |s| - s.name = %q{a} - s.version = \"1\" - s.platform = Gem::Platform.new(#{expected_platform}) - - s.required_rubygems_version = Gem::Requirement.new(\">= 0\") if s.respond_to? :required_rubygems_version= - s.authors = [\"A User\"] - s.date = %q{#{Gem::Specification::TODAY.strftime "%Y-%m-%d"}} - s.default_executable = %q{exec} - s.description = %q{This is a test description} - s.email = %q{example@example.com} - s.executables = [\"exec\"] - s.extensions = [\"ext/a/extconf.rb\"] - s.files = [\"lib/code.rb\", \"test/suite.rb\", \"bin/exec\", \"ext/a/extconf.rb\"] - s.has_rdoc = %q{true} - s.homepage = %q{http://example.com} - s.require_paths = [\"lib\"] - s.requirements = [\"A working computer\"] - s.rubyforge_project = %q{example} - s.rubygems_version = %q{#{Gem::RubyGemsVersion}} - s.summary = %q{this is a summary} - s.test_files = [\"test/suite.rb\"] - - if s.respond_to? :specification_version then - current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION - s.specification_version = 2 - - if current_version >= 3 then - s.add_runtime_dependency(%q<rake>, [\"> 0.4\"]) - s.add_runtime_dependency(%q<jabber4r>, [\"> 0.0.0\"]) - s.add_runtime_dependency(%q<pqa>, [\"> 0.4\", \"<= 0.6\"]) - else - s.add_dependency(%q<rake>, [\"> 0.4\"]) - s.add_dependency(%q<jabber4r>, [\"> 0.0.0\"]) - s.add_dependency(%q<pqa>, [\"> 0.4\", \"<= 0.6\"]) - end - else - s.add_dependency(%q<rake>, [\"> 0.4\"]) - s.add_dependency(%q<jabber4r>, [\"> 0.0.0\"]) - s.add_dependency(%q<pqa>, [\"> 0.4\", \"<= 0.6\"]) - end -end -" - - assert_equal expected, ruby_code - - same_spec = eval ruby_code - - assert_equal @a1, same_spec - end - - def test_to_ruby_legacy - gemspec1 = eval LEGACY_RUBY_SPEC - ruby_code = gemspec1.to_ruby - gemspec2 = eval ruby_code - - assert_equal gemspec1, gemspec2 - end - - def test_to_ruby_platform - @a2.platform = Gem::Platform.local - @a2.instance_variable_set :@original_platform, 'old_platform' - - ruby_code = @a2.to_ruby - - same_spec = eval ruby_code - - assert_equal 'old_platform', same_spec.original_platform - end - - def test_to_yaml - yaml_str = @a1.to_yaml - same_spec = YAML.load(yaml_str) - - assert_equal @a1, same_spec - end - - def test_to_yaml_fancy - @a1.platform = Gem::Platform.local - yaml_str = @a1.to_yaml - - same_spec = YAML.load(yaml_str) - - assert_equal Gem::Platform.local, same_spec.platform - - assert_equal @a1, same_spec - end - - def test_to_yaml_platform_empty_string - @a1.instance_variable_set :@original_platform, '' - - assert_match %r|^platform: ruby$|, @a1.to_yaml - end - - def test_to_yaml_platform_legacy - @a1.platform = 'powerpc-darwin7.9.0' - @a1.instance_variable_set :@original_platform, 'powerpc-darwin7.9.0' - - yaml_str = @a1.to_yaml - - same_spec = YAML.load(yaml_str) - - assert_equal Gem::Platform.new('powerpc-darwin7'), same_spec.platform - assert_equal 'powerpc-darwin7.9.0', same_spec.original_platform - end - - def test_to_yaml_platform_nil - @a1.instance_variable_set :@original_platform, nil - - assert_match %r|^platform: ruby$|, @a1.to_yaml - end - - def test_validate - Dir.chdir @tempdir do - assert @a1.validate - end - end - - def test_validate_authors - Dir.chdir @tempdir do - @a1.authors = [] - - use_ui @ui do - @a1.validate - end - - assert_equal "WARNING: no author specified\n", @ui.error, 'error' - - @a1.authors = [Object.new] - - e = assert_raise Gem::InvalidSpecificationException do - @a1.validate - end - - assert_equal 'authors must be Array of Strings', e.message - end - end - - def test_validate_autorequire - Dir.chdir @tempdir do - @a1.autorequire = 'code' - - use_ui @ui do - @a1.validate - end - - assert_equal "WARNING: deprecated autorequire specified\n", - @ui.error, 'error' - end - end - - def test_validate_email - Dir.chdir @tempdir do - @a1.email = '' - - use_ui @ui do - @a1.validate - end - - assert_equal "WARNING: no email specified\n", @ui.error, 'error' - end - end - - def test_validate_empty - e = assert_raise Gem::InvalidSpecificationException do - Gem::Specification.new.validate - end - - assert_equal 'missing value for attribute name', e.message - end - - def test_validate_executables - FileUtils.mkdir_p File.join(@tempdir, 'bin') - File.open File.join(@tempdir, 'bin', 'exec'), 'w' do end - - use_ui @ui do - Dir.chdir @tempdir do - assert @a1.validate - end - end - - assert_equal '', @ui.output, 'output' - assert_equal "WARNING: bin/exec is missing #! line\n", @ui.error, 'error' - end - - def test_validate_empty_require_paths - @a1.require_paths = [] - e = assert_raise Gem::InvalidSpecificationException do - @a1.validate - end - - assert_equal 'specification must have at least one require_path', e.message - end - - def test_validate_homepage - Dir.chdir @tempdir do - @a1.homepage = '' - - use_ui @ui do - @a1.validate - end - - assert_equal "WARNING: no homepage specified\n", @ui.error, 'error' - end - end - - def test_validate_has_rdoc - Dir.chdir @tempdir do - @a1.has_rdoc = false - - use_ui @ui do - @a1.validate - end - - assert_equal "WARNING: RDoc will not be generated (has_rdoc == false)\n", - @ui.error, 'error' - end - end - - def test_validate_platform_legacy - Dir.chdir @tempdir do - @a1.platform = 'mswin32' - assert @a1.validate - - @a1.platform = 'i586-linux' - assert @a1.validate - - @a1.platform = 'powerpc-darwin' - assert @a1.validate - end - end - - def test_validate_rubyforge_project - Dir.chdir @tempdir do - @a1.rubyforge_project = '' - - use_ui @ui do - @a1.validate - end - - assert_equal "WARNING: no rubyforge_project specified\n", - @ui.error, 'error' - end - end - - def test_validate_rubygems_version - @a1.rubygems_version = "3" - e = assert_raise Gem::InvalidSpecificationException do - @a1.validate - end - - assert_equal "expected RubyGems version #{Gem::RubyGemsVersion}, was 3", - e.message - end - - def test_validate_summary - Dir.chdir @tempdir do - @a1.summary = '' - - use_ui @ui do - @a1.validate - end - - assert_equal "WARNING: no summary specified\n", @ui.error, 'error' - end - end - - def test_version - assert_equal Gem::Version.new('1'), @a1.version - end - -end - diff --git a/trunk/test/rubygems/test_gem_stream_ui.rb b/trunk/test/rubygems/test_gem_stream_ui.rb deleted file mode 100644 index a8564ba94f..0000000000 --- a/trunk/test/rubygems/test_gem_stream_ui.rb +++ /dev/null @@ -1,117 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/user_interaction' - -class TestGemStreamUI < RubyGemTestCase - - module IsTty - attr_accessor :tty - - def tty? - @tty = true unless defined? @tty - return @tty - end - - alias_method :isatty, :tty? - end - - def setup - super - - @cfg = Gem.configuration - - @in = StringIO.new - @out = StringIO.new - @err = StringIO.new - - @in.extend IsTty - - @sui = Gem::StreamUI.new @in, @out, @err - end - - def test_ask - timeout(1) do - expected_answer = "Arthur, King of the Britons" - @in.string = "#{expected_answer}\n" - actual_answer = @sui.ask("What is your name?") - assert_equal expected_answer, actual_answer - end - end - - def test_ask_no_tty - @in.tty = false - - timeout(0.1) do - answer = @sui.ask("what is your favorite color?") - assert_equal nil, answer - end - end - - def test_ask_yes_no_no_tty_with_default - @in.tty = false - - timeout(0.1) do - answer = @sui.ask_yes_no("do coconuts migrate?", false) - assert_equal false, answer - - answer = @sui.ask_yes_no("do coconuts migrate?", true) - assert_equal true, answer - end - end - - def test_ask_yes_no_no_tty_without_default - @in.tty = false - - timeout(0.1) do - assert_raises(Gem::OperationNotSupportedError) do - @sui.ask_yes_no("do coconuts migrate?") - end - end - end - - def test_choose_from_list - @in.puts "1" - @in.rewind - - result = @sui.choose_from_list 'which one?', %w[foo bar] - - assert_equal ['foo', 0], result - assert_equal "which one?\n 1. foo\n 2. bar\n> ", @out.string - end - - def test_choose_from_list_EOF - result = @sui.choose_from_list 'which one?', %w[foo bar] - - assert_equal [nil, nil], result - assert_equal "which one?\n 1. foo\n 2. bar\n> ", @out.string - end - - def test_proress_reporter_silent_nil - @cfg.verbose = nil - reporter = @sui.progress_reporter 10, 'hi' - assert_kind_of Gem::StreamUI::SilentProgressReporter, reporter - end - - def test_proress_reporter_silent_false - @cfg.verbose = false - reporter = @sui.progress_reporter 10, 'hi' - assert_kind_of Gem::StreamUI::SilentProgressReporter, reporter - assert_equal "", @out.string - end - - def test_proress_reporter_simple - @cfg.verbose = true - reporter = @sui.progress_reporter 10, 'hi' - assert_kind_of Gem::StreamUI::SimpleProgressReporter, reporter - assert_equal "hi\n", @out.string - end - - def test_proress_reporter_verbose - @cfg.verbose = 0 - reporter = @sui.progress_reporter 10, 'hi' - assert_kind_of Gem::StreamUI::VerboseProgressReporter, reporter - assert_equal "hi\n", @out.string - end - -end - diff --git a/trunk/test/rubygems/test_gem_uninstaller.rb b/trunk/test/rubygems/test_gem_uninstaller.rb deleted file mode 100644 index 7d7890c3ea..0000000000 --- a/trunk/test/rubygems/test_gem_uninstaller.rb +++ /dev/null @@ -1,66 +0,0 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), - 'gem_installer_test_case') -require 'rubygems/uninstaller' - -class TestGemUninstaller < GemInstallerTestCase - - def setup - super - - ui = MockGemUi.new - util_setup_gem ui - - build_rake_in do - use_ui ui do - @installer.install - end - end - end - - def test_initialize_expand_path - uninstaller = Gem::Uninstaller.new nil, :install_dir => '/foo//bar' - - assert_match %r|/foo/bar$|, uninstaller.instance_variable_get(:@gem_home) - end - - def test_remove_executables_force_keep - uninstaller = Gem::Uninstaller.new nil, :executables => false - - use_ui @ui do - uninstaller.remove_executables @spec - end - - assert_equal true, File.exist?(File.join(@gemhome, 'bin', 'executable')) - - assert_equal "Executables and scripts will remain installed.\n", @ui.output - end - - def test_remove_executables_force_remove - uninstaller = Gem::Uninstaller.new nil, :executables => true - - use_ui @ui do - uninstaller.remove_executables @spec - end - - assert_equal "Removing executable\n", @ui.output - - assert_equal false, File.exist?(File.join(@gemhome, 'bin', 'executable')) - end - - def test_path_ok_eh - uninstaller = Gem::Uninstaller.new nil - - assert_equal true, uninstaller.path_ok?(@spec) - end - - def test_path_ok_eh_legacy - uninstaller = Gem::Uninstaller.new nil - - @spec.loaded_from.gsub! @spec.full_name, '\&-legacy' - @spec.platform = 'legacy' - - assert_equal true, uninstaller.path_ok?(@spec) - end - -end - diff --git a/trunk/test/rubygems/test_gem_validator.rb b/trunk/test/rubygems/test_gem_validator.rb deleted file mode 100644 index c910cfdf11..0000000000 --- a/trunk/test/rubygems/test_gem_validator.rb +++ /dev/null @@ -1,70 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require File.join(File.expand_path(File.dirname(__FILE__)), 'simple_gem') -require 'rubygems/validator' - -class TestGemValidator < RubyGemTestCase - - def setup - super - - @simple_gem = SIMPLE_GEM - @validator = Gem::Validator.new - end - - def test_verify_gem_file - gem_file = File.join @tempdir, 'simple_gem.gem' - File.open gem_file, 'wb' do |fp| fp.write @simple_gem end - - assert_equal nil, @validator.verify_gem_file(gem_file) - end - - def test_verify_gem_file_empty - e = assert_raise Gem::VerificationError do - @validator.verify_gem_file '' - end - - assert_equal 'missing gem file ', e.message - end - - def test_verify_gem_file_nonexistent - file = '/nonexistent/nonexistent.gem' - e = assert_raise Gem::VerificationError do - @validator.verify_gem_file file - end - - assert_equal "missing gem file #{file}", e.message - end - - def test_verify_gem - assert_equal nil, @validator.verify_gem(@simple_gem) - end - - def test_verify_gem_empty - e = assert_raise Gem::VerificationError do - @validator.verify_gem '' - end - - assert_equal 'empty gem file', e.message - end - - def test_verify_gem_invalid_checksum - e = assert_raise Gem::VerificationError do - @validator.verify_gem @simple_gem.upcase - end - - assert_equal 'invalid checksum for gem file', e.message - end - - def test_verify_gem_no_sum - assert_equal nil, @validator.verify_gem('words') - end - -end - diff --git a/trunk/test/rubygems/test_gem_version.rb b/trunk/test/rubygems/test_gem_version.rb deleted file mode 100644 index 8d10700490..0000000000 --- a/trunk/test/rubygems/test_gem_version.rb +++ /dev/null @@ -1,215 +0,0 @@ -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/version' - -class TestGemVersion < RubyGemTestCase - - def setup - super - - @v1_0 = Gem::Version.new '1.0' - @v1_2 = Gem::Version.new '1.2' - @v1_3 = Gem::Version.new '1.3' - end - - def test_class_create - assert_version Gem::Version.create('1.0') - assert_version Gem::Version.create("1.0 ") - assert_version Gem::Version.create(" 1.0 ") - assert_version Gem::Version.create("1.0\n") - assert_version Gem::Version.create("\n1.0\n") - - assert_equal Gem::Version.create('1'), Gem::Version.create(1) - end - - def test_class_create_malformed - e = assert_raise ArgumentError do Gem::Version.create("junk") end - assert_equal "Malformed version number string junk", e.message - - e = assert_raise ArgumentError do Gem::Version.create("1.0\n2.0") end - assert_equal "Malformed version number string 1.0\n2.0", e.message - end - - def test_bad - assert_inadequate( "", "> 0.1") - assert_inadequate( "1.2.3", "!= 1.2.3") - assert_inadequate( "1.2.003.0.0", "!= 1.02.3") - assert_inadequate( "4.5.6", "< 1.2.3") - assert_inadequate( "1.0", "> 1.1") - assert_inadequate( "0", ">") - assert_inadequate( "0", "<") - assert_inadequate( "", "= 0.1") - assert_inadequate( "1.1.1", "> 1.1.1") - assert_inadequate( "1.2", "= 1.1") - assert_inadequate( "1.40", "= 1.1") - assert_inadequate( "1.3", "= 1.40") - assert_inadequate( "9.3.3", "<= 9.3.2") - assert_inadequate( "9.3.1", ">= 9.3.2") - assert_inadequate( "9.3.03", "<= 9.3.2") - assert_inadequate( "1.0.0.1", "= 1.0") - end - - def test_bump_trailing_zeros - v = Gem::Version.new("5.0.0") - assert_equal "5.1", v.bump.to_s - end - - def test_bump - v = Gem::Version.new("5.2.4") - assert_equal "5.3", v.bump.to_s - end - - def test_bump_one_level - v = Gem::Version.new("5") - assert_equal "6", v.bump.to_s - end - - def test_eql_eh - v1_2 = Gem::Version.new '1.2' - v1_2_0 = Gem::Version.new '1.2.0' - - assert_equal true, v1_2.eql?(@v1_2) - assert_equal true, @v1_2.eql?(v1_2) - - assert_equal false, v1_2_0.eql?(@v1_2) - assert_equal false, @v1_2.eql?(v1_2_0) - - assert_equal false, @v1_2.eql?(@v1_3) - assert_equal false, @v1_3.eql?(@v1_2) - end - - def test_equals2 - v = Gem::Version.new("1.2") - - assert_equal v, @v1_2 - assert_equal @v1_2, v - - assert_not_equal @v1_2, @v1_3 - assert_not_equal @v1_3, @v1_2 - end - - def test_hash - v1_2 = Gem::Version.new "1.2" - v1_2_0 = Gem::Version.new "1.2.0" - - assert_equal v1_2.hash, @v1_2.hash - - assert_not_equal v1_2_0.hash, @v1_2.hash - - assert_not_equal @v1_2.hash, @v1_3.hash - end - - def test_illformed_requirements - [ ">>> 1.3.5", "> blah" ].each do |rq| - assert_raises(ArgumentError, "req [#{rq}] should fail") { - Gem::Version::Requirement.new(rq) - } - end - end - - def test_normalize - assert_equal [1], Gem::Version.new("1").to_ints - assert_equal [1], Gem::Version.new("1.0").to_ints - assert_equal [1, 1], Gem::Version.new("1.1").to_ints - end - - def test_ok - assert_adequate( "0.2.33", "= 0.2.33") - assert_adequate( "0.2.34", "> 0.2.33") - assert_adequate( "1.0", "= 1.0") - assert_adequate( "1.0", "1.0") - assert_adequate( "1.8.2", "> 1.8.0") - assert_adequate( "1.112", "> 1.111") - assert_adequate( "0.2", "> 0.0.0") - assert_adequate( "0.0.0.0.0.2", "> 0.0.0") - assert_adequate( "0.0.1.0", "> 0.0.0.1") - assert_adequate( "10.3.2", "> 9.3.2") - assert_adequate( "1.0.0.0", "= 1.0") - assert_adequate( "10.3.2", "!= 9.3.4") - assert_adequate( "10.3.2", "> 9.3.2") - assert_adequate( "10.3.2", "> 9.3.2") - assert_adequate( " 9.3.2", ">= 9.3.2") - assert_adequate( "9.3.2 ", ">= 9.3.2") - assert_adequate( "", "= 0") - assert_adequate( "", "< 0.1") - assert_adequate( " ", "< 0.1 ") - assert_adequate( "", " < 0.1") - assert_adequate( "0", "=") - assert_adequate( "0", ">=") - assert_adequate( "0", "<=") - end - - def test_satisfied_by_eh_boxed - assert_inadequate("1.3", "~> 1.4") - assert_adequate( "1.4", "~> 1.4") - assert_adequate( "1.5", "~> 1.4") - assert_inadequate("2.0", "~> 1.4") - - assert_inadequate("1.3", "~> 1.4.4") - assert_inadequate("1.4", "~> 1.4.4") - assert_adequate( "1.4.4", "~> 1.4.4") - assert_adequate( "1.4.5", "~> 1.4.4") - assert_inadequate("1.5", "~> 1.4.4") - assert_inadequate("2.0", "~> 1.4.4") - end - - def test_satisfied_by_eh_multiple - req = [">= 1.4", "<= 1.6", "!= 1.5"] - assert_inadequate("1.3", req) - assert_adequate( "1.4", req) - assert_inadequate("1.5", req) - assert_adequate( "1.6", req) - assert_inadequate("1.7", req) - assert_inadequate("2.0", req) - end - - def test_spaceship - assert_equal 1, Gem::Version.new('1.8.2') <=> Gem::Version.new('0.0.0') - end - - def test_boxed - assert_inadequate("1.3", "~> 1.4") - assert_adequate( "1.4", "~> 1.4") - assert_adequate( "1.5", "~> 1.4") - assert_inadequate("2.0", "~> 1.4") - - assert_inadequate("1.3", "~> 1.4.4") - assert_inadequate("1.4", "~> 1.4.4") - assert_adequate( "1.4.4", "~> 1.4.4") - assert_adequate( "1.4.5", "~> 1.4.4") - assert_inadequate("1.5", "~> 1.4.4") - assert_inadequate("2.0", "~> 1.4.4") - end - - def test_to_s - v = Gem::Version.new("5.2.4") - assert_equal "5.2.4", v.to_s - end - - def assert_adequate(version, requirement) - ver = Gem::Version.new(version) - req = Gem::Requirement.new(requirement) - assert req.satisfied_by?(ver), - "Version #{version} should be adequate for Requirement #{requirement}" - end - - def assert_inadequate(version, requirement) - ver = Gem::Version.new(version) - req = Gem::Version::Requirement.new(requirement) - assert ! req.satisfied_by?(ver), - "Version #{version} should not be adequate for Requirement #{requirement}" - end - - def assert_version(actual) - assert_equal @v1_0, actual - assert_equal @v1_0.version, actual.version - end - -end - diff --git a/trunk/test/rubygems/test_gem_version_option.rb b/trunk/test/rubygems/test_gem_version_option.rb deleted file mode 100644 index 30c73390fe..0000000000 --- a/trunk/test/rubygems/test_gem_version_option.rb +++ /dev/null @@ -1,77 +0,0 @@ -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/command' -require 'rubygems/version_option' - -class TestGemVersionOption < RubyGemTestCase - - def setup - super - - @cmd = Gem::Command.new 'dummy', 'dummy' - @cmd.extend Gem::VersionOption - end - - def test_add_platform_option - @cmd.add_platform_option - - assert @cmd.handles?(%w[--platform x86-darwin]) - end - - def test_add_version_option - @cmd.add_version_option - - assert @cmd.handles?(%w[--version >1]) - end - - def test_platform_option - @cmd.add_platform_option - - @cmd.handle_options %w[--platform x86-freebsd6 --platform x86-freebsd7] - - expected = [ - Gem::Platform::RUBY, - Gem::Platform.new('x86-freebsd6'), - Gem::Platform.new('x86-freebsd7'), - ] - - assert_equal expected, Gem.platforms - end - - def test_platform_option_ruby - @cmd.add_platform_option - - @cmd.handle_options %w[--platform ruby] - - expected = [ - Gem::Platform::RUBY - ] - - assert_equal expected, Gem.platforms - end - - def test_platform_option_twice - @cmd.add_platform_option - - @cmd.handle_options %w[--platform x86-freebsd6 --platform x86-freebsd-6] - - expected = [ - Gem::Platform::RUBY, - Gem::Platform.new('x86-freebsd6'), - ] - - assert_equal expected, Gem.platforms - end - - def test_version_option - @cmd.add_version_option - - @cmd.handle_options %w[--version >1] - - expected = { :version => Gem::Requirement.new('> 1'), :args => [] } - - assert_equal expected, @cmd.options - end - -end - diff --git a/trunk/test/rubygems/test_kernel.rb b/trunk/test/rubygems/test_kernel.rb deleted file mode 100644 index da31d772eb..0000000000 --- a/trunk/test/rubygems/test_kernel.rb +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env ruby -#-- -# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. -# All rights reserved. -# See LICENSE.txt for permissions. -#++ - -require 'test/unit' -require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities') -require 'rubygems/package' - -class TestKernel < RubyGemTestCase - - def setup - super - - @old_path = $:.dup - - util_make_gems - end - - def teardown - super - - $:.replace @old_path - end - - def test_gem - assert gem('a', '= 1'), "Should load" - assert $:.any? { |p| %r{a-1/lib} =~ p } - assert $:.any? { |p| %r{a-1/bin} =~ p } - end - - def test_gem_redundent - assert gem('a', '= 1'), "Should load" - assert ! gem('a', '= 1'), "Should not load" - assert_equal 1, $:.select { |p| %r{a-1/lib} =~ p }.size - assert_equal 1, $:.select { |p| %r{a-1/bin} =~ p }.size - end - - def test_gem_overlapping - assert gem('a', '= 1'), "Should load" - assert ! gem('a', '>= 1'), "Should not load" - assert_equal 1, $:.select { |p| %r{a-1/lib} =~ p }.size - assert_equal 1, $:.select { |p| %r{a-1/bin} =~ p }.size - end - - def test_gem_conflicting - assert gem('a', '= 1'), "Should load" - - ex = assert_raise Gem::Exception do - gem 'a', '= 2' - end - - assert_match(/activate a \(= 2, runtime\)/, ex.message) - assert_match(/activated a-1/, ex.message) - - assert $:.any? { |p| %r{a-1/lib} =~ p } - assert $:.any? { |p| %r{a-1/bin} =~ p } - assert ! $:.any? { |p| %r{a-2/lib} =~ p } - assert ! $:.any? { |p| %r{a-2/bin} =~ p } - end - -end - |