Skip to content

Commit 4a6fa17

Browse files
deivid-rodriguezhsbt
authored andcommitted
[rubygems/rubygems] Fix trailing slashes not considered when removing sources
ruby/rubygems@d86d9b3596
1 parent 6dcd100 commit 4a6fa17

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

lib/rubygems/commands/sources_command.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,10 @@ def execute
202202
end
203203

204204
def remove_source(source_uri) # :nodoc:
205-
if Gem.sources.include? source_uri
206-
Gem.sources.delete source_uri
205+
source = Gem::Source.new source_uri
206+
207+
if Gem.sources.include? source
208+
Gem.sources.delete source
207209
Gem.configuration.write
208210

209211
say "#{source_uri} removed from sources"

test/rubygems/test_gem_commands_sources_command.rb

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,32 @@ def test_execute_remove_not_present
428428
assert_equal "", @ui.error
429429
end
430430

431+
def test_execute_remove_redundant_source_trailing_slash
432+
repo_with_slash = "http://sample.repo/"
433+
434+
Gem.configuration.sources = [repo_with_slash]
435+
436+
setup_fake_source(repo_with_slash)
437+
438+
repo_without_slash = repo_with_slash.delete_suffix("/")
439+
440+
@cmd.handle_options %W[--remove #{repo_without_slash}]
441+
use_ui @ui do
442+
@cmd.execute
443+
end
444+
source = Gem::Source.new repo_without_slash
445+
assert_equal false, Gem.sources.include?(source)
446+
447+
expected = <<-EOF
448+
#{repo_without_slash} removed from sources
449+
EOF
450+
451+
assert_equal expected, @ui.output
452+
assert_equal "", @ui.error
453+
ensure
454+
Gem.configuration.sources = nil
455+
end
456+
431457
def test_execute_update
432458
@cmd.handle_options %w[--update]
433459

0 commit comments

Comments
 (0)