зеркало из 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
|
return nil, nil unless result
|
||||||
|
|
||||||
result = result.strip.to_i - 1
|
result = result.strip.to_i - 1
|
||||||
|
return nil, nil unless (0...list.size) === result
|
||||||
[list[result], result]
|
[list[result], result]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -114,6 +114,36 @@ class TestGemStreamUI < Gem::TestCase
|
||||||
assert_equal "which one?\n 1. foo\n 2. bar\n> ", @out.string
|
assert_equal "which one?\n 1. foo\n 2. bar\n> ", @out.string
|
||||||
end
|
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
|
def test_progress_reporter_silent_nil
|
||||||
@cfg.verbose = nil
|
@cfg.verbose = nil
|
||||||
reporter = @sui.progress_reporter 10, "hi"
|
reporter = @sui.progress_reporter 10, "hi"
|
||||||
|
|
Загрузка…
Ссылка в новой задаче