/tools/Ruby/lib/ruby/site_ruby/1.8/rubygems/mock_gem_ui.rb
http://github.com/agross/netopenspace · Ruby · 64 lines · 43 code · 18 blank · 3 comment · 1 complexity · 858ce5be55b8d66ce98f122e85bef1d2 MD5 · raw file
- 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; 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 unless status == 0
- raise SystemExitException, status
- end
- end