diff options
50 files changed, 251 insertions, 174 deletions
@@ -10,7 +10,7 @@ require 'rbconfig' require 'thread' module Gem - VERSION = "2.7.3" end # Must be first since it unloads the prelude from 1.9.2 @@ -161,7 +161,7 @@ module Gem # these are defined in Ruby 1.8.7, hence the need for this convoluted setup. READ_BINARY_ERRORS = begin - read_binary_errors = [Errno::EACCES, Errno::EROFS] read_binary_errors << Errno::ENOTSUP if Errno.const_defined?(:ENOTSUP) read_binary_errors end.freeze @@ -171,7 +171,7 @@ module Gem # these are defined in Ruby 1.8.7. WRITE_BINARY_ERRORS = begin - write_binary_errors = [] write_binary_errors << Errno::ENOTSUP if Errno.const_defined?(:ENOTSUP) write_binary_errors end.freeze @@ -871,19 +871,19 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} # Safely read a file in binary mode on all platforms. def self.read_binary(path) - open path, 'rb+' do |f| f.flock(File::LOCK_EX) f.read end rescue *READ_BINARY_ERRORS - open path, 'rb' do |f| f.read end rescue Errno::ENOLCK # NFS if Thread.main != Thread.current raise else - open path, 'rb' do |f| f.read end end @@ -68,7 +68,7 @@ Marshal::MINOR_VERSION constants. It is used to ensure compatibility. if not File.exist?(options[:directory]) or not File.directory?(options[:directory]) then - alert_error "unknown directory name #{directory}." terminate_interaction 1 else indexer = Gem::Indexer.new options.delete(:directory), options @@ -350,7 +350,9 @@ By default, this RubyGems will install gem as: def install_default_bundler_gem return unless Gem::USE_BUNDLER_FOR_GEMDEPS - mkdir_p Gem::Specification.default_specifications_dir # Workaround for non-git environment. gemspec = File.open('bundler/bundler.gemspec', 'rb'){|f| f.read.gsub(/`git ls-files -z`/, "''") } @@ -359,23 +361,36 @@ By default, this RubyGems will install gem as: bundler_spec = Gem::Specification.load("bundler/bundler.gemspec") bundler_spec.files = Dir.chdir("bundler") { Dir["{*.md,{lib,exe,man}/**/*}"] } bundler_spec.executables -= %w[bundler bundle_ruby] - Dir.entries(Gem::Specification.default_specifications_dir). select {|gs| gs.start_with?("bundler-") }. - each {|gs| File.delete(File.join(Gem::Specification.default_specifications_dir, gs)) } - default_spec_path = File.join(Gem::Specification.default_specifications_dir, "#{bundler_spec.full_name}.gemspec") Gem.write_binary(default_spec_path, bundler_spec.to_ruby) bundler_spec = Gem::Specification.load(default_spec_path) if File.directory? bundler_spec.gems_dir Dir.entries(bundler_spec.gems_dir). - select {|default_gem| File.basename(default_gem).match(/^bundler-#{Gem::Version::VERSION_PATTERN}$/) }. each {|default_gem| rm_r File.join(bundler_spec.gems_dir, default_gem) } end - mkdir_p bundler_spec.bin_dir - bundler_spec.executables.each {|e| cp File.join("bundler", bundler_spec.bindir, e), File.join(bundler_spec.bin_dir, e) } if Gem.win_platform? require 'rubygems/installer' @@ -94,7 +94,7 @@ command help for an example. spec_file = File.basename spec.spec_file - open spec_file, 'w' do |io| io.write metadata end else @@ -176,7 +176,7 @@ command help for an example. metadata = nil - open path, Gem.binary_mode do |io| tar = Gem::Package::TarReader.new io tar.each_entry do |entry| case entry.full_name @@ -458,7 +458,7 @@ if you believe they were disclosed to a third party. # Writes out this config file, replacing its source. def write - open config_file_name, 'w' do |io| io.write to_yaml end end @@ -212,7 +212,7 @@ EOF FileUtils.mkdir_p @spec.extension_dir - open destination, 'wb' do |io| io.puts output end destination end @@ -2,6 +2,7 @@ require 'rubygems' require 'rubygems/package' require 'time' begin gem 'builder' @@ -64,7 +65,7 @@ class Gem::Indexer @build_modern = options[:build_modern] @dest_directory = directory - @directory = File.join(Dir.tmpdir, "gem_generate_index_#{$$}") marshal_name = "Marshal.#{Gem.marshal_version}" @@ -123,7 +124,7 @@ class Gem::Indexer marshal_name = File.join @quick_marshal_dir, spec_file_name marshal_zipped = Gem.deflate Marshal.dump(spec) - open marshal_name, 'wb' do |io| io.write marshal_zipped end files << marshal_name @@ -261,7 +262,7 @@ class Gem::Indexer zipped = Gem.deflate data - open "#{filename}.#{extension}", 'wb' do |io| io.write zipped end end @@ -427,7 +428,7 @@ class Gem::Indexer specs_index = compact_specs specs_index.uniq.sort - open dest, 'wb' do |io| Marshal.dump specs_index, io end end @@ -206,7 +206,7 @@ class Gem::Installer ruby_executable = false existing = nil - open generated_bin, 'rb' do |io| next unless io.gets =~ /^#!/ # shebang io.gets # blankline @@ -427,7 +427,7 @@ class Gem::Installer # specifications directory. def write_spec - open spec_file, 'w' do |file| spec.installed_by_version = Gem.rubygems_version file.puts spec.to_ruby_for_cache @@ -464,7 +464,12 @@ class Gem::Installer def generate_bin # :nodoc: return if spec.executables.nil? or spec.executables.empty? - Dir.mkdir @bin_dir unless File.exist? @bin_dir raise Gem::FilePermissionError.new(@bin_dir) unless File.writable? @bin_dir spec.executables.each do |filename| @@ -863,7 +868,7 @@ TEXT build_info_file = File.join build_info_dir, "#{spec.full_name}.info" - open build_info_file, 'w' do |io| @build_args.each do |arg| io.puts arg end @@ -219,7 +219,7 @@ class Gem::Package next unless stat.file? tar.add_file_simple file, stat.mode, stat.size do |dst_io| - open file, 'rb' do |src_io| dst_io.write src_io.read 16384 until src_io.eof? end end @@ -380,7 +380,7 @@ EOM FileUtils.mkdir_p mkdir, mkdir_options - open destination, 'wb' do |out| out.write entry.read FileUtils.chmod entry.header.mode, destination end if entry.file? @@ -23,11 +23,11 @@ class Gem::Package::FileSource < Gem::Package::Source # :nodoc: all end def with_write_io &block - open path, 'wb', &block end def with_read_io &block - open path, 'rb', &block end end @@ -80,7 +80,7 @@ class Gem::Package::Old < Gem::Package FileUtils.mkdir_p File.dirname destination - open destination, 'wb', entry['mode'] do |out| out.write file_data end @@ -223,7 +223,7 @@ class Gem::RequestSet::Lockfile def write content = to_s - open "#{@gem_deps_file}.lock", 'w' do |io| io.write content end end @@ -578,7 +578,7 @@ module Gem::Security def self.write pemmable, path, permissions = 0600, passphrase = nil, cipher = KEY_CIPHER path = File.expand_path path - open path, 'wb', permissions do |io| if passphrase and cipher io.write pemmable.to_pem cipher, passphrase else @@ -93,7 +93,7 @@ class Gem::Security::TrustDir destination = cert_path certificate - open destination, 'wb', @permissions[:trusted_cert] do |io| io.write certificate.to_pem end end @@ -160,7 +160,7 @@ class Gem::Source if update_cache? then FileUtils.mkdir_p cache_dir - open local_spec, 'wb' do |io| io.write spec end end @@ -113,6 +113,8 @@ class Gem::StubSpecification < Gem::BasicSpecification unless @data begin saved_lineno = $. open loaded_from, OPEN_MODE do |file| begin file.readline # discard encoding line @@ -488,7 +488,7 @@ class Gem::TestCase < MiniTest::Unit::TestCase gemspec = "#{name}.gemspec" - open File.join(directory, gemspec), 'w' do |io| io.write git_spec.to_ruby end @@ -592,7 +592,7 @@ class Gem::TestCase < MiniTest::Unit::TestCase # Reads a Marshal file at +path+ def read_cache(path) - open path.dup.untaint, 'rb' do |io| Marshal.load io.read end end @@ -612,7 +612,7 @@ class Gem::TestCase < MiniTest::Unit::TestCase dir = File.dirname path FileUtils.mkdir_p dir unless File.directory? dir - open path, 'wb' do |io| yield io if block_given? end @@ -727,7 +727,7 @@ class Gem::TestCase < MiniTest::Unit::TestCase install_default_specs(*specs) specs.each do |spec| - open spec.loaded_from, 'w' do |io| io.write spec.to_ruby_for_cache end end @@ -1363,7 +1363,7 @@ Also, a list: yield specification if block_given? end - open File.join(directory, "#{name}.gemspec"), 'w' do |io| io.write vendor_spec.to_ruby end @@ -346,7 +346,7 @@ class Gem::TestCase::SpecFetcherSetup end def write_spec spec # :nodoc: - open spec.spec_file, 'w' do |io| io.write spec.to_ruby_for_cache end end @@ -114,7 +114,8 @@ module Gem::Util here = File.expand_path directory loop do - Dir.chdir here, &block new_here = File.expand_path('..', here) return if new_here == here # toplevel here = new_here @@ -34,7 +34,7 @@ class Gem::Validator # gem_path:: [String] Path to gem file def verify_gem_file(gem_path) - open gem_path, Gem.binary_mode do |file| gem_data = file.read verify_gem gem_data end @@ -109,7 +109,7 @@ class Gem::Validator good, gone, unreadable = nil, nil, nil, nil - open gem_path, Gem.binary_mode do |file| package = Gem::Package.new gem_path good, gone = package.contents.partition { |file_name| @@ -134,7 +134,7 @@ class Gem::Validator source = File.join gem_directory, entry['path'] - open source, Gem.binary_mode do |f| unless f.read == data then errors[gem_name][entry['path']] = "Modified from original" end @@ -463,7 +463,7 @@ class TestGem < Gem::TestCase assert File.directory?(util_cache_dir) end - unless win_platform? || Process.uid == 0 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 @@ -775,7 +775,7 @@ class TestGem < Gem::TestCase end def test_self_read_binary - open 'test', 'w' do |io| io.write "\xCF\x80" end @@ -1642,7 +1642,7 @@ class TestGem < Gem::TestCase spec = Gem::Specification.find { |s| s == spec } refute spec.activated? - open gem_deps_file, 'w' do |io| io.write 'gem "a"' end @@ -1661,7 +1661,7 @@ class TestGem < Gem::TestCase refute spec.activated? - open 'gem.deps.rb', 'w' do |io| io.write 'gem "a"' end @@ -1705,7 +1705,7 @@ class TestGem < Gem::TestCase refute spec.activated? - open 'Gemfile', 'w' do |io| io.write 'gem "a"' end @@ -1734,7 +1734,7 @@ class TestGem < Gem::TestCase refute spec.activated? - open 'gem.deps.rb', 'w' do |io| io.write 'gem "a"' end @@ -1749,7 +1749,7 @@ class TestGem < Gem::TestCase skip 'Insecure operation - read' if RUBY_VERSION <= "1.8.7" rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], 'x' - open 'x', 'w' do |io| io.write 'gem "a"' end @@ -1790,7 +1790,7 @@ You may need to `gem install -g` to install missing gems spec = Gem::Specification.find { |s| s == spec } refute spec.activated? - open 'x', 'w' do |io| io.write 'gem "a"' end @@ -158,7 +158,7 @@ class TestGemCommandsCleanupCommand < Gem::TestCase assert_path_exists @a_1_1.gem_dir ensure FileUtils.chmod 0755, @gemhome - end unless win_platform? || Process.uid == 0 def test_execute_dry_run @cmd.options[:args] = %w[a] @@ -131,7 +131,7 @@ class TestGemCommandsInstallCommand < Gem::TestCase def test_execute_no_user_install skip 'skipped on MS Windows (chmod has no effect)' if win_platform? - skip 'skipped in root privilege' if Process.uid == 0 specs = spec_fetcher do |fetcher| fetcher.gem 'a', 2 @@ -132,7 +132,7 @@ class TestGemCommandsPushCommand < Gem::TestCase } FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path - open Gem.configuration.credentials_path, 'w' do |f| f.write keys.to_yaml end Gem.configuration.load_api_keys @@ -166,7 +166,7 @@ class TestGemCommandsPushCommand < Gem::TestCase } FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path - open Gem.configuration.credentials_path, 'w' do |f| f.write keys.to_yaml end Gem.configuration.load_api_keys @@ -193,7 +193,7 @@ class TestGemCommandsPushCommand < Gem::TestCase } FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path - open Gem.configuration.credentials_path, 'w' do |f| f.write keys.to_yaml end Gem.configuration.load_api_keys @@ -235,7 +235,7 @@ class TestGemCommandsPushCommand < Gem::TestCase } FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path - open Gem.configuration.credentials_path, 'w' do |f| f.write keys.to_yaml end Gem.configuration.load_api_keys @@ -266,7 +266,7 @@ class TestGemCommandsPushCommand < Gem::TestCase } FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path - open Gem.configuration.credentials_path, 'w' do |f| f.write keys.to_yaml end Gem.configuration.load_api_keys @@ -6,6 +6,8 @@ require 'rubygems/commands/setup_command' class TestGemCommandsSetupCommand < Gem::TestCase def setup super @@ -16,27 +18,27 @@ class TestGemCommandsSetupCommand < Gem::TestCase FileUtils.mkdir_p 'bin' FileUtils.mkdir_p 'lib/rubygems/ssl_certs/rubygems.org' - open 'bin/gem', 'w' do |io| io.puts '# gem' end - open 'lib/rubygems.rb', 'w' do |io| io.puts '# rubygems.rb' end - open 'lib/rubygems/test_case.rb', 'w' do |io| io.puts '# test_case.rb' end - open 'lib/rubygems/ssl_certs/rubygems.org/foo.pem', 'w' do |io| io.puts 'PEM' end FileUtils.mkdir_p 'bundler/exe' FileUtils.mkdir_p 'bundler/lib/bundler' - open 'bundler/exe/bundle', 'w' do |io| io.puts '# bundle' end - open 'bundler/lib/bundler.rb', 'w' do |io| io.puts '# bundler.rb' end - open 'bundler/lib/bundler/b.rb', 'w' do |io| io.puts '# b.rb' end FileUtils.mkdir_p 'default/gems' gemspec = Gem::Specification.new gemspec.name = "bundler" - gemspec.version = "1.16.0" gemspec.bindir = "exe" gemspec.executables = ["bundle"] - open 'bundler/bundler.gemspec', 'w' do |io| io.puts gemspec.to_ruby end @@ -46,6 +48,11 @@ class TestGemCommandsSetupCommand < Gem::TestCase end FileUtils.mkdir_p File.join(Gem.default_dir, "specifications") open(File.join(Gem.default_dir, "specifications", "bundler-audit-1.0.0.gemspec"), 'w') do |io| io.puts '# bundler-audit' end @@ -134,13 +141,25 @@ class TestGemCommandsSetupCommand < Gem::TestCase default_dir = Gem::Specification.default_specifications_dir refute_path_exists File.join(default_dir, "bundler-1.15.4.gemspec") - refute_path_exists 'default/gems/bundler-1.15.4' - - assert_path_exists File.join(default_dir, "bundler-1.16.0.gemspec") - assert_path_exists 'default/gems/bundler-1.16.0' assert_path_exists File.join(Gem.default_dir, "specifications", "bundler-audit-1.0.0.gemspec") assert_path_exists 'default/gems/bundler-audit-1.0.0' end if Gem::USE_BUNDLER_FOR_GEMDEPS @@ -162,14 +181,14 @@ class TestGemCommandsSetupCommand < Gem::TestCase FileUtils.mkdir_p lib_rubygems_defaults FileUtils.mkdir_p lib_bundler - open securerandom_rb, 'w' do |io| io.puts '# securerandom.rb' end - open old_builder_rb, 'w' do |io| io.puts '# builder.rb' end - open old_format_rb, 'w' do |io| io.puts '# format.rb' end - open old_bundler_c_rb, 'w' do |io| io.puts '# c.rb' end - open engine_defaults_rb, 'w' do |io| io.puts '# jruby.rb' end - open os_defaults_rb, 'w' do |io| io.puts '# operating_system.rb' end @cmd.remove_old_lib_files lib @@ -191,7 +210,7 @@ class TestGemCommandsSetupCommand < Gem::TestCase @cmd.options[:previous_version] = Gem::Version.new '2.0.2' - open 'History.txt', 'w' do |io| io.puts <<-History_txt # coding: UTF-8 @@ -92,7 +92,7 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase # Evil hack to prevent false removal success FileUtils.rm_f @executable - open @executable, "wb+" do |f| f.puts "binary" end @cmd.options[:executables] = true @cmd.options[:args] = [@spec.name] @@ -204,7 +204,7 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase end assert Gem::Specification.find_all_by_name('dep_x').length > 0 - assert Gem::Specification.find_all_by_name('x').length == 0 end def test_execute_all @@ -424,7 +424,7 @@ class TestGemDependencyInstaller < Gem::TestCase extconf_rb = File.join @gemhome, 'gems', 'e-1', 'extconf.rb' FileUtils.mkdir_p File.dirname extconf_rb - open extconf_rb, 'w' do |io| io.write <<-EXTCONF_RB require 'mkmf' create_makefile 'e' @@ -24,7 +24,7 @@ class TestGemDoctor < Gem::TestCase FileUtils.rm b.spec_file - open c.spec_file, 'w' do |io| io.write 'this will raise an exception when evaluated.' end @@ -77,7 +77,7 @@ Removed directory gems/c-2 FileUtils.rm b.spec_file - open c.spec_file, 'w' do |io| io.write 'this will raise an exception when evaluated.' end @@ -32,7 +32,7 @@ class TestGemExtBuilder < Gem::TestCase results = [] Dir.chdir @ext do - open 'Makefile', 'w' do |io| io.puts <<-MAKEFILE all: \t@#{Gem.ruby} -e "puts %Q{all: \#{ENV['DESTDIR']}}" @@ -72,7 +72,7 @@ install: results = [] Dir.chdir @ext do - open 'Makefile', 'w' do |io| io.puts <<-MAKEFILE all: \t@#{Gem.ruby} -e "puts %Q{all: \#{ENV['DESTDIR']}}" @@ -107,7 +107,7 @@ install: extconf_rb = File.join ext_dir, 'extconf.rb' - open extconf_rb, 'w' do |f| f.write <<-'RUBY' require 'mkmf' @@ -168,7 +168,7 @@ install: extconf_rb = File.join ext_dir, 'extconf.rb' - open extconf_rb, 'w' do |f| f.write <<-'RUBY' require 'mkmf' @@ -290,7 +290,7 @@ install: FileUtils.mkdir_p @spec.gem_dir - open File.join(@spec.gem_dir, "extconf.rb"), "w" do |f| f.write <<-'RUBY' puts "IN EXTCONF" extconf_args = File.join File.dirname(__FILE__), 'extconf_args' @@ -323,7 +323,7 @@ install: build_info_file = File.join build_info_dir, "#{@spec.full_name}.info" - open build_info_file, 'w' do |io| io.puts '--with-foo-dir=/nonexistent' end @@ -31,7 +31,7 @@ class TestGemGemcutterUtilities < Gem::TestCase FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path - open Gem.configuration.credentials_path, 'w' do |f| f.write keys.to_yaml end @@ -46,7 +46,7 @@ class TestGemGemcutterUtilities < Gem::TestCase keys = { :rubygems_api_key => 'KEY' } FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path - open Gem.configuration.credentials_path, 'w' do |f| f.write keys.to_yaml end @@ -59,7 +59,7 @@ class TestGemGemcutterUtilities < Gem::TestCase keys = { :rubygems_api_key => 'KEY', :other => 'OTHER' } FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path - open Gem.configuration.credentials_path, 'w' do |f| f.write keys.to_yaml end @@ -163,7 +163,7 @@ class TestGemGemcutterUtilities < Gem::TestCase other_api_key = 'f46dbb18bb6a9c97cdc61b5b85c186a17403cdcbf' FileUtils.mkdir_p File.dirname(Gem.configuration.credentials_path) - open Gem.configuration.credentials_path, 'w' do |f| f.write Hash[:other_api_key, other_api_key].to_yaml end util_sign_in [api_key, 200, 'OK'] @@ -39,8 +39,7 @@ class TestGemIndexer < Gem::TestCase def test_initialize assert_equal @tempdir, @indexer.dest_directory - assert_equal File.join(Dir.tmpdir, "gem_generate_index_#{$$}"), - @indexer.directory indexer = Gem::Indexer.new @tempdir assert indexer.build_modern @@ -141,7 +141,7 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase def test_user_install_disabled_read_only if win_platform? skip('test_user_install_disabled_read_only test skipped on MS Windows') - elsif Process.uid == 0 skip('test_user_install_disabled_read_only test skipped in root privilege') else @cmd.handle_options %w[--no-user-install] @@ -140,7 +140,7 @@ end s.require_path = 'lib' end - open File.join(util_inst_bindir, 'executable'), 'w' do |io| io.write <<-EXEC #!/usr/local/bin/ruby # @@ -437,7 +437,7 @@ gem 'other', version if win_platform? skip('test_generate_bin_script_no_perms skipped on MS Windows') - elsif Process.uid == 0 skip('test_generate_bin_script_no_perms skipped in root privilege') else FileUtils.chmod 0000, util_inst_bindir @@ -531,7 +531,7 @@ gem 'other', version if win_platform? skip('test_generate_bin_symlink_no_perms skipped on MS Windows') - elsif Process.uid == 0 skip('test_user_install_disabled_read_only test skipped in root privilege') else FileUtils.chmod 0000, util_inst_bindir @@ -24,7 +24,7 @@ class TestGemPackage < Gem::Package::TarTestCase end def test_class_new_old_format - open 'old_format.gem', 'wb' do |io| io.write SIMPLE_GEM end @@ -45,7 +45,7 @@ class TestGemPackage < Gem::Package::TarTestCase FileUtils.mkdir 'lib' - open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end @@ -110,8 +110,8 @@ class TestGemPackage < Gem::Package::TarTestCase FileUtils.mkdir_p 'lib/empty' - open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end - open 'lib/extra.rb', 'w' do |io| io.write '# lib/extra.rb' end package = Gem::Package.new 'bogus.gem' package.spec = spec @@ -140,7 +140,7 @@ class TestGemPackage < Gem::Package::TarTestCase spec.files = %w[lib/code.rb lib/code_sym.rb] FileUtils.mkdir_p 'lib' - open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end # NOTE: 'code.rb' is correct, because it's relative to lib/code_sym.rb File.symlink('code.rb', 'lib/code_sym.rb') @@ -179,7 +179,7 @@ class TestGemPackage < Gem::Package::TarTestCase FileUtils.mkdir 'lib' - open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end @@ -218,7 +218,7 @@ class TestGemPackage < Gem::Package::TarTestCase FileUtils.mkdir 'lib' - open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end @@ -261,7 +261,7 @@ class TestGemPackage < Gem::Package::TarTestCase FileUtils.mkdir 'lib' - open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end @@ -311,7 +311,7 @@ class TestGemPackage < Gem::Package::TarTestCase FileUtils.mkdir 'lib' - open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end @@ -348,7 +348,7 @@ class TestGemPackage < Gem::Package::TarTestCase FileUtils.mkdir 'lib' - open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end @@ -408,7 +408,7 @@ class TestGemPackage < Gem::Package::TarTestCase end end - open 'empty.gem', 'wb' do |io| io.write gem.string end @@ -620,7 +620,7 @@ class TestGemPackage < Gem::Package::TarTestCase end end - open 'mismatch.gem', 'wb' do |io| io.write gem.string end @@ -670,7 +670,7 @@ class TestGemPackage < Gem::Package::TarTestCase end end - open 'data_checksum_missing.gem', 'wb' do |io| io.write gem.string end @@ -773,7 +773,7 @@ class TestGemPackage < Gem::Package::TarTestCase FileUtils.mkdir 'lib' FileUtils.touch 'lib/code.rb' - open @gem, 'wb' do |gem_io| Gem::Package::TarWriter.new gem_io do |gem| build.add_metadata gem build.add_contents gem @@ -804,7 +804,7 @@ class TestGemPackage < Gem::Package::TarTestCase end def test_verify_truncate - open 'bad.gem', 'wb' do |io| io.write File.read(@gem, 1024) # don't care about newlines end @@ -7,7 +7,7 @@ class TestGemPackageOld < Gem::TestCase def setup super - open 'old_format.gem', 'wb' do |io| io.write SIMPLE_GEM end @@ -223,7 +223,7 @@ class TestGemRDoc < Gem::TestCase def test_remove_unwritable skip 'chmod not supported' if Gem.win_platform? - skip 'skipped in root privilege' if Process.uid == 0 FileUtils.mkdir_p @a.base_dir FileUtils.chmod 0, @a.base_dir @@ -252,7 +252,7 @@ class TestGemRDoc < Gem::TestCase def test_setup_unwritable skip 'chmod not supported' if Gem.win_platform? - skip 'skipped in root privilege' if Process.uid == 0 FileUtils.mkdir_p @a.doc_dir FileUtils.chmod 0, @a.doc_dir @@ -431,7 +431,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg== assert File.exist?(a1_cache_gem) end - unless win_platform? || Process.uid == 0 # File.chmod doesn't work def test_download_local_read_only FileUtils.mv @a1_gem, @tempdir local_path = File.join @tempdir, @a1.file_name @@ -52,7 +52,7 @@ class TestGemRequestSet < Gem::TestCase rs = Gem::RequestSet.new installed = [] - open 'gem.deps.rb', 'w' do |io| io.puts 'gem "a"' io.flush @@ -78,7 +78,7 @@ class TestGemRequestSet < Gem::TestCase rs = Gem::RequestSet.new - open 'gem.deps.rb', 'w' do |io| io.puts 'gem "a"' io.flush @@ -104,7 +104,7 @@ Gems to install: rs = Gem::RequestSet.new installed = [] - open 'gem.deps.rb', 'w' do |io| io.puts 'gem "a"' end @@ -128,7 +128,7 @@ Gems to install: rs = Gem::RequestSet.new - open 'gem.deps.rb', 'w' do |io| io.puts 'gem "a"' io.flush @@ -150,7 +150,7 @@ Gems to install: rs = Gem::RequestSet.new installed = [] - open 'gem.deps.rb.lock', 'w' do |io| io.puts <<-LOCKFILE GEM remote: #{@gem_repo} @@ -167,7 +167,7 @@ DEPENDENCIES LOCKFILE end - open 'gem.deps.rb', 'w' do |io| io.puts 'gem "b"' end @@ -190,7 +190,7 @@ DEPENDENCIES rs = Gem::RequestSet.new installed = [] - open 'gem.deps.rb', 'w' do |io| io.puts <<-GEM_DEPS gem "a" ruby "0" @@ -31,7 +31,7 @@ class TestGemRequestSetLockfile < Gem::TestCase def write_lockfile lockfile @lock_file = File.expand_path "#{@gem_deps_file}.lock" - open @lock_file, 'w' do |io| io.write lockfile end end @@ -387,7 +387,7 @@ DEPENDENCIES s.add_dependency 'c', '~> 1.0' end - open 'b.gemspec', 'w' do |io| io.write b.to_ruby end @@ -400,7 +400,7 @@ DEPENDENCIES Dir.chdir 'c' do c = Gem::Specification.new 'c', 1 - open 'c.gemspec', 'w' do |io| io.write c.to_ruby end @@ -455,7 +455,7 @@ DEPENDENCIES gem_deps_lock_file = "#{@gem_deps_file}.lock" - open gem_deps_lock_file, 'w' do |io| io.write 'hello' end @@ -536,7 +536,7 @@ DEPENDENCIES end def write_lockfile lockfile - open @lock_file, 'w' do |io| io.write lockfile end end @@ -295,7 +295,7 @@ GEM end def write_lockfile lockfile - open @lock_file, 'w' do |io| io.write lockfile end end @@ -70,7 +70,7 @@ class TestGemResolverGitSpecification < Gem::TestCase Dir.chdir 'git/a' do FileUtils.mkdir_p 'ext/lib' - open 'ext/extconf.rb', 'w' do |io| io.puts 'require "mkmf"' io.puts 'create_makefile "a"' end @@ -100,7 +100,7 @@ class TestGemServer < Gem::TestCase specs_dir = File.join dir, 'specifications' FileUtils.mkdir_p specs_dir - open File.join(specs_dir, spec.spec_name), 'w' do |io| io.write spec.to_ruby end @@ -198,7 +198,7 @@ class TestGemServer < Gem::TestCase FileUtils.mkdir_p specs_dir - open File.join(specs_dir, spec.spec_name), 'w' do |io| io.write spec.to_ruby end @@ -339,7 +339,7 @@ class TestGemServer < Gem::TestCase specs_dir = File.join dir, 'specifications' FileUtils.mkdir_p specs_dir - open File.join(specs_dir, spec.spec_name), 'w' do |io| io.write spec.to_ruby end @@ -378,7 +378,7 @@ class TestGemServer < Gem::TestCase specs_dir = File.join dir, 'specifications' FileUtils.mkdir_p specs_dir - open File.join(specs_dir, spec.spec_name), 'w' do |io| io.write spec.to_ruby end @@ -110,7 +110,7 @@ class TestGemSource < Gem::TestCase cache_file = File.join cache_dir, a1.spec_name - open cache_file, 'wb' do |io| Marshal.dump a1, io end @@ -163,7 +163,7 @@ class TestGemSource < Gem::TestCase cache_file = File.join cache_dir, "latest_specs.#{Gem.marshal_version}" - open cache_file, 'wb' do |io| Marshal.dump latest_specs, io end @@ -187,7 +187,7 @@ class TestGemSource < Gem::TestCase cache_file = File.join cache_dir, "latest_specs.#{Gem.marshal_version}" - open cache_file, 'wb' do |io| # Setup invalid data in the cache: io.write Marshal.dump(latest_specs)[0, 10] end @@ -229,7 +229,7 @@ class TestGemSourceGit < Gem::TestCase Dir.chdir 'b' do b = Gem::Specification.new 'b', 1 - open 'b.gemspec', 'w' do |io| io.write b.to_ruby end @@ -922,7 +922,7 @@ dependencies: [] end def test_self_load_relative - open 'a-2.gemspec', 'w' do |io| io.write @a2.to_ruby_for_cache end @@ -1114,7 +1114,7 @@ dependencies: [] end def test_self_remove_spec_removed - open @a1.spec_file, 'w' do |io| io.write @a1.to_ruby end @@ -1366,13 +1366,13 @@ dependencies: [] assert_empty @ext.build_args - open @ext.build_info_file, 'w' do |io| io.puts end assert_empty @ext.build_args - open @ext.build_info_file, 'w' do |io| io.puts '--with-foo-dir=wherever' end @@ -1388,9 +1388,9 @@ dependencies: [] extconf_rb = File.join @ext.gem_dir, @ext.extensions.first FileUtils.mkdir_p File.dirname extconf_rb - open extconf_rb, 'w' do |f| f.write <<-'RUBY' - open 'Makefile', 'w' do |f| f.puts "clean:\n\techo clean" f.puts "default:\n\techo built" f.puts "install:\n\techo installed" @@ -1438,9 +1438,9 @@ dependencies: [] extconf_rb = File.join spec.gem_dir, spec.extensions.first FileUtils.mkdir_p File.dirname extconf_rb - open extconf_rb, 'w' do |f| f.write <<-'RUBY' - open 'Makefile', 'w' do |f| f.puts "default:\n\techo built" f.puts "install:\n\techo installed" end @@ -1464,7 +1464,7 @@ dependencies: [] def test_build_extensions_extensions_dir_unwritable skip 'chmod not supported' if Gem.win_platform? - skip 'skipped in root privilege' if Process.uid == 0 ext_spec @@ -1473,9 +1473,9 @@ dependencies: [] extconf_rb = File.join @ext.gem_dir, @ext.extensions.first FileUtils.mkdir_p File.dirname extconf_rb - open extconf_rb, 'w' do |f| f.write <<-'RUBY' - open 'Makefile', 'w' do |f| f.puts "clean:\n\techo clean" f.puts "default:\n\techo built" f.puts "install:\n\techo installed" @@ -1490,7 +1490,7 @@ dependencies: [] @ext.build_extensions refute_path_exists @ext.extension_dir ensure - unless ($DEBUG or win_platform? or Process.uid == 0) then FileUtils.chmod 0755, File.join(@ext.base_dir, 'extensions') FileUtils.chmod 0755, @ext.base_dir end @@ -1506,9 +1506,9 @@ dependencies: [] extconf_rb = File.join @ext.gem_dir, @ext.extensions.first FileUtils.mkdir_p File.dirname extconf_rb - open extconf_rb, 'w' do |f| f.write <<-'RUBY' - open 'Makefile', 'w' do |f| f.puts "clean:\n\techo clean" f.puts "default:\n\techo built" f.puts "install:\n\techo installed" @@ -1555,9 +1555,9 @@ dependencies: [] extconf_rb = File.join @ext.gem_dir, @ext.extensions.first FileUtils.mkdir_p File.dirname extconf_rb - open extconf_rb, 'w' do |f| f.write <<-'RUBY' - open 'Makefile', 'w' do |f| f.puts "clean:\n\techo clean" f.puts "default:\n\techo built" f.puts "install:\n\techo installed" @@ -3422,9 +3422,9 @@ end extconf_rb = File.join @ext.gem_dir, @ext.extensions.first FileUtils.mkdir_p File.dirname extconf_rb - open extconf_rb, 'w' do |f| f.write <<-'RUBY' - open 'Makefile', 'w' do |f| f.puts "clean:\n\techo clean" f.puts "default:\n\techo built" f.puts "install:\n\techo installed" @@ -127,9 +127,9 @@ class TestStubSpecification < Gem::TestCase extconf_rb = File.join s.gem_dir, s.extensions.first FileUtils.mkdir_p File.dirname extconf_rb - open extconf_rb, 'w' do |f| f.write <<-'RUBY' - open 'Makefile', 'w' do |f| f.puts "clean:\n\techo clean" f.puts "default:\n\techo built" f.puts "install:\n\techo installed" @@ -149,7 +149,7 @@ class TestStubSpecification < Gem::TestCase spec = new_default_spec 'default', 1 spec.extensions << 'extconf.rb' - open spec.loaded_from, 'w' do |io| io.write spec.to_ruby_for_cache end @@ -198,7 +198,7 @@ class TestStubSpecification < Gem::TestCase def stub_with_version spec = File.join @gemhome, 'specifications', 'stub_e-2.gemspec' - open spec, 'w' do |io| io.write <<-STUB # -*- encoding: utf-8 -*- # stub: stub_v 2 ruby lib @@ -221,7 +221,7 @@ end def stub_without_version spec = File.join @gemhome, 'specifications', 'stub-2.gemspec' - open spec, 'w' do |io| io.write <<-STUB # -*- encoding: utf-8 -*- # stub: stub_v ruby lib @@ -245,7 +245,7 @@ end def stub_with_extension spec = File.join @gemhome, 'specifications', 'stub_e-2.gemspec' - open spec, 'w' do |io| io.write <<-STUB # -*- encoding: utf-8 -*- # stub: stub_e 2 ruby lib @@ -271,7 +271,7 @@ end def stub_without_extension spec = File.join @gemhome, 'specifications', 'stub-2.gemspec' - open spec, 'w' do |io| io.write <<-STUB # -*- encoding: utf-8 -*- # stub: stub 2 ruby lib @@ -5,7 +5,7 @@ require 'rubygems/util' class TestGemUtil < Gem::TestCase def test_class_popen - skip "MJIT executes process and it's caught by Process.wait(-1)" if RubyVM::MJIT.enabled? assert_equal "0\n", Gem::Util.popen(Gem.ruby, '-e', 'p 0') assert_raises Errno::ECHILD do @@ -30,6 +30,28 @@ class TestGemUtil < Gem::TestCase loop { break if enum.next.nil? } # exhaust the enumerator end def test_linked_list_find list = [1,2,3,4,5].inject(Gem::List.new(0)) { |m,o| Gem::List.new o, m @@ -2,6 +2,8 @@ require 'rubygems/test_case' require "rubygems/version" class TestGemVersion < Gem::TestCase class V < ::Gem::Version @@ -102,6 +104,15 @@ class TestGemVersion < Gem::TestCase end end def test_empty_version ["", " ", " "].each do |empty| assert_equal "0", Gem::Version.new(empty).version @@ -70,10 +70,12 @@ class TestGemRequire < Gem::TestCase def create_sync_thread Thread.new do - yield - ensure - FILE_ENTERED_LATCH.release - FILE_EXIT_LATCH.await end end @@ -100,8 +102,8 @@ class TestGemRequire < Gem::TestCase assert t1.join, "thread 1 should exit" assert t2.join, "thread 2 should exit" ensure - Object.send :remove_const, :FILE_ENTERED_LATCH - Object.send :remove_const, :FILE_EXIT_LATCH end def test_require_is_not_lazy_with_exact_req |