specinfra 2.56.0 → 2.56.1

Sign up to get free protection for your applications and to get access to all the features.
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