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 +4 -4
- data/lib/specinfra/backend/exec.rb +15 -0
- data/lib/specinfra/version.rb +1 -1
- data/spec/backend/exec/consume_exited_process_spec.rb +36 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf74716f2704ffcad67d6e36dcf2c6bb6f0c5707
|
4
|
+
data.tar.gz: f405ec5ca49edb1c800b7ba736bef4b3e2be22d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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?
|
data/lib/specinfra/version.rb
CHANGED
@@ -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.
|
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-
|
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
|