specinfra 2.37.3 → 2.37.4

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: b7f05059b7054bc5fcb9c5458ccc852b10e7fd9a
4
- data.tar.gz: 7884725fe7da07f96078b4b6784bcb9f7647f14d
3
+ metadata.gz: f954e83409c50756d2719dd0b3dfbb3d5e2a546a
4
+ data.tar.gz: 271125a6999b22a34db25105a758607819f27634
5
5
  SHA512:
6
- metadata.gz: 2f62ce638f8898da682d2fe75eaaced5b5ee1de55eff032cc50c4dc97c78f253b0cb6fb3eaa3e222881dc97389129af01f12e192339e44fcd66a2db38e1986c3
7
- data.tar.gz: 1b5417957402247b243ded63ea65c45d6fca86c6c5602cce47ad97d86ff23b2b326ccdab78104ed055b76ea1efe8f35d23e668558778f1903237fa687ee6e1ed
6
+ metadata.gz: 1ac530ecba58a2c09e016d1479001dfcb7d557d01b590235f88f08920a70cb93b00a2fd825178f06101cc9a6f28ab622bd6bd95d819944a4f7dc120a03f116fa
7
+ data.tar.gz: 87d5af2f525c5242241d80b029e6668f6c4e0416d162f9a2624c7a6f1a7c82349981f8d885333e9de998d48428d502ec9970de50bbc24060b826f88305288a71
@@ -45,35 +45,48 @@ module Specinfra
45
45
  private
46
46
  def spawn_command(cmd)
47
47
  stdout, stderr = '', ''
48
-
49
48
  begin
50
49
  quit_r, quit_w = IO.pipe
51
50
  out_r, out_w = IO.pipe
52
51
  err_r, err_w = IO.pipe
53
52
 
54
53
  th = Thread.new do
54
+ output = {
55
+ quit_r => "",
56
+ out_r => "",
57
+ err_r => ""
58
+ }
59
+
60
+ handlers = {
61
+ quit_r => nil,
62
+ out_r => @stdout_handler,
63
+ err_r => @stderr_handler
64
+ }
65
+
55
66
  begin
56
67
  loop do
57
- readable_ios, = IO.select([quit_r, out_r, err_r])
58
-
59
- if readable_ios.include?(out_r)
60
- out = out_r.read_nonblock(4096)
61
- stdout += out
62
- @stdout_handler.call(out) if @stdout_handler
68
+ readable_ios, = IO.select(output.keys)
69
+
70
+ readable_ios.each do |fd|
71
+ loop do
72
+ begin
73
+ out = fd.read_nonblock(4096)
74
+ output[fd] << out
75
+
76
+ handlers[fd].call(out) if handlers[fd]
77
+ rescue Errno::EAGAIN
78
+ # Ruby 2.2 has more specific exception class IO::EAGAINWaitReadable
79
+ break
80
+ end
81
+ end
63
82
  end
64
83
 
65
- if readable_ios.include?(err_r)
66
- err = err_r.read_nonblock(4096)
67
- stderr += err
68
- @stderr_handler.call(err) if @stderr_handler
69
- end
70
-
71
- if readable_ios.include?(quit_r)
72
- break
73
- end
84
+ break unless output[quit_r].empty?
74
85
  end
75
86
  rescue EOFError
76
87
  ensure
88
+ stdout = output[out_r]
89
+ stderr = output[err_r]
77
90
  quit_r.close unless quit_r.closed?
78
91
  out_r.close unless out_r.closed?
79
92
  err_r.close unless err_r.closed?
@@ -1,3 +1,3 @@
1
1
  module Specinfra
2
- VERSION = "2.37.3"
2
+ VERSION = "2.37.4"
3
3
  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.37.3
4
+ version: 2.37.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gosuke Miyashita
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-11 00:00:00.000000000 Z
11
+ date: 2015-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-scp
@@ -572,3 +572,4 @@ test_files:
572
572
  - spec/host_inventory/openbsd/filesystem_spec.rb
573
573
  - spec/host_inventory/solaris/filesystem_spec.rb
574
574
  - spec/spec_helper.rb
575
+ has_rdoc: