specinfra 2.37.3 → 2.37.4

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: 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: