PHP 8.2.31
Preview: test_utilities.rb Size: 3.47 KB
/proc/thread-self/root/opt/alt/ruby19/lib64/ruby/1.9.1/rubygems/test_utilities.rb

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_reader :last_request
  attr_accessor :paths

  def initialize
    @data = {}
    @paths = []
  end

  def find_data(path)
    path = path.to_s
    @paths << path
    raise ArgumentError, 'need full URI' unless path =~ %r'^https?://'

    unless @data.key? path then
      raise Gem::RemoteFetcher::FetchError.new("no data for #{path}", path)
    end

    @data[path]
  end

  def fetch_path path, mtime = nil
    data = find_data(path)

    if data.respond_to?(:call) then
      data.call
    else
      if path.to_s =~ /gz$/ and not data.nil? and not data.empty? then
        data = Gem.gunzip data
      end

      data
    end
  end

  # Thanks, FakeWeb!
  def open_uri_or_path(path)
    data = find_data(path)
    body, code, msg = data

    response = Net::HTTPResponse.send(:response_class, code.to_s).new("1.0", code.to_s, msg)
    response.instance_variable_set(:@body, body)
    response.instance_variable_set(:@read, true)
    response
  end

  def request(uri, request_class, last_modified = nil)
    data = find_data(uri)
    body, code, msg = data

    @last_request = request_class.new uri.request_uri
    yield @last_request if block_given?

    response = Net::HTTPResponse.send(:response_class, code.to_s).new("1.0", code.to_s, msg)
    response.instance_variable_set(:@body, body)
    response.instance_variable_set(:@read, true)
    response
  end

  def fetch_size(path)
    path = path.to_s
    @paths << path

    raise ArgumentError, 'need full URI' unless path =~ %r'^http://'

    unless @data.key? path then
      raise Gem::RemoteFetcher::FetchError.new("no data for #{path}", path)
    end

    data = @data[path]

    data.respond_to?(:call) ? data.call : data.length
  end

  def download spec, source_uri, install_dir = Gem.dir
    name = File.basename spec.cache_file
    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

  def download_to_cache dependency
    found = Gem::SpecFetcher.fetcher.fetch dependency, true, true,
                                           dependency.prerelease?

    return if found.empty?

    spec, source_uri = found.first

    download spec, source_uri
  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 is available when rubygems/test_utilities is required.
#--
# This class was added to flush out problems in Rubinius' IO implementation.

class TempIO < Tempfile
  def initialize(string = '')
    super "TempIO"
    binmode
    write string
    rewind
  end

  def string
    flush
    Gem.read_binary path
  end
end

Directory Contents

Dirs: 4 × Files: 49

Name Size Perms Modified Actions
commands DIR
- drwxr-xr-x 2024-03-03 22:48:12
Edit Download
ext DIR
- drwxr-xr-x 2024-03-03 22:48:12
Edit Download
package DIR
- drwxr-xr-x 2024-03-03 22:48:12
Edit Download
ssl_certs DIR
- drwxr-xr-x 2024-03-03 22:48:12
Edit Download
2.21 KB lrw-r--r-- 2012-04-19 22:43:16
Edit Download
12.46 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
4.67 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
9.69 KB lrw-r--r-- 2012-04-19 23:38:41
Edit Download
1.83 KB lrw-r--r-- 2012-04-19 22:43:16
Edit Download
2.65 KB lrw-r--r-- 2012-04-19 22:43:16
Edit Download
6.43 KB lrw-r--r-- 2011-10-08 10:53:11
Edit Download
9.94 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
5.58 KB lrw-r--r-- 2011-10-08 10:53:11
Edit Download
1.81 KB lrw-r--r-- 2011-10-08 10:53:11
Edit Download
5.55 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
793 B lrw-r--r-- 2011-07-27 02:04:03
Edit Download
2.34 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
379 B lrw-r--r-- 2011-07-27 02:04:03
Edit Download
1.96 KB lrw-r--r-- 2012-04-19 22:43:16
Edit Download
1.86 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
2.24 KB lrw-r--r-- 2011-08-05 20:18:14
Edit Download
4.57 KB lrw-r--r-- 2011-10-08 10:53:11
Edit Download
2.38 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
16.85 KB lrw-r--r-- 2011-10-08 10:53:11
Edit Download
16.94 KB lrw-r--r-- 2012-10-25 09:18:59
Edit Download
3.10 KB lrw-r--r-- 2012-04-19 22:43:16
Edit Download
3.87 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
3.36 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
1.05 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
3.69 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
2.15 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
3.79 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
1.50 KB lrw-r--r-- 2011-08-26 01:12:57
Edit Download
5.55 KB lrw-r--r-- 2012-04-19 22:43:16
Edit Download
498 B lrw-r--r-- 2012-04-19 22:43:16
Edit Download
1.34 KB lrw-r--r-- 2012-04-19 22:43:16
Edit Download
13.50 KB lrw-r--r-- 2012-04-19 23:38:41
Edit Download
4.99 KB lrw-r--r-- 2012-04-19 22:43:16
Edit Download
577 B lrw-r--r-- 2011-07-27 02:04:03
Edit Download
28.83 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
21.93 KB lrw-r--r-- 2011-10-08 10:53:11
Edit Download
11.00 KB lrw-r--r-- 2011-10-08 10:53:11
Edit Download
54.68 KB lrw-r--r-- 2012-04-19 22:43:16
Edit Download
7.17 KB lrw-r--r-- 2012-04-19 22:43:16
Edit Download
3.96 KB lrw-r--r-- 2012-04-19 23:38:41
Edit Download
21.89 KB lrw-r--r-- 2012-04-19 22:43:16
Edit Download
3.47 KB lrw-r--r-- 2011-08-05 20:18:14
Edit Download
1.23 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
6.77 KB lrw-r--r-- 2011-07-27 03:42:40
Edit Download
11.22 KB lrw-r--r-- 2011-08-05 20:18:14
Edit Download
4.65 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download
10.18 KB lrw-r--r-- 2013-12-22 04:38:28
Edit Download
1.59 KB lrw-r--r-- 2011-07-27 02:04:03
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).