spec/em-systemcommand/pipe_spec.rb in em-systemcommand-2.0.0 vs spec/em-systemcommand/pipe_spec.rb in em-systemcommand-2.0.1
- old
+ new
@@ -1,8 +1,29 @@
require 'spec_helper'
describe 'Pipe' do
+ context 'parsing' do
+
+ it 'should handle carriage returns' do
+ cmd = EM::SystemCommand.new 'exit 0;'
+ pipe = EM::SystemCommand::Pipe.new(nil, cmd, :stdout)
+ pipe.receive_data "test\n"
+ pipe.receive_data " 32768 0% 0.00kB/s 0:00:00\r"
+ pipe.receive_data " 131235840 12% 125.12MB/s 0:00:06\r"
+ pipe.receive_data " 261619712 25% 124.80MB/s 0:00:05\r"
+ pipe.receive_data " 391544832 38% 124.54MB/s 0:00:04\r"
+ pipe.receive_data " 522616832 51% 124.69MB/s 0:00:03\r"
+ pipe.receive_data " 652738560 63% 124.43MB/s 0:00:02\r"
+ pipe.receive_data " 783056896 76% 124.41MB/s 0:00:01\r"
+ pipe.receive_data " 906657792 88% 122.90MB/s 0:00:00\r"
+ pipe.receive_data " 1024000000 100% 123.67MB/s 0:00:07 (xfer#1, to-check=0/1)\n"
+ pipe.receive_data "\n"
+ pipe.receive_data "sent 1024125065 bytes received 31 bytes 120485305.41 bytes/sec\ntotal size is 1024000000 speedup is 1.00\n"
+ pipe.output.should == "test\n 1024000000 100% 123.67MB/s 0:00:07 (xfer#1, to-check=0/1)\n\nsent 1024125065 bytes received 31 bytes 120485305.41 bytes/sec\ntotal size is 1024000000 speedup is 1.00\n"
+ end
+ end
+
context '#receive_data' do
it 'should correctly do a carriage return in the output buffer' do
EM.run do
EM::SystemCommand.execute %q{ruby -e '$stdout.sync = true; print "12345\r"; puts "321"; print "123"; print "\r3210"; exit 0;'} do |on|
on.success do |process|