specinfra 2.56.0 → 2.56.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9429ca965d17ba4ca766d75e6839bf2741a24225
4
- data.tar.gz: 3b102cffe931678ad7bf622fe2fe42e73b6b4da9
3
+ metadata.gz: bf74716f2704ffcad67d6e36dcf2c6bb6f0c5707
4
+ data.tar.gz: f405ec5ca49edb1c800b7ba736bef4b3e2be22d1
5
5
  SHA512:
6
- metadata.gz: 5e7955571f708b9c474766f76fb88974f3b8a1d82595f03a1321638cc864f37e4badd4092d95180385524a6ded8a8d25d256446b0a2caa792e6f09b36a4ae902
7
- data.tar.gz: 54eff11f532dc35fd75278ff7f064916a68406835979a64da5ac5494be56f612033741fea6d2e5eca1613652864565792ab8f728ea7f8e679c22849d4cf234b1
6
+ metadata.gz: a6cc4ed26aed76e9a1279edaccff02cec490b441931f82cd565b0e79f682cc849bbbd7e4789e7f4f3724fe2a9f264bc80abf3d6829fb25c5a64e767aac8290b7
7
+ data.tar.gz: b5cbb014f685f4fcc8be9079f950e789fb4668ff02b3319c00db3c260548224d2259dea620df282b5d88c85ec67139af3dd633ccc22fb24ca0f937e628d84839
@@ -95,6 +95,21 @@ module Specinfra
95
95
  end
96
96
  rescue EOFError
97
97
  ensure
98
+ # Consume remained stdout and stderr from buffer
99
+ output.keys.each do |fd|
100
+ loop do
101
+ begin
102
+ out = fd.read_nonblock(4096)
103
+ output[fd] << out
104
+
105
+ handlers[fd].call(out) if handlers[fd]
106
+ rescue Errno::EAGAIN, EOFError
107
+ # Ruby 2.2 has more specific exception class IO::EAGAINWaitReadable
108
+ break
109
+ end
110
+ end
111
+ end
112
+
98
113
  stdout = output[out_r]
99
114
  stderr = output[err_r]
100
115
  quit_r.close unless quit_r.closed?
@@ -1,3 +1,3 @@
1
1
  module Specinfra
2
- VERSION = "2.56.0"
2
+ VERSION = "2.56.1"
3
3
  end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ context 'when executed process had exited before read stdout and stderr,' do
4
+ let(:backend) { Specinfra::Backend::Exec.new }
5
+
6
+ it 'can consume stdout and stderr from buffer' do
7
+ allow(IO).to receive(:select).and_wrap_original { |m, *args| sleep 1; m.call(*args) }
8
+ result = backend.run_command("ruby -e 'STDOUT.puts \"stdout\"; STDERR.puts \"stderr\"'")
9
+ expect(result.stdout.chomp).to eq('stdout')
10
+ expect(result.stderr.chomp).to eq('stderr')
11
+ end
12
+ end
13
+
14
+ context 'when executed process has exited between reading stdout and stderr,' do
15
+ let(:backend) { Specinfra::Backend::Exec.new }
16
+
17
+ it 'can consume stdout and stderr from buffer' do
18
+ backend.stdout_handler = proc { |o| sleep 1 }
19
+ result = backend.run_command("ruby -e 'STDOUT.puts \"stdout\"; STDOUT.close; STDERR.puts \"stderr\"'")
20
+ expect(result.stdout.chomp).to eq('stdout')
21
+ expect(result.stderr.chomp).to eq('stderr')
22
+ end
23
+ end
24
+
25
+ context 'Output of stderr_handler' do
26
+ let(:backend) { Specinfra::Backend::Exec.new }
27
+ subject(:stderr) do
28
+ allow(IO).to receive(:select).and_wrap_original { |m, *args| sleep 1; m.call(*args) }
29
+ err = ''
30
+ backend.stderr_handler = proc { |e| err += e }
31
+ backend.run_command('echo foo 1>&2')
32
+ err
33
+ end
34
+
35
+ it { expect(stderr).to eq "foo\n" }
36
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: specinfra
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.56.0
4
+ version: 2.56.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gosuke Miyashita
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-02 00:00:00.000000000 Z
11
+ date: 2016-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-scp
@@ -468,6 +468,7 @@ files:
468
468
  - lib/specinfra/version.rb
469
469
  - spec/backend/exec/build_command_spec.rb
470
470
  - spec/backend/exec/child_process_spec.rb
471
+ - spec/backend/exec/consume_exited_process_spec.rb
471
472
  - spec/backend/exec/env_spec.rb
472
473
  - spec/backend/exec/read_noblock_spec.rb
473
474
  - spec/backend/exec/stdxxx_handler_spec.rb
@@ -577,6 +578,7 @@ summary: Common layer for serverspec and itamae
577
578
  test_files:
578
579
  - spec/backend/exec/build_command_spec.rb
579
580
  - spec/backend/exec/child_process_spec.rb
581
+ - spec/backend/exec/consume_exited_process_spec.rb
580
582
  - spec/backend/exec/env_spec.rb
581
583
  - spec/backend/exec/read_noblock_spec.rb
582
584
  - spec/backend/exec/stdxxx_handler_spec.rb