summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authortakahashim <[email protected]>2015-12-06 00:07:16 +0900
committertakahashim <[email protected]>2015-12-08 00:29:42 +0900
commitdd754220ce2a53f8cf44362a2b2d1f59f40e62d5 (patch)
tree645df51d35e9932b74f6d8503c34a61670cff987 /test
parent68de1e4fc5a124689e3ad975172c77071e4e63dc (diff)
downloadmruby-dd754220ce2a53f8cf44362a2b2d1f59f40e62d5.tar.gz
mruby-dd754220ce2a53f8cf44362a2b2d1f59f40e62d5.zip
Fix for windows(mingw)
* File.expand_path: support drive letter and ALT_SEPARATOR * File.dirname: support ALT_SEPARATOR * File.basename: ditto. * IO.popen: raise NotImplementedError * IO.pipe: ditto. * `cmd`: ditto. * File#flock: ditto. * FileTest.pipe?: ditto. * FileTest.symlink?: ditto. * FileTest.socket?: ditto.
Diffstat (limited to 'test')
-rw-r--r--test/file.rb32
-rw-r--r--test/file_test.rb30
-rw-r--r--test/io.rb94
3 files changed, 97 insertions, 59 deletions
diff --git a/test/file.rb b/test/file.rb
index ef8be37ec..ebb515cbf 100644
--- a/test/file.rb
+++ b/test/file.rb
@@ -56,12 +56,16 @@ end
assert('IO#flock') do
f = File.open $mrbtest_io_rfname
- assert_equal(f.flock(File::LOCK_SH), 0)
- assert_equal(f.flock(File::LOCK_UN), 0)
- assert_equal(f.flock(File::LOCK_EX | File::LOCK_NB), 0)
- assert_equal(f.flock(File::LOCK_UN), 0)
- f.close
- true
+ begin
+ assert_equal(f.flock(File::LOCK_SH), 0)
+ assert_equal(f.flock(File::LOCK_UN), 0)
+ assert_equal(f.flock(File::LOCK_EX | File::LOCK_NB), 0)
+ assert_equal(f.flock(File::LOCK_UN), 0)
+ rescue NotImplementedError => e
+ skip e.message
+ ensure
+ f.close
+ end
end
assert('File.join') do
@@ -76,8 +80,13 @@ assert('File.join') do
end
assert('File.realpath') do
- usrbin = IO.popen("cd bin; /bin/pwd -P") { |f| f.read.chomp }
- assert_equal usrbin, File.realpath("bin")
+ if File.const_defined?(:ALT_SEPARATOR) && File::ALT_SEPARATOR
+ readme_path = File._getwd + File::ALT_SEPARATOR + "README.md"
+ assert_equal readme_path, File.realpath("README.md")
+ else
+ usrbin = IO.popen("cd bin; /bin/pwd -P") { |f| f.read.chomp }
+ assert_equal usrbin, File.realpath("bin")
+ end
end
assert('File TEST CLEANUP') do
@@ -95,7 +104,12 @@ assert('File.expand_path') do
assert_equal "/hoge", File.expand_path("////tmp/..///////hoge")
assert_equal "/", File.expand_path("../../../..", "/")
- assert_equal "/", File.expand_path(([".."] * 100).join("/"))
+ if File._getwd[1] == ":"
+ drive_letter = File._getwd[0]
+ assert_equal drive_letter + ":\\", File.expand_path(([".."] * 100).join("/"))
+ else
+ assert_equal "/", File.expand_path(([".."] * 100).join("/"))
+ end
end
assert('File.expand_path (with ENV)') do
diff --git a/test/file_test.rb b/test/file_test.rb
index 11742f2db..87db67954 100644
--- a/test/file_test.rb
+++ b/test/file_test.rb
@@ -6,8 +6,8 @@ assert('FileTest TEST SETUP') do
end
assert("FileTest.directory?") do
- assert_equal true, FileTest.directory?("/tmp")
- assert_equal false, FileTest.directory?("/bin/sh")
+ assert_equal true, FileTest.directory?(File.join(File._getwd, "mrblib"))
+ assert_equal false, FileTest.directory?(File.join(File._getwd, "README.md"))
end
assert("FileTest.exist?") do
@@ -23,14 +23,18 @@ assert("FileTest.exist?") do
end
assert("FileTest.file?") do
- assert_equal false, FileTest.file?("/tmp")
- assert_equal true, FileTest.file?("/bin/sh")
+ assert_equal false, FileTest.file?(File.join(File._getwd, "mrblib"))
+ assert_equal true, FileTest.file?(File.join(File._getwd, "README.md"))
end
assert("FileTest.pipe?") do
- io = IO.popen("ls")
- assert_equal true, FileTest.pipe?(io)
- assert_equal false, FileTest.pipe?("/tmp")
+ begin
+ assert_equal false, FileTest.pipe?("/tmp")
+ io = IO.popen("ls")
+ assert_equal true, FileTest.pipe?(io)
+ rescue NotImplementedError => e
+ skip e.message
+ end
end
assert('FileTest.size') do
@@ -61,11 +65,19 @@ assert("FileTest.size?") do
end
assert("FileTest.socket?") do
- assert_true FileTest.socket?($mrbtest_io_socketname)
+ begin
+ assert_true FileTest.socket?($mrbtest_io_socketname)
+ rescue NotImplementedError => e
+ skip e.message
+ end
end
assert("FileTest.symlink?") do
- assert_true FileTest.symlink?($mrbtest_io_symlinkname)
+ begin
+ assert_true FileTest.symlink?($mrbtest_io_symlinkname)
+ rescue NotImplementedError => e
+ skip e.message
+ end
end
assert("FileTest.zero?") do
diff --git a/test/io.rb b/test/io.rb
index 5104b343c..ee0432b14 100644
--- a/test/io.rb
+++ b/test/io.rb
@@ -359,15 +359,19 @@ assert('IO#gets - paragraph mode') do
end
assert('IO.popen') do
- io = IO.popen("ls")
- assert_true io.close_on_exec?
- assert_equal Fixnum, io.pid.class
- ls = io.read
- assert_equal ls.class, String
- assert_include ls, 'AUTHORS'
- assert_include ls, 'mrblib'
- io.close
- io.closed?
+ begin
+ io = IO.popen("ls")
+ assert_true io.close_on_exec?
+ assert_equal Fixnum, io.pid.class
+ ls = io.read
+ assert_equal ls.class, String
+ assert_include ls, 'AUTHORS'
+ assert_include ls, 'mrblib'
+ io.close
+ io.closed?
+ rescue NotImplementedError => e
+ skip e.message
+ end
end
assert('IO.read') do
@@ -450,43 +454,51 @@ assert('IO#sysseek') do
end
assert('IO.pipe') do
- called = false
- IO.pipe do |r, w|
- assert_true r.kind_of?(IO)
- assert_true w.kind_of?(IO)
- assert_false r.closed?
- assert_false w.closed?
- assert_true FileTest.pipe?(r)
- assert_true FileTest.pipe?(w)
- assert_nil r.pid
- assert_nil w.pid
- assert_true 2 < r.fileno
- assert_true 2 < w.fileno
- assert_true r.fileno != w.fileno
- assert_false r.sync
- assert_true w.sync
- assert_equal 8, w.write('test for')
- assert_equal 'test', r.read(4)
- assert_equal ' for', r.read(4)
- assert_equal 5, w.write(' pipe')
- assert_equal nil, w.close
- assert_equal ' pipe', r.read
- called = true
- assert_raise(IOError) { r.write 'test' }
- # TODO:
- # This assert expect raise IOError but got RuntimeError
- # Because mruby-io not have flag for I/O readable
- # assert_raise(IOError) { w.read }
- end
- assert_true called
+ begin
+ called = false
+ IO.pipe do |r, w|
+ assert_true r.kind_of?(IO)
+ assert_true w.kind_of?(IO)
+ assert_false r.closed?
+ assert_false w.closed?
+ assert_true FileTest.pipe?(r)
+ assert_true FileTest.pipe?(w)
+ assert_nil r.pid
+ assert_nil w.pid
+ assert_true 2 < r.fileno
+ assert_true 2 < w.fileno
+ assert_true r.fileno != w.fileno
+ assert_false r.sync
+ assert_true w.sync
+ assert_equal 8, w.write('test for')
+ assert_equal 'test', r.read(4)
+ assert_equal ' for', r.read(4)
+ assert_equal 5, w.write(' pipe')
+ assert_equal nil, w.close
+ assert_equal ' pipe', r.read
+ called = true
+ assert_raise(IOError) { r.write 'test' }
+ # TODO:
+ # This assert expect raise IOError but got RuntimeError
+ # Because mruby-io not have flag for I/O readable
+ # assert_raise(IOError) { w.read }
+ end
+ assert_true called
- assert_nothing_raised do
- IO.pipe { |r, w| r.close; w.close }
+ assert_nothing_raised do
+ IO.pipe { |r, w| r.close; w.close }
+ end
+ rescue NotImplementedError => e
+ skip e.message
end
end
assert('`cmd`') do
- assert_equal `echo foo`, "foo\n"
+ begin
+ assert_equal `echo foo`, "foo\n"
+ rescue NotImplementedError => e
+ skip e.message
+ end
end
assert('IO TEST CLEANUP') do