summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2024-07-03 13:19:49 +0900
committergit <svn-admin@ruby-lang.org>2024-07-04 03:33:05 +0000
commitb3e53495bb3657f2d587ea6c3d41273885ee1095 (patch)
tree4af6cfc8c2e0ecbc58c51b1da0f7e3ea63e296d8
parent7e12b5e2acc87fb670d0525955a2fb18664bdb31 (diff)
[rubygems/rubygems] Cleanup needless code from HTTP/HTTPS tests
https://github.com/rubygems/rubygems/commit/69bd962b56
-rw-r--r--test/rubygems/test_gem_remote_fetcher_local_server.rb57
-rw-r--r--test/rubygems/test_gem_remote_fetcher_local_ssl_server.rb195
2 files changed, 36 insertions, 216 deletions
diff --git a/test/rubygems/test_gem_remote_fetcher_local_server.rb b/test/rubygems/test_gem_remote_fetcher_local_server.rb
index d315b520de..324cf89244 100644
--- a/test/rubygems/test_gem_remote_fetcher_local_server.rb
+++ b/test/rubygems/test_gem_remote_fetcher_local_server.rb
@@ -73,12 +73,14 @@ gems:
@proxies.each {|k| ENV[k] = nil }
super
- start_servers
+
+ @normal_server ||= start_server(SERVER_DATA)
+ @proxy_server ||= start_server(PROXY_DATA)
self.enable_yaml = true
self.enable_zip = false
- base_server_uri = "http://localhost:#{normal_server_port}"
- @proxy_uri = "http://localhost:#{proxy_server_port}"
+ base_server_uri = "http://localhost:#{@normal_server[:server].config[:Port]}"
+ @proxy_uri = "http://localhost:#{@proxy_server[:server].config[:Port]}"
@server_uri = base_server_uri + "/yaml"
@server_z_uri = base_server_uri + "/yaml.Z"
@@ -99,7 +101,17 @@ gems:
def teardown
@fetcher.close_all
- stop_servers
+
+ if @normal_server
+ @normal_server.kill.join
+ @normal_server = nil
+ end
+ if @proxy_server
+ @proxy_server.kill.join
+ @proxy_server = nil
+ end
+ WEBrick::Utils::TimeoutHandler.terminate
+
super
Gem.configuration[:http_proxy] = nil
@proxies.each_with_index {|k, i| ENV[k] = @old_proxies[i] }
@@ -176,6 +188,11 @@ gems:
end
end
+ private
+
+ attr_reader :normal_server, :proxy_server
+ attr_accessor :enable_zip, :enable_yaml
+
def assert_data_from_server(data)
assert_match(/0\.4\.11/, data, "Data is not from server")
end
@@ -189,38 +206,6 @@ gems:
end
end
- private
-
- attr_reader :normal_server, :proxy_server
- attr_accessor :enable_zip, :enable_yaml
-
- def start_servers
- @normal_server ||= start_server(SERVER_DATA)
- @proxy_server ||= start_server(PROXY_DATA)
- @enable_yaml = true
- @enable_zip = false
- end
-
- def stop_servers
- if @normal_server
- @normal_server.kill.join
- @normal_server = nil
- end
- if @proxy_server
- @proxy_server.kill.join
- @proxy_server = nil
- end
- WEBrick::Utils::TimeoutHandler.terminate
- end
-
- def normal_server_port
- @normal_server[:server].config[:Port]
- end
-
- def proxy_server_port
- @proxy_server[:server].config[:Port]
- end
-
def start_server(data)
null_logger = NilLog.new
s = WEBrick::HTTPServer.new(
diff --git a/test/rubygems/test_gem_remote_fetcher_local_ssl_server.rb b/test/rubygems/test_gem_remote_fetcher_local_ssl_server.rb
index e3021cebb5..5054f3c742 100644
--- a/test/rubygems/test_gem_remote_fetcher_local_ssl_server.rb
+++ b/test/rubygems/test_gem_remote_fetcher_local_ssl_server.rb
@@ -2,7 +2,6 @@
require_relative "helper"
-require "webrick"
require "webrick/https" if Gem::HAVE_OPENSSL
unless Gem::HAVE_OPENSSL
@@ -12,66 +11,9 @@ end
require "rubygems/remote_fetcher"
require "rubygems/package"
-# = 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 TestGemRemoteFetcherLocalSSLServer < Gem::TestCase
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
- description: Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax.
- autorequire:
- 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")
-
# Generated via:
# x = OpenSSL::PKey::DH.new(2048) # wait a while...
# x.to_s => pem
@@ -87,41 +29,24 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
_END_OF_PEM_
def setup
- @proxies = %w[https_proxy http_proxy HTTP_PROXY http_proxy_user HTTP_PROXY_USER http_proxy_pass HTTP_PROXY_PASS no_proxy NO_PROXY]
- @old_proxies = @proxies.map {|k| ENV[k] }
- @proxies.each {|k| ENV[k] = nil }
-
super
- start_servers
- self.enable_yaml = true
- self.enable_zip = false
-
- base_server_uri = "http://localhost:#{normal_server_port}"
- @proxy_uri = "http://localhost:#{proxy_server_port}"
-
- @server_uri = base_server_uri + "/yaml"
- @server_z_uri = base_server_uri + "/yaml.Z"
-
- @cache_dir = File.join @gemhome, "cache"
-
- # TODO: why does the remote fetcher need it written to disk?
- @a1, @a1_gem = util_gem "a", "1" do |s|
- s.executables << "a_bin"
- end
- @a1.loaded_from = File.join(@gemhome, "specifications", @a1.full_name)
-
- Gem::RemoteFetcher.fetcher = nil
- @stub_ui = Gem::MockGemUi.new
- @fetcher = Gem::RemoteFetcher.fetcher
+ @ssl_server = nil
+ @ssl_server_thread = nil
end
def teardown
- @fetcher.close_all
- stop_servers
+ if @ssl_server
+ @ssl_server.stop
+ @ssl_server = nil
+ end
+ if @ssl_server_thread
+ @ssl_server_thread.kill.join
+ @ssl_server_thread = nil
+ end
+ WEBrick::Utils::TimeoutHandler.terminate
+
super
- Gem.configuration[:http_proxy] = nil
- @proxies.each_with_index {|k, i| ENV[k] = @old_proxies[i] }
end
def test_ssl_connection
@@ -183,6 +108,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
end
def test_do_not_follow_insecure_redirect
+ @server_uri = "http://example.com"
ssl_server = start_ssl_server
temp_ca_cert = File.join(__dir__, "ca_cert.pem")
expected_error_message =
@@ -208,6 +134,8 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
end
end
+ private
+
def with_configured_fetcher(config_str = nil, &block)
if config_str
temp_conf = File.join @tempdir, ".gemrc"
@@ -223,61 +151,11 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
Gem.configuration = nil
end
- def assert_data_from_server(data)
- assert_match(/0\.4\.11/, data, "Data is not from server")
- end
-
- def assert_data_from_proxy(data)
- assert_match(/0\.4\.2/, data, "Data is not from proxy")
- end
-
class NilLog < WEBrick::Log
def log(level, data) # Do nothing
end
end
- private
-
- attr_reader :normal_server, :proxy_server
- attr_accessor :enable_zip, :enable_yaml
-
- def start_servers
- @normal_server ||= start_server(SERVER_DATA)
- @proxy_server ||= start_server(PROXY_DATA)
- @enable_yaml = true
- @enable_zip = false
- @ssl_server = nil
- @ssl_server_thread = nil
- end
-
- def stop_servers
- if @normal_server
- @normal_server.kill.join
- @normal_server = nil
- end
- if @proxy_server
- @proxy_server.kill.join
- @proxy_server = nil
- end
- if @ssl_server
- @ssl_server.stop
- @ssl_server = nil
- end
- if @ssl_server_thread
- @ssl_server_thread.kill.join
- @ssl_server_thread = nil
- end
- WEBrick::Utils::TimeoutHandler.terminate
- end
-
- def normal_server_port
- @normal_server[:server].config[:Port]
- end
-
- def proxy_server_port
- @proxy_server[:server].config[:Port]
- end
-
def start_ssl_server(config = {})
pend "starting this test server fails randomly on jruby" if Gem.java_platform?
@@ -320,49 +198,6 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
server
end
- def start_server(data)
- null_logger = NilLog.new
- s = WEBrick::HTTPServer.new(
- Port: 0,
- DocumentRoot: nil,
- Logger: null_logger,
- AccessLog: null_logger
- )
- s.mount_proc("/kill") {|_req, _res| s.shutdown }
- s.mount_proc("/yaml") do |req, res|
- if req["X-Captain"]
- res.body = req["X-Captain"]
- elsif @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
- end
- s.mount_proc("/yaml.Z") do |_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
- end
- th = Thread.new do
- s.start
- rescue StandardError => ex
- abort "ERROR during server thread: #{ex.message}"
- ensure
- s.shutdown
- end
- th[:server] = s
- th
- end
-
def cert(filename)
OpenSSL::X509::Certificate.new(File.read(File.join(__dir__, filename)))
end