spec/em-systemcommand/pipe_spec.rb in em-systemcommand-0.0.2 vs spec/em-systemcommand/pipe_spec.rb in em-systemcommand-0.0.3

- old
+ new

@@ -1,9 +1,22 @@ require 'spec_helper' describe 'Pipe' do + context '#receive_data' do + it 'should correctly do a carriage return in the output buffer' do + EM.run do + EM::SystemCommand.new %q{ruby -e '$stdout.sync = true; print "12345\r"; puts "321"; print "123"; print "\r3210"; exit 0;'} do |on| + on.success do |process| + EM.stop_event_loop + process.stdout.output.should == "32145\n3210" + end + end + end + end + end + context '#data callback' do it 'should be called on data' do received = [] EM.run do @@ -56,11 +69,11 @@ end it 'should be called on carriage return' do received = [] EM.run do - EM::SystemCommand.new "echo -n \"123\r\"; echo -n \"456\r\"" do |on| + EM::SystemCommand.new %q{ruby -e '$stdout.sync = true; print "123\r"; print "456\r"; exit 0;'} do |on| on.stdout.line do |data| received << data end on.success do @@ -92,11 +105,11 @@ end it 'should be called on carriage return'do received = [] EM.run do - EM::SystemCommand.new %q{ruby -e '$stdout.sync = true; print "123\r"; print "456\r"; exit 0;'} do |on| + EM::SystemCommand.new %q{ruby -e '$stdout.sync = true; print "123\r"; sleep 0.1; print "456\r"; exit 0;'} do |on| on.stdout.update do |data| received << data end on.success do @@ -128,10 +141,10 @@ end it 'should match in output buffer on receive_update' do received = [] EM.run do - EM::SystemCommand.new %q{ruby -e '$stdout.sync = true; print "-123-\r"; print "-456-\r"; exit 0'} do |on| + EM::SystemCommand.new %q{ruby -e '$stdout.sync = true; print "-123-\r"; sleep 0.1; print "-456-\r"; exit 0'} do |on| on.stdout.match /-([0-9]+)-/, in: :output do |match, number| received << number end on.success do