From 4e01ab342a4b1478255eee09ddbb5e9fe46a88b9 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 2 Dec 2020 19:11:01 +0900 Subject: Revert "Removed deprecated Dir.exists? and File.exists?" This reverts commit 1a5205536f0c0d6021450b11722919211847df86. --- dir.c | 9 +++++++++ file.c | 18 ++++++++++++++++++ test/ruby/test_exception.rb | 8 ++------ 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/dir.c b/dir.c index b4f73de0bb..49e6818d25 100644 --- a/dir.c +++ b/dir.c @@ -3342,6 +3342,14 @@ rb_file_directory_p(void) } #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) 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 c64ec8cf7f..0c599b0895 100644 --- a/file.c +++ b/file.c @@ -1787,6 +1787,23 @@ rb_file_exist_p(VALUE obj, VALUE fname) 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) 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 c611afa4f9..0333fd52ea 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| 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 v1.2.1