posix-spawn 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/posix/spawn/child.rb +7 -2
- data/lib/posix/spawn/version.rb +1 -1
- data/test/test_child.rb +9 -0
- metadata +19 -3
data/lib/posix/spawn/child.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
require 'posix/spawn'
|
2
2
|
|
3
|
+
class String
|
4
|
+
alias bytesize size
|
5
|
+
end unless ''.respond_to?(:bytesize)
|
6
|
+
|
3
7
|
module POSIX
|
4
8
|
module Spawn
|
5
9
|
# POSIX::Spawn::Child includes logic for executing child processes and
|
@@ -142,6 +146,7 @@ module POSIX
|
|
142
146
|
# exceeds the amount specified by the max argument.
|
143
147
|
def read_and_write(input, stdin, stdout, stderr, timeout=nil, max=nil)
|
144
148
|
input ||= ''
|
149
|
+
input.force_encoding('BINARY') if input.respond_to?(:force_encoding)
|
145
150
|
max = nil if max && max <= 0
|
146
151
|
out, err = '', ''
|
147
152
|
offset = 0
|
@@ -162,11 +167,11 @@ module POSIX
|
|
162
167
|
begin
|
163
168
|
boom = nil
|
164
169
|
size = fd.write_nonblock(input)
|
165
|
-
input = input[size, input.
|
170
|
+
input = input[size, input.bytesize]
|
166
171
|
rescue Errno::EPIPE => boom
|
167
172
|
rescue Errno::EAGAIN, Errno::EINTR
|
168
173
|
end
|
169
|
-
if boom || input.
|
174
|
+
if boom || input.bytesize == 0
|
170
175
|
stdin.close
|
171
176
|
writers.delete(stdin)
|
172
177
|
end
|
data/lib/posix/spawn/version.rb
CHANGED
data/test/test_child.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# coding: UTF-8
|
2
|
+
|
1
3
|
require 'test/unit'
|
2
4
|
require 'posix-spawn'
|
3
5
|
|
@@ -104,4 +106,11 @@ class ChildTest < Test::Unit::TestCase
|
|
104
106
|
p = Child.new('false', :input => input)
|
105
107
|
assert !p.success?
|
106
108
|
end
|
109
|
+
|
110
|
+
def test_utf8_input
|
111
|
+
input = "hålø"
|
112
|
+
p = Child.new('cat', :input => input)
|
113
|
+
assert p.success?
|
114
|
+
assert_equal input, p.out
|
115
|
+
end
|
107
116
|
end
|
metadata
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: posix-spawn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 17
|
4
5
|
prerelease:
|
5
|
-
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
- 1
|
10
|
+
version: 0.3.1
|
6
11
|
platform: ruby
|
7
12
|
authors:
|
8
13
|
- Ryan Tomayko
|
@@ -11,7 +16,7 @@ autorequire:
|
|
11
16
|
bindir: bin
|
12
17
|
cert_chain: []
|
13
18
|
|
14
|
-
date: 2011-03-
|
19
|
+
date: 2011-03-05 00:00:00 -08:00
|
15
20
|
default_executable:
|
16
21
|
dependencies:
|
17
22
|
- !ruby/object:Gem::Dependency
|
@@ -22,6 +27,11 @@ dependencies:
|
|
22
27
|
requirements:
|
23
28
|
- - "="
|
24
29
|
- !ruby/object:Gem::Version
|
30
|
+
hash: 15
|
31
|
+
segments:
|
32
|
+
- 0
|
33
|
+
- 7
|
34
|
+
- 6
|
25
35
|
version: 0.7.6
|
26
36
|
type: :development
|
27
37
|
version_requirements: *id001
|
@@ -71,17 +81,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
71
81
|
requirements:
|
72
82
|
- - ">="
|
73
83
|
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 0
|
74
87
|
version: "0"
|
75
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
89
|
none: false
|
77
90
|
requirements:
|
78
91
|
- - ">="
|
79
92
|
- !ruby/object:Gem::Version
|
93
|
+
hash: 3
|
94
|
+
segments:
|
95
|
+
- 0
|
80
96
|
version: "0"
|
81
97
|
requirements: []
|
82
98
|
|
83
99
|
rubyforge_project:
|
84
|
-
rubygems_version: 1.
|
100
|
+
rubygems_version: 1.4.2
|
85
101
|
signing_key:
|
86
102
|
specification_version: 3
|
87
103
|
summary: posix_spawnp(2) for ruby
|