test/web_console/slave_test.rb in web-console-0.4.0 vs test/web_console/slave_test.rb in web-console-1.0.0

- old
+ new

@@ -1,53 +1,71 @@ require 'stringio' require 'test_helper' -class SlaveTest < ActiveSupport::TestCase - setup do - PTY.stubs(:spawn).returns([StringIO.new, StringIO.new, Random.rand(20000)]) - @slave = WebConsole::Slave.new - end +module WebConsole + class SlaveTest < ActiveSupport::TestCase + setup do + PTY.stubs(:spawn).returns([StringIO.new, StringIO.new, Random.rand(20000)]) + @slave = Slave.new + end - test '#send_input raises ArgumentError on bad input' do - assert_raises(ArgumentError) { @slave.send_input(nil) } - assert_raises(ArgumentError) { @slave.send_input('') } - end + test '#send_input raises ArgumentError on bad input' do + assert_raises(ArgumentError) { @slave.send_input(nil) } + assert_raises(ArgumentError) { @slave.send_input('') } + end - test '#pending_output returns nil on no pending output' do - @slave.stubs(:pending_output?).returns(false) - assert_nil @slave.pending_output - end + test '#pending_output returns nil on no pending output' do + @slave.stubs(:pending_output?).returns(false) + assert_nil @slave.pending_output + end - test '#pending_output returns a string with the current output' do - @slave.stubs(:pending_output?).returns(true) - @slave.instance_variable_get(:@output).stubs(:read_nonblock).returns('foo', nil) - assert_equal 'foo', @slave.pending_output - end + test '#pending_output returns a string with the current output' do + @slave.stubs(:pending_output?).returns(true) + @slave.instance_variable_get(:@output).stubs(:read_nonblock).returns('foo', nil) + assert_equal 'foo', @slave.pending_output + end - test '#pending_output always encodes output in UTF-8' do - @slave.stubs(:pending_output?).returns(true) - @slave.instance_variable_get(:@output).stubs(:read_nonblock).returns('foo', nil) - assert_equal Encoding::UTF_8, @slave.pending_output.encoding - end + test '#pending_output always encodes output in UTF-8' do + @slave.stubs(:pending_output?).returns(true) + @slave.instance_variable_get(:@output).stubs(:read_nonblock).returns('foo', nil) + assert_equal Encoding::UTF_8, @slave.pending_output.encoding + end - test '#configure changes @input dimentions' do - @slave.instance_variable_get(:@input).expects(:winsize=).with([32, 64]) - @slave.configure(height: 32, width: 64) - end + Slave::READING_ON_CLOSED_END_ERRORS.each do |exception| + test "#pending_output raises Slave::Closed when the end raises #{exception}" do + @slave.stubs(:pending_output?).returns(true) + @slave.instance_variable_get(:@output).stubs(:read_nonblock).raises(exception) - test '#configure only changes the @input dimentions if width is zero' do - @slave.instance_variable_get(:@input).expects(:winsize=).never - @slave.configure(height: 32, width: 0) - end + assert_raises(Slave::Closed) { @slave.pending_output } + end + end - test '#configure only changes the @input dimentions if height is zero' do - @slave.instance_variable_get(:@input).expects(:winsize=).never - @slave.configure(height: 0, width: 64) - end + test '#configure changes @input dimentions' do + @slave.instance_variable_get(:@input).expects(:winsize=).with([32, 64]) + @slave.configure(height: 32, width: 64) + end - { dispose: :SIGTERM, dispose!: :SIGKILL }.each do |method, signal| - test "##{method} sends #{signal} to the process and detaches it" do - Process.expects(:kill).with(signal, @slave.pid) - @slave.send(method) + test '#configure only changes the @input dimentions if width is zero' do + @slave.instance_variable_get(:@input).expects(:winsize=).never + @slave.configure(height: 32, width: 0) + end + + test '#configure only changes the @input dimentions if height is zero' do + @slave.instance_variable_get(:@input).expects(:winsize=).never + @slave.configure(height: 0, width: 64) + end + + { dispose: :SIGTERM, dispose!: :SIGKILL }.each do |method, signal| + test "##{method} sends #{signal} to the process and detaches it" do + Process.expects(:kill).with(signal, @slave.pid) + @slave.send(method) + end + + test "##{method} can reraise Errno::ESRCH if requested" do + Process.expects(:kill).with(signal, @slave.pid) + Process.stubs(:detach).raises(Errno::ESRCH) + + assert_raises(Errno::ESRCH) { @slave.send(method, raise: true) } + end end end end