diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-08-03 02:14:51 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-08-03 02:14:51 +0000 |
commit | fdd2f6f2ac8af873a128f71520b51c9ed1f23053 (patch) | |
tree | 6333fe4b82ca513d3c33aebf183aec5086b5cef0 | |
parent | 0f571ba42760372f533d2d809653745edf826bde (diff) | |
download | ruby-fdd2f6f2ac8af873a128f71520b51c9ed1f23053.tar.gz |
dir.c: relax base option
* dir.c (dir_glob_options): relax base option. ignore when nil
or an empty string as :base option. [Feature #13056]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | dir.c | 3 | ||||
-rw-r--r-- | test/ruby/test_dir.rb | 3 |
2 files changed, 5 insertions, 1 deletions
@@ -2466,7 +2466,7 @@ dir_glob_options(VALUE opt, VALUE *base, int *flags) kw[0] = rb_intern("base"); if (flags) kw[1] = rb_intern("flags"); rb_get_kwargs(opt, kw, 0, flags ? 2 : 1, args); - if (args[0] == Qundef) { + if (args[0] == Qundef || NIL_P(args[0])) { *base = Qnil; } #if USE_OPENDIR_AT @@ -2476,6 +2476,7 @@ dir_glob_options(VALUE opt, VALUE *base, int *flags) #endif else { GlobPathValue(args[0], TRUE); + if (!RSTRING_LEN(args[0])) args[0] = Qnil; *base = args[0]; } if (flags && args[1] != Qundef) { diff --git a/test/ruby/test_dir.rb b/test/ruby/test_dir.rb index 9f8b8183dc..1c338030f3 100644 --- a/test/ruby/test_dir.rb +++ b/test/ruby/test_dir.rb @@ -206,6 +206,9 @@ class TestDir < Test::Unit::TestCase files = %w[a/foo.c c/bar.c] files.each {|n| File.write(File.join(@root, n), "")} assert_equal(files, Dir.glob("*/*.c", base: @root).sort) + assert_equal(files, Dir.chdir(@root) {Dir.glob("*/*.c", base: ".").sort}) + assert_equal(files, Dir.chdir(@root) {Dir.glob("*/*.c", base: "").sort}) + assert_equal(files, Dir.chdir(@root) {Dir.glob("*/*.c", base: nil).sort}) end def test_glob_base_dir |