зеркало из https://github.com/github/ruby.git
[rubygems/rubygems] Boundary check in `Gem::StreamUI#choose_from_list`
https://github.com/rubygems/rubygems/commit/abacb0cb34
This commit is contained in:
Родитель
47c7c188e0
Коммит
f602cb55d7
|
@ -237,6 +237,7 @@ class Gem::StreamUI
|
|||
return nil, nil unless result
|
||||
|
||||
result = result.strip.to_i - 1
|
||||
return nil, nil unless (0...list.size) === result
|
||||
[list[result], result]
|
||||
end
|
||||
|
||||
|
|
|
@ -114,6 +114,36 @@ class TestGemStreamUI < Gem::TestCase
|
|||
assert_equal "which one?\n 1. foo\n 2. bar\n> ", @out.string
|
||||
end
|
||||
|
||||
def test_choose_from_list_0
|
||||
@in.puts "0"
|
||||
@in.rewind
|
||||
|
||||
result = @sui.choose_from_list "which one?", %w[foo bar]
|
||||
|
||||
assert_equal [nil, nil], result
|
||||
assert_equal "which one?\n 1. foo\n 2. bar\n> ", @out.string
|
||||
end
|
||||
|
||||
def test_choose_from_list_over
|
||||
@in.puts "3"
|
||||
@in.rewind
|
||||
|
||||
result = @sui.choose_from_list "which one?", %w[foo bar]
|
||||
|
||||
assert_equal [nil, nil], result
|
||||
assert_equal "which one?\n 1. foo\n 2. bar\n> ", @out.string
|
||||
end
|
||||
|
||||
def test_choose_from_list_negative
|
||||
@in.puts "-1"
|
||||
@in.rewind
|
||||
|
||||
result = @sui.choose_from_list "which one?", %w[foo bar]
|
||||
|
||||
assert_equal [nil, nil], result
|
||||
assert_equal "which one?\n 1. foo\n 2. bar\n> ", @out.string
|
||||
end
|
||||
|
||||
def test_progress_reporter_silent_nil
|
||||
@cfg.verbose = nil
|
||||
reporter = @sui.progress_reporter 10, "hi"
|
||||
|
|
Загрузка…
Ссылка в новой задаче