| 
    
       require 'rubygems'
 
     | 
  
  
     | 
    
       require 'webrick'
 
     | 
  
  
     | 
    
       require 'rubygems/remote_fetcher'
 
     | 
  
  
     | 
    
       require 'rubygems/format'
 
     | 
  
  
     | 
    
       
     | 
  
  
     | 
    
         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')
 
     | 
  
  
     | 
    
       
     | 
  
  
     | 
    
       PROXY_PORT = 1234
 
     | 
  
  
     | 
    
       SERVER_PORT = 1345
 
     | 
  
  
     | 
    
       
     | 
  
  
     | 
    
       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
 
     | 
  
  
     | 
    
       
     | 
  
  
     | 
    
       def start_server(port, data)
 
     | 
  
  
     | 
    
         Thread.new do
 
     | 
  
  
     | 
    
           s = WEBrick::HTTPServer.new(
 
     | 
  
  
     | 
    
             :Port            => port,
 
     | 
  
  
     | 
    
             :DocumentRoot    => nil,
 
     | 
  
  
     | 
    
             )
 
     | 
  
  
     | 
    
           
 
     | 
  
  
     | 
    
           s.start
 
     | 
  
  
     | 
    
         end
 
     | 
  
  
     | 
    
       end
 
     | 
  
  
     | 
    
       
     | 
  
  
     | 
    
       def setup
 
     | 
  
  
     | 
    
         start_servers
 
     | 
  
  
     | 
    
         enable_yaml = true
 
     | 
  
  
     | 
    
         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"
 
     | 
  
  
     | 
    
        
 
     | 
  
  
     | 
    
         @fetcher = Gem::RemoteFetcher.fetcher
 
     | 
  
  
     | 
    
       end
 
     | 
  
  
     | 
    
       
     | 
  
  
     | 
    
       class Module
 
     | 
  
  
     | 
    
         def extend_object
 
     | 
  
  
     | 
    
           p 'extend_object'
 
     | 
  
  
     | 
    
         end
 
     | 
  
  
     | 
    
       end
 
     | 
  
  
     | 
    
       
     | 
  
  
     | 
    
       class IO
 
     | 
  
  
     | 
    
         remove_const(:WaitReadable)
 
     | 
  
  
     | 
    
       end
 
     | 
  
  
     | 
    
       
     | 
  
  
     | 
    
       setup
 
     | 
  
  
     | 
    
       
     | 
  
  
     | 
    
       ENV['http_proxy'] = @proxy_uri
 
     | 
  
  
     | 
    
       ENV['http_proxy_user'] = 'foo'
 
     | 
  
  
     | 
    
       ENV['http_proxy_pass'] = 'bar'
 
     | 
  
  
     | 
    
       fetcher = Gem::RemoteFetcher.new nil
 
     | 
  
  
     | 
    
       p fetcher.fetch_path(@server_uri)
 
     | 
  
  
     | 
    
       
     |