summaryrefslogtreecommitdiff
path: root/ruby_1_9_3/lib/rubygems/mock_gem_ui.rb
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-05-14 11:27:23 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-05-14 11:27:23 +0000
commitaa6e98139c8e1ea442fb2182341aaa08ff55b529 (patch)
treea509eb830418991995bfe3b840d4bf270ff7f0e2 /ruby_1_9_3/lib/rubygems/mock_gem_ui.rb
parent9e9d191cf367caa17776231a2d0fad0da47b160a (diff)
add tag v1_9_3_426
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_3_426@40733 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby_1_9_3/lib/rubygems/mock_gem_ui.rb')
-rw-r--r--ruby_1_9_3/lib/rubygems/mock_gem_ui.rb71
1 files changed, 71 insertions, 0 deletions
diff --git a/ruby_1_9_3/lib/rubygems/mock_gem_ui.rb b/ruby_1_9_3/lib/rubygems/mock_gem_ui.rb
new file mode 100644
index 0000000000..13f0bf564b
--- /dev/null
+++ b/ruby_1_9_3/lib/rubygems/mock_gem_ui.rb
@@ -0,0 +1,71 @@
+require 'stringio'
+require 'rubygems/user_interaction'
+
+##
+# This Gem::StreamUI subclass records input and output to StringIO for
+# retrieval during tests.
+
+class Gem::MockGemUi < Gem::StreamUI
+ class TermError < RuntimeError
+ attr_reader :exit_code
+
+ def initialize exit_code
+ super
+ @exit_code = exit_code
+ end
+ end
+ class SystemExitException < RuntimeError; end
+
+ module TTY
+
+ attr_accessor :tty
+
+ def tty?()
+ @tty = true unless defined?(@tty)
+ @tty
+ end
+
+ def noecho
+ yield self
+ end
+ end
+
+ def initialize(input = "")
+ ins = StringIO.new input
+ outs = StringIO.new
+ errs = StringIO.new
+
+ ins.extend TTY
+ outs.extend TTY
+ errs.extend TTY
+
+ super ins, outs, errs, true
+
+ @terminated = false
+ end
+
+ def input
+ @ins.string
+ end
+
+ def output
+ @outs.string
+ end
+
+ def error
+ @errs.string
+ end
+
+ def terminated?
+ @terminated
+ end
+
+ def terminate_interaction(status=0)
+ @terminated = true
+
+ raise TermError, status if status != 0
+ raise SystemExitException
+ end
+
+end
+