Skip to content

Commit 57e4176

Browse files
deivid-rodriguezhsbt
authored andcommitted
[rubygems/rubygems] Fix test warnings introduced by recent CGI changes
They read like this: ``` /home/runner/work/rubygems/rubygems/bundler/tmp/gems/base/ruby/3.4.0/gems/cgi-0.5.0.beta2/lib/cgi/util.rb:13: warning: method redefined; discarding old rfc1123_date /opt/hostedtoolcache/Ruby/3.4.3/x64/lib/ruby/3.4.0/cgi/util.rb:225: warning: previous definition of rfc1123_date was here /home/runner/work/rubygems/rubygems/bundler/tmp/gems/base/ruby/3.4.0/gems/cgi-0.5.0.beta2/lib/cgi/util.rb:34: warning: method redefined; discarding old pretty /opt/hostedtoolcache/Ruby/3.4.3/x64/lib/ruby/3.4.0/cgi/util.rb:246: warning: previous definition of pretty was here /home/runner/work/rubygems/rubygems/bundler/tmp/gems/base/ruby/3.4.0/gems/cgi-0.5.0.beta2/lib/cgi/escape.rb:16: warning: method redefined; discarding old escape /home/runner/work/rubygems/rubygems/bundler/tmp/gems/base/ruby/3.4.0/gems/cgi-0.5.0.beta2/lib/cgi/escape.rb:29: warning: method redefined; discarding old unescape /home/runner/work/rubygems/rubygems/bundler/tmp/gems/base/ruby/3.4.0/gems/cgi-0.5.0.beta2/lib/cgi/util.rb:13: warning: method redefined; discarding old rfc1123_date /opt/hostedtoolcache/Ruby/3.4.3/x64/lib/ruby/3.4.0/cgi/util.rb:225: warning: previous definition of rfc1123_date was here /home/runner/work/rubygems/rubygems/bundler/tmp/gems/base/ruby/3.4.0/gems/cgi-0.5.0.beta2/lib/cgi/util.rb:34: warning: method redefined; discarding old pretty /opt/hostedtoolcache/Ruby/3.4.3/x64/lib/ruby/3.4.0/cgi/util.rb:246: warning: previous definition of pretty was here /home/runner/work/rubygems/rubygems/bundler/tmp/gems/base/ruby/3.4.0/gems/cgi-0.5.0.beta2/lib/cgi/escape.rb:16: warning: method redefined; discarding old escape /home/runner/work/rubygems/rubygems/bundler/tmp/gems/base/ruby/3.4.0/gems/cgi-0.5.0.beta2/lib/cgi/escape.rb:29: warning: method redefined; discarding old unescape ``` The problem is that `rspec` loads `erb` for its configuration, which loads `cgi/util` from system gems. Then our tests change the `$LOAD_PATH` to make test gems installed in tmp visible to `require`, and then they all require `cgi` as a transitive dependency of `rack-test`, this time from `tmp` gems. This causes system and test specific copies to be mixed together and these warnings to be printed, but we have also observed failures in some tests with errors like > class variable @@accept_charset of CGI::Util is overtaken by CGI::Escape This changes should also fix those failures. The fix is to require all of `rack-test` (including `cgi`) before we have changed the `$LOAD_PATH`. Because the `$LOAD_PATH` is unchanged, RubyGems respects the version of `cgi` activated by RSpec, avoiding the double loads. ruby/rubygems@34e75465c6
1 parent 0f867d9 commit 57e4176

File tree

5 files changed

+7
-7
lines changed

5 files changed

+7
-7
lines changed

spec/bundler/commands/ssl_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
RSpec.describe "bundle doctor ssl" do
1010
before(:each) do
11-
require_rack
11+
require_rack_test
1212
require_relative "../support/artifice/helpers/endpoint"
1313

1414
@dummy_endpoint = Class.new(Endpoint) do

spec/bundler/install/gems/dependency_api_fallback_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
RSpec.describe "gemcutter's dependency API" do
44
context "when Gemcutter API takes too long to respond" do
55
before do
6-
require_rack
6+
require_rack_test
77

88
port = find_unused_port
99
@server_uri = "http://127.0.0.1:#{port}"

spec/bundler/install/gems/gemfile_source_header_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
private
3232

3333
def setup_server
34-
require_rack
34+
require_rack_test
3535
@port = find_unused_port
3636
@server_uri = "http://127.0.0.1:#{@port}"
3737

spec/bundler/install/gems/mirror_probe_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
let(:host) { "127.0.0.1" }
88

99
before do
10-
require_rack
10+
require_rack_test
1111
setup_server
1212
setup_mirror
1313
end

spec/bundler/support/helpers.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -515,11 +515,11 @@ def with_env_vars(env_hash, &block)
515515
end
516516
end
517517

518-
def require_rack
519-
# need to hack, so we can require rack
518+
def require_rack_test
519+
# need to hack, so we can require rack for testing
520520
old_gem_home = ENV["GEM_HOME"]
521521
ENV["GEM_HOME"] = Spec::Path.base_system_gem_path.to_s
522-
require "rack"
522+
require "rack/test"
523523
ENV["GEM_HOME"] = old_gem_home
524524
end
525525

0 commit comments

Comments
 (0)