diff options
Diffstat (limited to 'spec/ruby/core/dir/each_child_spec.rb')
| -rw-r--r-- | spec/ruby/core/dir/each_child_spec.rb | 94 |
1 files changed, 55 insertions, 39 deletions
diff --git a/spec/ruby/core/dir/each_child_spec.rb b/spec/ruby/core/dir/each_child_spec.rb index 93b4a1aec1..4d6575df39 100644 --- a/spec/ruby/core/dir/each_child_spec.rb +++ b/spec/ruby/core/dir/each_child_spec.rb @@ -10,6 +10,11 @@ describe "Dir.each_child" do DirSpecs.delete_mock_dirs end + it "accepts an encoding keyword for the encoding of the entries" do + dirs = Dir.each_child("#{DirSpecs.mock_dir}/deeply/nested", encoding: "utf-8").to_a.sort + dirs.each {|dir| dir.encoding.should == Encoding::UTF_8} + end + it "yields all names in an existing directory to the provided block" do a, b = [], [] @@ -31,12 +36,12 @@ describe "Dir.each_child" do end it "raises a SystemCallError if passed a nonexistent directory" do - -> { Dir.each_child(DirSpecs.nonexistent) {} }.should raise_error(SystemCallError) + -> { Dir.each_child(DirSpecs.nonexistent) {} }.should.raise(SystemCallError) end describe "when no block is given" do it "returns an Enumerator" do - Dir.each_child(DirSpecs.mock_dir).should be_an_instance_of(Enumerator) + Dir.each_child(DirSpecs.mock_dir).should.instance_of?(Enumerator) Dir.each_child(DirSpecs.mock_dir).to_a.sort.should == DirSpecs.expected_paths - %w[. ..] end @@ -50,52 +55,63 @@ describe "Dir.each_child" do end end -ruby_version_is "2.6" do - describe "Dir#each_child" do - before :all do - DirSpecs.create_mock_dirs - end +describe "Dir#each_child" do + before :all do + DirSpecs.create_mock_dirs + end - after :all do - DirSpecs.delete_mock_dirs - end + after :all do + DirSpecs.delete_mock_dirs + end - after :each do - @dir.close if @dir - end + after :each do + @dir.close if @dir + end - it "yields all names in an existing directory to the provided block" do - a, b = [], [] - @dir = Dir.new(DirSpecs.mock_dir) - @dir2 = Dir.new("#{DirSpecs.mock_dir}/deeply/nested") + it "yields all names in an existing directory to the provided block" do + a, b = [], [] + @dir = Dir.new(DirSpecs.mock_dir) + @dir2 = Dir.new("#{DirSpecs.mock_dir}/deeply/nested") - @dir.each_child { |f| a << f } - @dir2.each_child { |f| b << f } - @dir2.close + @dir.each_child { |f| a << f } + @dir2.each_child { |f| b << f } + @dir2.close - a.sort.should == DirSpecs.expected_paths - %w|. ..| - b.sort.should == %w|.dotfile.ext directory| - end + a.sort.should == DirSpecs.expected_paths - %w|. ..| + b.sort.should == %w|.dotfile.ext directory| + end - it "returns self when successful" do - @dir = Dir.new(DirSpecs.mock_dir) - @dir.each_child { |f| f }.should == @dir - end + it "returns self when successful" do + @dir = Dir.new(DirSpecs.mock_dir) + @dir.each_child { |f| f }.should == @dir + end - describe "when no block is given" do - it "returns an Enumerator" do - @dir = Dir.new(DirSpecs.mock_dir) + it "returns the same result when called repeatedly" do + @dir = Dir.open DirSpecs.mock_dir - @dir.each_child.should be_an_instance_of(Enumerator) - @dir.each_child.to_a.sort.should == DirSpecs.expected_paths - %w|. ..| - end + a = [] + @dir.each {|dir| a << dir} - describe "returned Enumerator" do - describe "size" do - it "should return nil" do - @dir = Dir.new(DirSpecs.mock_dir) - @dir.each_child.size.should == nil - end + b = [] + @dir.each {|dir| b << dir} + + a.sort.should == b.sort + a.sort.should == DirSpecs.expected_paths + end + + describe "when no block is given" do + it "returns an Enumerator" do + @dir = Dir.new(DirSpecs.mock_dir) + + @dir.each_child.should.instance_of?(Enumerator) + @dir.each_child.to_a.sort.should == DirSpecs.expected_paths - %w|. ..| + end + + describe "returned Enumerator" do + describe "size" do + it "should return nil" do + @dir = Dir.new(DirSpecs.mock_dir) + @dir.each_child.size.should == nil end end end |
