Skip to content

Commit c691b86

Browse files
committed
Fix ci build
1 parent d11e3e4 commit c691b86

2 files changed

Lines changed: 33 additions & 56 deletions

File tree

test/process.rb

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,25 @@
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+
2135
def read(path)
2236
f = File.open(path)
23-
f.read.to_s[0..-2]
37+
f.read.to_s.strip
2438
ensure
25-
f.close
39+
f.close if f
2640
end
2741

2842
def wait_for_pid(pid)
@@ -32,14 +46,6 @@ def wait_for_pid(pid)
3246
end
3347
end
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-
4349
def assert_not_windows(*args, &block)
4450
assert(*args, &block) if OS.posix?
4551
end
@@ -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)
126132
assert('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')
133139
end
134140

141+
# TODO: More tests for edge cases!
135142
assert('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')
258266
end

test/process_test.c

Lines changed: 11 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -20,56 +20,25 @@
2020
*/
2121

2222
#include "mruby.h"
23-
#include "mruby/string.h"
2423

2524
#if !defined(__APPLE__) && !defined(__linux__)
2625

27-
#include <sys/types.h>
28-
#include <errno.h>
29-
#include <unistd.h>
30-
31-
#include <winsock.h>
26+
#include "mruby/string.h"
27+
#include <windows.h>
3228
#include <io.h>
3329

34-
#include <sys/stat.h>
35-
#include <stdio.h>
36-
#include <stdlib.h>
37-
#include <dirent.h>
38-
39-
4030
static mrb_value
41-
mrb_io_test_sysopen(mrb_state *mrb, mrb_value self)
31+
mrb_process_mock_sysopen(mrb_state *mrb, mrb_value self)
4232
{
43-
mrb_value toReturn;
44-
DIR* dir = opendir("tmp");
45-
// FILE *fp;
46-
mrb_value file;
47-
HANDLE foo;
48-
49-
if (dir)
50-
{
51-
/* Directory exists. */
52-
closedir(dir);
53-
}
54-
else if (ENOENT == errno)
55-
{
56-
mkdir("tmp");
57-
}
58-
else
59-
{
60-
/* opendir() failed for some other reason. */
61-
}
62-
33+
mrb_int file_len, mod_len;
34+
char *file, *mod;
35+
HANDLE handle;
6336

64-
mrb_get_args(mrb, "S", &file);
37+
mrb_get_args(mrb, "ss", &file, &file_len, &mod, &mod_len);
6538

66-
// if( access( mrb_string_value_ptr(mrb,file), F_OK ) = -1 ) {
67-
// fp = fopen(mrb_string_value_ptr(mrb,file) ,"a");
68-
// fclose(fp);
69-
// }
39+
handle = (HANDLE) _get_osfhandle(fileno(fopen(file, mod)));
7040

71-
foo = (HANDLE)_get_osfhandle(fileno(fopen(mrb_string_value_ptr(mrb,file), "w")));
72-
return mrb_cptr_value(mrb,foo);
41+
return mrb_cptr_value(mrb, handle);
7342
}
7443

7544
#endif
@@ -78,8 +47,8 @@ mrb_io_test_sysopen(mrb_state *mrb, mrb_value self)
7847
void
7948
mrb_mruby_process_gem_test(mrb_state* mrb)
8049
{
81-
struct RClass *io_test = mrb_define_module(mrb, "ProcessTest");
50+
struct RClass *pt = mrb_define_module(mrb, "ProcessTest");
8251
#if !defined(__APPLE__) && !defined(__linux__)
83-
mrb_define_class_method(mrb, io_test, "sysopen", mrb_io_test_sysopen, MRB_ARGS_REQ(1));
52+
mrb_define_class_method(mrb, pt, "sysopen", mrb_process_mock_sysopen, MRB_ARGS_REQ(2));
8453
#endif
8554
}

0 commit comments

Comments
 (0)