1818# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1919# SOFTWARE.
2020
21+ class String
22+ def strip
23+ a = 0
24+ z = size - 1
25+ a += 1 while a <= z and " \f \n \r \t \v " . include? ( self [ a ] )
26+ z -= 1 while a <= z and " \f \n \r \t \v \0 " . include? ( self [ z ] )
27+ z >= 0 ? self [ a ..z ] : ''
28+ end
29+ end unless '' . respond_to? :strip
30+
31+ def IO . sysopen ( path , mod )
32+ ProcessTest . sysopen ( path , mod )
33+ end if OS . windows?
34+
2135def read ( path )
2236 f = File . open ( path )
23- f . read . to_s [ 0 ..- 2 ]
37+ f . read . to_s . strip
2438ensure
25- f . close
39+ f . close if f
2640end
2741
2842def wait_for_pid ( pid )
@@ -32,14 +46,6 @@ def wait_for_pid(pid)
3246 end
3347end
3448
35- if OS . windows?
36- class IO
37- def self . sysopen ( path , _mod )
38- ProcessTest . sysopen ( path )
39- end
40- end
41- end
42-
4349def assert_not_windows ( *args , &block )
4450 assert ( *args , &block ) if OS . posix?
4551end
@@ -117,7 +123,7 @@ def assert_windows(*args, &block)
117123 assert_equal $?. pid , pid
118124
119125 var = "#{ ENV [ 'RAND' ] } x"
120- pid = spawn ( "echo #{ var } > tmp/spawn.txt" )
126+ pid = spawn ( "echo #{ var } > tmp/spawn.txt" )
121127
122128 wait_for_pid ( pid )
123129 assert_equal var , read ( 'tmp/spawn.txt' )
@@ -126,12 +132,13 @@ def assert_windows(*args, &block)
126132assert ( 'Process.spawn' , 'env' ) do
127133 var = "x#{ ENV [ 'RAND' ] } "
128134 env = OS . posix? ? '$MYVAR' : '%MYVAR%'
129- pid = spawn ( { MYVAR : var } , "echo #{ env } > tmp/spawn.txt" )
135+ pid = spawn ( { MYVAR : var } , "echo #{ env } > tmp/spawn.txt" )
130136
131137 wait_for_pid ( pid )
132138 assert_equal var , read ( 'tmp/spawn.txt' )
133139end
134140
141+ # TODO: More tests for edge cases!
135142assert ( 'Process.spawn' , 'pipe' ) do
136143 begin
137144 var = ENV [ 'RAND' ]
@@ -145,7 +152,8 @@ def assert_windows(*args, &block)
145152 pid = spawn ( { MYVAR : var } , "echo #{ env } " , out : pip )
146153
147154 wait_for_pid ( pid )
148- assert_equal "#{ var } \n #{ var } " , read ( 'tmp/pipe.txt' )
155+
156+ assert_equal var * 2 , read ( 'tmp/pipe.txt' ) . sub ( "\r " , '' ) . sub ( "\n " , '' )
149157 ensure
150158 IO . _sysclose ( pip ) if OS . posix?
151159 end
@@ -252,7 +260,7 @@ def assert_windows(*args, &block)
252260 var = ENV [ 'RAND' ]
253261 env = OS . posix? ? '$MYVAR' : '%MYVAR%'
254262
255- system ( { MYVAR : var } , "echo #{ env } > tmp/system.txt" )
263+ system ( { MYVAR : var } , "echo #{ env } > tmp/system.txt" )
256264
257265 assert_equal var , read ( 'tmp/system.txt' )
258266end
0 commit comments