Updated RubySpec submodule to 9f66d0b1.
[rbx.git] / test / rubygems / test_gem_stream_ui.rb
bloba8564ba94fa648cc522d46050babf9964f2b51d9
1 require 'test/unit'
2 require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
3 require 'rubygems/user_interaction'
5 class TestGemStreamUI < RubyGemTestCase
7   module IsTty
8     attr_accessor :tty
10     def tty?
11       @tty = true unless defined? @tty
12       return @tty
13     end
15     alias_method :isatty, :tty?
16   end
18   def setup
19     super
21     @cfg = Gem.configuration
23     @in = StringIO.new
24     @out = StringIO.new
25     @err = StringIO.new
27     @in.extend IsTty
29     @sui = Gem::StreamUI.new @in, @out, @err
30   end
32   def test_ask
33     timeout(1) do
34       expected_answer = "Arthur, King of the Britons"
35       @in.string = "#{expected_answer}\n"
36       actual_answer = @sui.ask("What is your name?")
37       assert_equal expected_answer, actual_answer
38     end
39   end
41   def test_ask_no_tty
42     @in.tty = false
44     timeout(0.1) do
45       answer = @sui.ask("what is your favorite color?")
46       assert_equal nil, answer
47     end
48   end
50   def test_ask_yes_no_no_tty_with_default
51     @in.tty = false
53     timeout(0.1) do
54       answer = @sui.ask_yes_no("do coconuts migrate?", false)
55       assert_equal false, answer
57       answer = @sui.ask_yes_no("do coconuts migrate?", true)
58       assert_equal true, answer
59     end
60   end
62   def test_ask_yes_no_no_tty_without_default
63     @in.tty = false
65     timeout(0.1) do
66       assert_raises(Gem::OperationNotSupportedError) do
67         @sui.ask_yes_no("do coconuts migrate?")
68       end
69     end
70   end
72   def test_choose_from_list
73     @in.puts "1"
74     @in.rewind
76     result = @sui.choose_from_list 'which one?', %w[foo bar]
78     assert_equal ['foo', 0], result
79     assert_equal "which one?\n 1. foo\n 2. bar\n> ", @out.string
80   end
82   def test_choose_from_list_EOF
83     result = @sui.choose_from_list 'which one?', %w[foo bar]
85     assert_equal [nil, nil], result
86     assert_equal "which one?\n 1. foo\n 2. bar\n> ", @out.string
87   end
89   def test_proress_reporter_silent_nil
90     @cfg.verbose = nil
91     reporter = @sui.progress_reporter 10, 'hi'
92     assert_kind_of Gem::StreamUI::SilentProgressReporter, reporter
93   end
95   def test_proress_reporter_silent_false
96     @cfg.verbose = false
97     reporter = @sui.progress_reporter 10, 'hi'
98     assert_kind_of Gem::StreamUI::SilentProgressReporter, reporter
99     assert_equal "", @out.string
100   end
102   def test_proress_reporter_simple
103     @cfg.verbose = true
104     reporter = @sui.progress_reporter 10, 'hi'
105     assert_kind_of Gem::StreamUI::SimpleProgressReporter, reporter
106     assert_equal "hi\n", @out.string
107   end
109   def test_proress_reporter_verbose
110     @cfg.verbose = 0
111     reporter = @sui.progress_reporter 10, 'hi'
112     assert_kind_of Gem::StreamUI::VerboseProgressReporter, reporter
113     assert_equal "hi\n", @out.string
114   end