1require 'rubygems/test_case' 2require 'rubygems/user_interaction' 3require 'timeout' 4 5class TestGemSilentUI < Gem::TestCase 6 7 def setup 8 super 9 @sui = Gem::SilentUI.new 10 end 11 12 def test_ask 13 value = nil 14 out, err = capture_io do 15 use_ui @sui do 16 value = @sui.ask 'Problem?' 17 end 18 end 19 20 assert_empty out, 'No output' 21 assert_empty err, 'No output' 22 23 assert_nil value, 'No value' 24 end 25 26 def test_ask_for_password 27 value = nil 28 out, err = capture_io do 29 use_ui @sui do 30 value = @sui.ask_for_password 'Problem?' 31 end 32 end 33 34 assert_empty out, 'No output' 35 assert_empty err, 'No output' 36 37 assert_nil value, 'No value' 38 end 39 40 def test_ask_yes_no 41 value = nil 42 out, err = capture_io do 43 use_ui @sui do 44 assert_raises(Gem::OperationNotSupportedError) do 45 @sui.ask_yes_no 'Problem?' 46 end 47 end 48 end 49 50 assert_empty out, 'No output' 51 assert_empty err, 'No output' 52 53 out, err = capture_io do 54 use_ui @sui do 55 value = @sui.ask_yes_no 'Problem?', true 56 end 57 end 58 59 assert_empty out, 'No output' 60 assert_empty err, 'No output' 61 62 assert value, 'Value is true' 63 64 out, err = capture_io do 65 use_ui @sui do 66 value = @sui.ask_yes_no 'Problem?', false 67 end 68 end 69 70 assert_empty out, 'No output' 71 assert_empty err, 'No output' 72 73 assert_equal value, false, 'Value is false' 74 end 75 76 def test_choose_from_list 77 value = nil 78 out, err = capture_io do 79 use_ui @sui do 80 value = @sui.choose_from_list 'Problem?', %w[yes no] 81 end 82 end 83 84 assert_empty out, 'No output' 85 assert_empty err, 'No output' 86 87 assert_equal [nil, nil], value, 'Value is nil!' 88 end 89 90 def test_progress_reporter 91 out, err = capture_io do 92 use_ui @sui do 93 @sui.progress_reporter 10, 'hi' 94 end 95 end 96 97 assert_empty out, 'No output' 98 assert_empty err, 'No output' 99 end 100 101 def test_download_reporter 102 out, err = capture_io do 103 use_ui @sui do 104 @sui.download_reporter.fetch 'a.gem', 1024 105 end 106 end 107 108 assert_empty out, 'No output' 109 assert_empty err, 'No output' 110 end 111end 112