summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2019-08-19 07:25:07 +0900
committerGitHub <[email protected]>2019-08-19 07:25:07 +0900
commitfe8428b33bfb337dbaca4d0af917b386b550039f (patch)
tree96e26a3821d5c744a08a1633664ad0da21660237
parent1b9801a04b3182e702a21e1de1c83269e8e3224a (diff)
parent734a7f52a784ecaeb2ee78b93265eb7a1781f848 (diff)
downloadmruby-fe8428b33bfb337dbaca4d0af917b386b550039f.tar.gz
mruby-fe8428b33bfb337dbaca4d0af917b386b550039f.zip
Merge pull request #4642 from dearblue/unique-symlink
Make symbolic link names unique for test
-rw-r--r--mrbgems/mruby-io/test/file.rb2
-rw-r--r--mrbgems/mruby-io/test/mruby_io_test.c16
2 files changed, 17 insertions, 1 deletions
diff --git a/mrbgems/mruby-io/test/file.rb b/mrbgems/mruby-io/test/file.rb
index 1535ebb44..5f88bcee8 100644
--- a/mrbgems/mruby-io/test/file.rb
+++ b/mrbgems/mruby-io/test/file.rb
@@ -179,7 +179,7 @@ end
assert('File.symlink') do
target_name = "/usr/bin"
- symlink_name = "test-bin-dummy"
+ symlink_name = MRubyIOTestUtil.mktemp("test-bin-dummy-XXXXXXXX")
if !File.exist?(target_name)
skip("target directory of File.symlink is not found")
else
diff --git a/mrbgems/mruby-io/test/mruby_io_test.c b/mrbgems/mruby-io/test/mruby_io_test.c
index 2c8a75fc9..6d2941e41 100644
--- a/mrbgems/mruby-io/test/mruby_io_test.c
+++ b/mrbgems/mruby-io/test/mruby_io_test.c
@@ -44,6 +44,7 @@ mkdtemp(char *temp)
return path;
}
+#define mktemp(path) _mktemp(path)
#define umask(mode) _umask(mode)
#define rmdir(path) _rmdir(path)
#else
@@ -199,6 +200,20 @@ mrb_io_test_file_cleanup(mrb_state *mrb, mrb_value self)
}
static mrb_value
+mrb_io_test_mktemp(mrb_state *mrb, mrb_value klass)
+{
+ mrb_value str;
+ char *cp;
+
+ mrb_get_args(mrb, "S", &str);
+ cp = mrb_str_to_cstr(mrb, str);
+ if (mktemp(cp) == NULL) {
+ mrb_sys_fail(mrb, "mktemp");
+ }
+ return mrb_str_new_cstr(mrb, cp);
+}
+
+static mrb_value
mrb_io_test_mkdtemp(mrb_state *mrb, mrb_value klass)
{
mrb_value str;
@@ -248,6 +263,7 @@ mrb_mruby_io_gem_test(mrb_state* mrb)
mrb_define_class_method(mrb, io_test, "file_test_setup", mrb_io_test_file_setup, MRB_ARGS_NONE());
mrb_define_class_method(mrb, io_test, "file_test_cleanup", mrb_io_test_file_cleanup, MRB_ARGS_NONE());
+ mrb_define_class_method(mrb, io_test, "mktemp", mrb_io_test_mktemp, MRB_ARGS_REQ(1));
mrb_define_class_method(mrb, io_test, "mkdtemp", mrb_io_test_mkdtemp, MRB_ARGS_REQ(1));
mrb_define_class_method(mrb, io_test, "rmdir", mrb_io_test_rmdir, MRB_ARGS_REQ(1));
mrb_define_class_method(mrb, io_test, "win?", mrb_io_win_p, MRB_ARGS_NONE());