diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:13:14 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:13:14 +0000 |
commit | d0233291bc8a5068e52c69c210e5979e5324b5bc (patch) | |
tree | 7d9459449c33792c63eeb7baa071e76352e0baab /trunk/lib/rubygems/test_utilities.rb | |
parent | 0dc342de848a642ecce8db697b8fecd83a63e117 (diff) | |
parent | 72eaacaa15256ab95c3b52ea386f88586fb9da40 (diff) |
re-adding tag v1_9_0_4 as an alias of trunk@18848v1_9_0_4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_0_4@18849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'trunk/lib/rubygems/test_utilities.rb')
-rw-r--r-- | trunk/lib/rubygems/test_utilities.rb | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/trunk/lib/rubygems/test_utilities.rb b/trunk/lib/rubygems/test_utilities.rb deleted file mode 100644 index e8709b9be3..0000000000 --- a/trunk/lib/rubygems/test_utilities.rb +++ /dev/null @@ -1,125 +0,0 @@ -require 'tempfile' -require 'rubygems' -require 'rubygems/remote_fetcher' - -## -# A fake Gem::RemoteFetcher for use in tests or to avoid real live HTTP -# requests when testing code that uses RubyGems. -# -# Example: -# -# @fetcher = Gem::FakeFetcher.new -# @fetcher.data['http://gems.example.com/yaml'] = source_index.to_yaml -# Gem::RemoteFetcher.fetcher = @fetcher -# -# # invoke RubyGems code -# -# paths = @fetcher.paths -# assert_equal 'http://gems.example.com/yaml', paths.shift -# assert paths.empty?, paths.join(', ') -# -# See RubyGems' tests for more examples of FakeFetcher. - -class Gem::FakeFetcher - - attr_reader :data - attr_accessor :paths - - def initialize - @data = {} - @paths = [] - end - - def fetch_path path, mtime = nil - path = path.to_s - @paths << path - raise ArgumentError, 'need full URI' unless path =~ %r'^http://' - data = @data[path] - - if data.nil? then - raise Gem::RemoteFetcher::FetchError.new('no data', path) - end - - if data.respond_to?(:call) then - data.call - else - data = Gem.gunzip data if path.to_s =~ /gz$/ unless data.empty? - data - end - end - - def fetch_size(path) - path = path.to_s - @paths << path - raise ArgumentError, 'need full URI' unless path =~ %r'^http://' - data = @data[path] - - if data.nil? then - raise Gem::RemoteFetcher::FetchError.new("no data for #{path}", nil) - end - - data.respond_to?(:call) ? data.call : data.length - end - - def download spec, source_uri, install_dir = Gem.dir - name = "#{spec.full_name}.gem" - path = File.join(install_dir, 'cache', name) - - Gem.ensure_gem_subdirectories install_dir - - if source_uri =~ /^http/ then - File.open(path, "wb") do |f| - f.write fetch_path(File.join(source_uri, "gems", name)) - end - else - FileUtils.cp source_uri, path - end - - path - end - -end - -# :stopdoc: -class Gem::RemoteFetcher - - def self.fetcher=(fetcher) - @fetcher = fetcher - end - -end -# :startdoc: - -## -# A StringIO duck-typed class that uses Tempfile instead of String as the -# backing store. -#-- -# This class was added to flush out problems in Rubinius' IO implementation. - -class TempIO - - @@count = 0 - - def initialize(string = '') - @tempfile = Tempfile.new "TempIO-#{@@count += 1}" - @tempfile.binmode - @tempfile.write string - @tempfile.rewind - end - - def method_missing(meth, *args, &block) - @tempfile.send(meth, *args, &block) - end - - def respond_to?(meth) - @tempfile.respond_to? meth - end - - def string - @tempfile.flush - - Gem.read_binary @tempfile.path - end - -end - |