[前][次][番号順一覧][スレッド一覧]

ruby-changes:63844

From: Nobuyoshi <ko1@a...>
Date: Wed, 2 Dec 2020 19:11:58 +0900 (JST)
Subject: [ruby-changes:63844] 4e01ab342a (master): Revert "Removed deprecated Dir.exists? and File.exists?"

https://git.ruby-lang.org/ruby.git/commit/?id=4e01ab342a

From 4e01ab342a4b1478255eee09ddbb5e9fe46a88b9 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Wed, 2 Dec 2020 19:11:01 +0900
Subject: Revert "Removed deprecated Dir.exists? and File.exists?"

This reverts commit 1a5205536f0c0d6021450b11722919211847df86.

diff --git a/dir.c b/dir.c
index b4f73de..49e6818 100644
--- a/dir.c
+++ b/dir.c
@@ -3342,6 +3342,14 @@ rb_file_directory_p(void) https://github.com/ruby/ruby/blob/trunk/dir.c#L3342
 }
 #endif
 
+/* :nodoc: */
+static VALUE
+rb_dir_exists_p(VALUE obj, VALUE fname)
+{
+    rb_warn_deprecated("Dir.exists?", "Dir.exist?");
+    return rb_file_directory_p(obj, fname);
+}
+
 static void *
 nogvl_dir_empty_p(void *ptr)
 {
@@ -3470,6 +3478,7 @@ Init_Dir(void) https://github.com/ruby/ruby/blob/trunk/dir.c#L3478
     rb_define_singleton_method(rb_cDir,"home", dir_s_home, -1);
 
     rb_define_singleton_method(rb_cDir,"exist?", rb_file_directory_p, 1);
+    rb_define_singleton_method(rb_cDir,"exists?", rb_dir_exists_p, 1);
     rb_define_singleton_method(rb_cDir,"empty?", rb_dir_s_empty_p, 1);
 
     rb_define_singleton_method(rb_cFile,"fnmatch", file_s_fnmatch, -1);
diff --git a/file.c b/file.c
index c64ec8c..0c599b0 100644
--- a/file.c
+++ b/file.c
@@ -1787,6 +1787,23 @@ rb_file_exist_p(VALUE obj, VALUE fname) https://github.com/ruby/ruby/blob/trunk/file.c#L1787
     return Qtrue;
 }
 
+/* :nodoc: */
+static VALUE
+rb_file_exists_p(VALUE obj, VALUE fname)
+{
+    const char *s = "FileTest#exist?";
+    if (obj == rb_mFileTest) {
+	s = "FileTest.exist?";
+    }
+    else if (obj == rb_cFile ||
+	     (RB_TYPE_P(obj, T_CLASS) &&
+	      RTEST(rb_class_inherited_p(obj, rb_cFile)))) {
+	s = "File.exist?";
+    }
+    rb_warn_deprecated("%.*ss?", s, (int)(strlen(s)-1), s);
+    return rb_file_exist_p(obj, fname);
+}
+
 /*
  * call-seq:
  *    File.readable?(file_name)   -> true or false
@@ -6452,6 +6469,7 @@ Init_File(void) https://github.com/ruby/ruby/blob/trunk/file.c#L6469
 
     define_filetest_function("directory?", rb_file_directory_p, 1);
     define_filetest_function("exist?", rb_file_exist_p, 1);
+    define_filetest_function("exists?", rb_file_exists_p, 1);
     define_filetest_function("readable?", rb_file_readable_p, 1);
     define_filetest_function("readable_real?", rb_file_readable_real_p, 1);
     define_filetest_function("world_readable?", rb_file_world_readable_p, 1);
diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb
index c611afa..0333fd5 100644
--- a/test/ruby/test_exception.rb
+++ b/test/ruby/test_exception.rb
@@ -961,17 +961,13 @@ $stderr = $stdout; raise "\x82\xa0"') do |outs, errs, status| https://github.com/ruby/ruby/blob/trunk/test/ruby/test_exception.rb#L961
   end
 
   def test_warn_deprecated_backwards_compatibility_category
-    skip "no method to test"
-
-    warning = capture_warning_warn { }
+    warning = capture_warning_warn { Dir.exists?("non-existent") }
 
     assert_match(/deprecated/, warning[0])
   end
 
   def test_warn_deprecated_category
-    skip "no method to test"
-
-    warning = capture_warning_warn(category: true) { }
+    warning = capture_warning_warn(category: true) { Dir.exists?("non-existent") }
 
     assert_equal :deprecated, warning[0][1]
   end
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]