diff options
Diffstat (limited to 'spec/ruby/core/argf')
43 files changed, 396 insertions, 442 deletions
diff --git a/spec/ruby/core/argf/argf_spec.rb b/spec/ruby/core/argf/argf_spec.rb index af67170b98..f9468539bb 100644 --- a/spec/ruby/core/argf/argf_spec.rb +++ b/spec/ruby/core/argf/argf_spec.rb @@ -2,10 +2,10 @@ require_relative '../../spec_helper' describe "ARGF" do it "is extended by the Enumerable module" do - ARGF.should be_kind_of(Enumerable) + ARGF.should.is_a?(Enumerable) end it "is an instance of ARGF.class" do - ARGF.should be_an_instance_of(ARGF.class) + ARGF.should.instance_of?(ARGF.class) end end diff --git a/spec/ruby/core/argf/argv_spec.rb b/spec/ruby/core/argf/argv_spec.rb index eab03c450f..77dfe78c21 100644 --- a/spec/ruby/core/argf/argv_spec.rb +++ b/spec/ruby/core/argf/argv_spec.rb @@ -7,7 +7,7 @@ describe "ARGF.argv" do end it "returns ARGV for the initial ARGF" do - ARGF.argv.should equal ARGV + ARGF.argv.should.equal? ARGV end it "returns the remaining arguments to treat" do diff --git a/spec/ruby/core/argf/binmode_spec.rb b/spec/ruby/core/argf/binmode_spec.rb index e083a30a27..5288e3199d 100644 --- a/spec/ruby/core/argf/binmode_spec.rb +++ b/spec/ruby/core/argf/binmode_spec.rb @@ -9,7 +9,7 @@ describe "ARGF.binmode" do it "returns self" do argf [@bin_file] do - @argf.binmode.should equal @argf + @argf.binmode.should.equal? @argf end end diff --git a/spec/ruby/core/argf/bytes_spec.rb b/spec/ruby/core/argf/bytes_spec.rb deleted file mode 100644 index 71d07fabcb..0000000000 --- a/spec/ruby/core/argf/bytes_spec.rb +++ /dev/null @@ -1,6 +0,0 @@ -require_relative '../../spec_helper' -require_relative 'shared/each_byte' - -describe "ARGF.bytes" do - it_behaves_like :argf_each_byte, :bytes -end diff --git a/spec/ruby/core/argf/chars_spec.rb b/spec/ruby/core/argf/chars_spec.rb deleted file mode 100644 index ee79ea763b..0000000000 --- a/spec/ruby/core/argf/chars_spec.rb +++ /dev/null @@ -1,6 +0,0 @@ -require_relative '../../spec_helper' -require_relative 'shared/each_char' - -describe "ARGF.chars" do - it_behaves_like :argf_each_char, :chars -end diff --git a/spec/ruby/core/argf/close_spec.rb b/spec/ruby/core/argf/close_spec.rb index d4d6a51e72..8ca7d71dc2 100644 --- a/spec/ruby/core/argf/close_spec.rb +++ b/spec/ruby/core/argf/close_spec.rb @@ -10,20 +10,20 @@ describe "ARGF.close" do argf [@file1_name, @file2_name] do io = @argf.to_io @argf.close - io.closed?.should be_true + io.closed?.should == true end end it "returns self" do argf [@file1_name, @file2_name] do - @argf.close.should equal(@argf) + @argf.close.should.equal?(@argf) end end it "doesn't raise an IOError if called on a closed stream" do argf [@file1_name] do - -> { @argf.close }.should_not raise_error - -> { @argf.close }.should_not raise_error + -> { @argf.close }.should_not.raise + -> { @argf.close }.should_not.raise end end end diff --git a/spec/ruby/core/argf/closed_spec.rb b/spec/ruby/core/argf/closed_spec.rb index e2dd6134e5..769381e8c3 100644 --- a/spec/ruby/core/argf/closed_spec.rb +++ b/spec/ruby/core/argf/closed_spec.rb @@ -11,7 +11,7 @@ describe "ARGF.closed?" do stream = @argf.to_io stream.close - @argf.closed?.should be_true + @argf.closed?.should == true stream.reopen(@argf.filename, 'r') end end diff --git a/spec/ruby/core/argf/codepoints_spec.rb b/spec/ruby/core/argf/codepoints_spec.rb deleted file mode 100644 index 7aa8a761fe..0000000000 --- a/spec/ruby/core/argf/codepoints_spec.rb +++ /dev/null @@ -1,6 +0,0 @@ -require_relative '../../spec_helper' -require_relative 'shared/each_codepoint' - -describe "ARGF.codepoints" do - it_behaves_like :argf_each_codepoint, :codepoints -end diff --git a/spec/ruby/core/argf/each_byte_spec.rb b/spec/ruby/core/argf/each_byte_spec.rb index c5cce9f250..d9e4e7fe5b 100644 --- a/spec/ruby/core/argf/each_byte_spec.rb +++ b/spec/ruby/core/argf/each_byte_spec.rb @@ -1,6 +1,60 @@ require_relative '../../spec_helper' -require_relative 'shared/each_byte' describe "ARGF.each_byte" do - it_behaves_like :argf_each_byte, :each_byte + before :each do + @file1_name = fixture __FILE__, "file1.txt" + @file2_name = fixture __FILE__, "file2.txt" + + @bytes = [] + File.read(@file1_name).each_byte { |b| @bytes << b } + File.read(@file2_name).each_byte { |b| @bytes << b } + end + + it "yields each byte of all streams to the passed block" do + argf [@file1_name, @file2_name] do + bytes = [] + @argf.each_byte { |b| bytes << b } + bytes.should == @bytes + end + end + + it "returns self when passed a block" do + argf [@file1_name, @file2_name] do + @argf.each_byte {}.should.equal?(@argf) + end + end + + it "returns an Enumerator when passed no block" do + argf [@file1_name, @file2_name] do + enum = @argf.each_byte + enum.should.instance_of?(Enumerator) + + bytes = [] + enum.each { |b| bytes << b } + bytes.should == @bytes + end + end + + describe "when no block is given" do + it "returns an Enumerator" do + argf [@file1_name, @file2_name] do + enum = @argf.each_byte + enum.should.instance_of?(Enumerator) + + bytes = [] + enum.each { |b| bytes << b } + bytes.should == @bytes + end + end + + describe "returned Enumerator" do + describe "size" do + it "should return nil" do + argf [@file1_name, @file2_name] do + @argf.each_byte.size.should == nil + end + end + end + end + end end diff --git a/spec/ruby/core/argf/each_char_spec.rb b/spec/ruby/core/argf/each_char_spec.rb index 724e5e6e3e..62d19b6574 100644 --- a/spec/ruby/core/argf/each_char_spec.rb +++ b/spec/ruby/core/argf/each_char_spec.rb @@ -1,6 +1,60 @@ require_relative '../../spec_helper' -require_relative 'shared/each_char' describe "ARGF.each_char" do - it_behaves_like :argf_each_char, :each_char + before :each do + @file1_name = fixture __FILE__, "file1.txt" + @file2_name = fixture __FILE__, "file2.txt" + + @chars = [] + File.read(@file1_name).each_char { |c| @chars << c } + File.read(@file2_name).each_char { |c| @chars << c } + end + + it "yields each char of all streams to the passed block" do + argf [@file1_name, @file2_name] do + chars = [] + @argf.each_char { |c| chars << c } + chars.should == @chars + end + end + + it "returns self when passed a block" do + argf [@file1_name, @file2_name] do + @argf.each_char {}.should.equal?(@argf) + end + end + + it "returns an Enumerator when passed no block" do + argf [@file1_name, @file2_name] do + enum = @argf.each_char + enum.should.instance_of?(Enumerator) + + chars = [] + enum.each { |c| chars << c } + chars.should == @chars + end + end + + describe "when no block is given" do + it "returns an Enumerator" do + argf [@file1_name, @file2_name] do + enum = @argf.each_char + enum.should.instance_of?(Enumerator) + + chars = [] + enum.each { |c| chars << c } + chars.should == @chars + end + end + + describe "returned Enumerator" do + describe "size" do + it "should return nil" do + argf [@file1_name, @file2_name] do + @argf.each_char.size.should == nil + end + end + end + end + end end diff --git a/spec/ruby/core/argf/each_codepoint_spec.rb b/spec/ruby/core/argf/each_codepoint_spec.rb index 0bf8bf9764..ad55785cba 100644 --- a/spec/ruby/core/argf/each_codepoint_spec.rb +++ b/spec/ruby/core/argf/each_codepoint_spec.rb @@ -1,6 +1,60 @@ require_relative '../../spec_helper' -require_relative 'shared/each_codepoint' describe "ARGF.each_codepoint" do - it_behaves_like :argf_each_codepoint, :each_codepoint + before :each do + file1_name = fixture __FILE__, "file1.txt" + file2_name = fixture __FILE__, "file2.txt" + @filenames = [file1_name, file2_name] + + @codepoints = File.read(file1_name).codepoints + @codepoints.concat File.read(file2_name).codepoints + end + + it "is a public method" do + argf @filenames do + @argf.public_methods(false).should.include?(:each_codepoint) + end + end + + it "does not require arguments" do + argf @filenames do + @argf.method(:each_codepoint).arity.should == 0 + end + end + + it "returns self when passed a block" do + argf @filenames do + @argf.each_codepoint {}.should.equal?(@argf) + end + end + + it "returns an Enumerator when passed no block" do + argf @filenames do + @argf.each_codepoint.should.instance_of?(Enumerator) + end + end + + it "yields each codepoint of all streams" do + argf @filenames do + @argf.each_codepoint.to_a.should == @codepoints + end + end + + describe "when no block is given" do + it "returns an Enumerator" do + argf @filenames do + @argf.each_codepoint.should.instance_of?(Enumerator) + end + end + + describe "returned Enumerator" do + describe "size" do + it "should return nil" do + argf @filenames do + @argf.each_codepoint.size.should == nil + end + end + end + end + end end diff --git a/spec/ruby/core/argf/each_line_spec.rb b/spec/ruby/core/argf/each_line_spec.rb index 52a7e5c411..fc4d6433b8 100644 --- a/spec/ruby/core/argf/each_line_spec.rb +++ b/spec/ruby/core/argf/each_line_spec.rb @@ -1,6 +1,64 @@ require_relative '../../spec_helper' -require_relative 'shared/each_line' describe "ARGF.each_line" do - it_behaves_like :argf_each_line, :each_line + before :each do + @file1_name = fixture __FILE__, "file1.txt" + @file2_name = fixture __FILE__, "file2.txt" + + @lines = File.readlines @file1_name + @lines += File.readlines @file2_name + end + + it "is a public method" do + argf [@file1_name, @file2_name] do + @argf.public_methods(false).should.include?(:each_line) + end + end + + it "requires multiple arguments" do + argf [@file1_name, @file2_name] do + @argf.method(:each_line).arity.should < 0 + end + end + + it "reads each line of files" do + argf [@file1_name, @file2_name] do + lines = [] + @argf.each_line { |b| lines << b } + lines.should == @lines + end + end + + it "returns self when passed a block" do + argf [@file1_name, @file2_name] do + @argf.each_line {}.should.equal?(@argf) + end + end + + describe "with a separator" do + it "yields each separated section of all streams" do + argf [@file1_name, @file2_name] do + @argf.send(:each_line, '.').to_a.should == + (File.readlines(@file1_name, '.') + File.readlines(@file2_name, '.')) + end + end + end + + describe "when no block is given" do + it "returns an Enumerator" do + argf [@file1_name, @file2_name] do + @argf.each_line.should.instance_of?(Enumerator) + end + end + + describe "returned Enumerator" do + describe "size" do + it "should return nil" do + argf [@file1_name, @file2_name] do + @argf.each_line.size.should == nil + end + end + end + end + end end diff --git a/spec/ruby/core/argf/each_spec.rb b/spec/ruby/core/argf/each_spec.rb index 5742ba43bd..25f60b31d2 100644 --- a/spec/ruby/core/argf/each_spec.rb +++ b/spec/ruby/core/argf/each_spec.rb @@ -1,6 +1,7 @@ require_relative '../../spec_helper' -require_relative 'shared/each_line' describe "ARGF.each" do - it_behaves_like :argf_each_line, :each + it "is an alias of ARGF.each_line" do + ARGF.method(:each).should == ARGF.method(:each_line) + end end diff --git a/spec/ruby/core/argf/eof_spec.rb b/spec/ruby/core/argf/eof_spec.rb index 518f6e566e..940d104d69 100644 --- a/spec/ruby/core/argf/eof_spec.rb +++ b/spec/ruby/core/argf/eof_spec.rb @@ -1,10 +1,32 @@ require_relative '../../spec_helper' -require_relative 'shared/eof' describe "ARGF.eof" do - it_behaves_like :argf_eof, :eof + it "is an alias of ARGF.eof?" do + ARGF.method(:eof).should == ARGF.method(:eof?) + end end describe "ARGF.eof?" do - it_behaves_like :argf_eof, :eof? + before :each do + @file1 = fixture __FILE__, "file1.txt" + @file2 = fixture __FILE__, "file2.txt" + end + + # NOTE: this test assumes that fixtures files have two lines each + it "returns true when reaching the end of a file" do + argf [@file1, @file2] do + result = [] + while @argf.gets + result << @argf.eof? + end + result.should == [false, true, false, true] + end + end + + it "raises IOError when called on a closed stream" do + argf [@file1] do + @argf.read + -> { @argf.eof? }.should.raise(IOError) + end + end end diff --git a/spec/ruby/core/argf/filename_spec.rb b/spec/ruby/core/argf/filename_spec.rb index 7c0446269d..f4b6e922c6 100644 --- a/spec/ruby/core/argf/filename_spec.rb +++ b/spec/ruby/core/argf/filename_spec.rb @@ -1,6 +1,30 @@ require_relative '../../spec_helper' -require_relative 'shared/filename' describe "ARGF.filename" do - it_behaves_like :argf_filename, :filename + before :each do + @file1 = fixture __FILE__, "file1.txt" + @file2 = fixture __FILE__, "file2.txt" + end + + # NOTE: this test assumes that fixtures files have two lines each + it "returns the current file name on each file" do + argf [@file1, @file2] do + result = [] + # returns first current file even when not yet open + result << @argf.filename + result << @argf.filename while @argf.gets + # returns last current file even when closed + result << @argf.filename + + result.map! { |f| File.expand_path(f) } + result.should == [@file1, @file1, @file1, @file2, @file2, @file2] + end + end + + # NOTE: this test assumes that fixtures files have two lines each + it "sets the $FILENAME global variable with the current file name on each file" do + script = fixture __FILE__, "filename.rb" + out = ruby_exe(script, args: [@file1, @file2]) + out.should == "#{@file1}\n#{@file1}\n#{@file2}\n#{@file2}\n#{@file2}\n" + end end diff --git a/spec/ruby/core/argf/fileno_spec.rb b/spec/ruby/core/argf/fileno_spec.rb index 29d50c3582..99245f043c 100644 --- a/spec/ruby/core/argf/fileno_spec.rb +++ b/spec/ruby/core/argf/fileno_spec.rb @@ -1,6 +1,26 @@ require_relative '../../spec_helper' -require_relative 'shared/fileno' describe "ARGF.fileno" do - it_behaves_like :argf_fileno, :fileno + before :each do + @file1 = fixture __FILE__, "file1.txt" + @file2 = fixture __FILE__, "file2.txt" + end + + # NOTE: this test assumes that fixtures files have two lines each + it "returns the current file number on each file" do + argf [@file1, @file2] do + result = [] + # returns first current file even when not yet open + result << @argf.fileno while @argf.gets + # returns last current file even when closed + result.map { |d| d.class }.should == [Integer, Integer, Integer, Integer] + end + end + + it "raises an ArgumentError when called on a closed stream" do + argf [@file1] do + @argf.read + -> { @argf.fileno }.should.raise(ArgumentError) + end + end end diff --git a/spec/ruby/core/argf/inspect_spec.rb b/spec/ruby/core/argf/inspect_spec.rb new file mode 100644 index 0000000000..df0e3ba8dc --- /dev/null +++ b/spec/ruby/core/argf/inspect_spec.rb @@ -0,0 +1,7 @@ +require_relative '../../spec_helper' + +describe "ARGF.inspect" do + it "is an alias of ARGF.to_s" do + ARGF.method(:inspect).should == ARGF.method(:to_s) + end +end diff --git a/spec/ruby/core/argf/lines_spec.rb b/spec/ruby/core/argf/lines_spec.rb deleted file mode 100644 index 6ca6ff1256..0000000000 --- a/spec/ruby/core/argf/lines_spec.rb +++ /dev/null @@ -1,6 +0,0 @@ -require_relative '../../spec_helper' -require_relative 'shared/each_line' - -describe "ARGF.lines" do - it_behaves_like :argf_each_line, :lines -end diff --git a/spec/ruby/core/argf/path_spec.rb b/spec/ruby/core/argf/path_spec.rb index 7120f7d0e3..2f7b91999f 100644 --- a/spec/ruby/core/argf/path_spec.rb +++ b/spec/ruby/core/argf/path_spec.rb @@ -1,6 +1,7 @@ require_relative '../../spec_helper' -require_relative 'shared/filename' describe "ARGF.path" do - it_behaves_like :argf_filename, :path + it "is an alias of ARGF.filename" do + ARGF.method(:path).should == ARGF.method(:filename) + end end diff --git a/spec/ruby/core/argf/pos_spec.rb b/spec/ruby/core/argf/pos_spec.rb index fb3f25b945..1ff16e4f17 100644 --- a/spec/ruby/core/argf/pos_spec.rb +++ b/spec/ruby/core/argf/pos_spec.rb @@ -1,8 +1,35 @@ require_relative '../../spec_helper' -require_relative 'shared/pos' describe "ARGF.pos" do - it_behaves_like :argf_pos, :pos + before :each do + @file1 = fixture __FILE__, "file1.txt" + @file2 = fixture __FILE__, "file2.txt" + end + + it "gives the correct position for each read operation" do + argf [@file1, @file2] do + size1 = File.size(@file1) + size2 = File.size(@file2) + + @argf.read(2) + @argf.pos.should == 2 + @argf.read(size1-2) + @argf.pos.should == size1 + @argf.read(6) + @argf.pos.should == 6 + @argf.rewind + @argf.pos.should == 0 + @argf.read(size2) + @argf.pos.should == size2 + end + end + + it "raises an ArgumentError when called on a closed stream" do + argf [@file1] do + @argf.read + -> { @argf.pos }.should.raise(ArgumentError) + end + end end describe "ARGF.pos=" do diff --git a/spec/ruby/core/argf/read_nonblock_spec.rb b/spec/ruby/core/argf/read_nonblock_spec.rb index 804a459a62..5c6bd52d80 100644 --- a/spec/ruby/core/argf/read_nonblock_spec.rb +++ b/spec/ruby/core/argf/read_nonblock_spec.rb @@ -66,7 +66,7 @@ platform_is_not :windows do argf ['-'] do -> { @argf.read_nonblock(4) - }.should raise_error(IO::EAGAINWaitReadable) + }.should.raise(IO::EAGAINWaitReadable) end end diff --git a/spec/ruby/core/argf/readchar_spec.rb b/spec/ruby/core/argf/readchar_spec.rb index 4eca2efcf7..63632721ec 100644 --- a/spec/ruby/core/argf/readchar_spec.rb +++ b/spec/ruby/core/argf/readchar_spec.rb @@ -13,7 +13,7 @@ describe "ARGF.readchar" do it "raises EOFError when end of stream reached" do argf [@file1, @file2] do - -> { while @argf.readchar; end }.should raise_error(EOFError) + -> { while @argf.readchar; end }.should.raise(EOFError) end end end diff --git a/spec/ruby/core/argf/readline_spec.rb b/spec/ruby/core/argf/readline_spec.rb index db53c499e9..8c23549b1b 100644 --- a/spec/ruby/core/argf/readline_spec.rb +++ b/spec/ruby/core/argf/readline_spec.rb @@ -17,7 +17,7 @@ describe "ARGF.readline" do it "raises an EOFError when reaching end of files" do argf [@file1, @file2] do - -> { while @argf.readline; end }.should raise_error(EOFError) + -> { while @argf.readline; end }.should.raise(EOFError) end end end diff --git a/spec/ruby/core/argf/readlines_spec.rb b/spec/ruby/core/argf/readlines_spec.rb index 30be936dab..156bb6a33f 100644 --- a/spec/ruby/core/argf/readlines_spec.rb +++ b/spec/ruby/core/argf/readlines_spec.rb @@ -1,6 +1,24 @@ require_relative '../../spec_helper' -require_relative 'shared/readlines' describe "ARGF.readlines" do - it_behaves_like :argf_readlines, :readlines + before :each do + @file1 = fixture __FILE__, "file1.txt" + @file2 = fixture __FILE__, "file2.txt" + + @lines = File.readlines(@file1) + @lines += File.readlines(@file2) + end + + it "reads all lines of all files" do + argf [@file1, @file2] do + @argf.readlines.should == @lines + end + end + + it "returns an empty Array when end of stream reached" do + argf [@file1, @file2] do + @argf.read + @argf.readlines.should == [] + end + end end diff --git a/spec/ruby/core/argf/readpartial_spec.rb b/spec/ruby/core/argf/readpartial_spec.rb index 5e284b3423..9f04e72cc2 100644 --- a/spec/ruby/core/argf/readpartial_spec.rb +++ b/spec/ruby/core/argf/readpartial_spec.rb @@ -16,7 +16,7 @@ describe "ARGF.readpartial" do it "raises an ArgumentError if called without a maximum read length" do argf [@file1_name] do - -> { @argf.readpartial }.should raise_error(ArgumentError) + -> { @argf.readpartial }.should.raise(ArgumentError) end end @@ -29,7 +29,7 @@ describe "ARGF.readpartial" do it "clears output buffer even if EOFError is raised because @argf is at end" do begin - output = "to be cleared" + output = +"to be cleared" argf [@file1_name] do @argf.read @@ -59,8 +59,8 @@ describe "ARGF.readpartial" do @argf.readpartial(@file1.size) @argf.readpartial(1) @argf.readpartial(@file2.size) - -> { @argf.readpartial(1) }.should raise_error(EOFError) - -> { @argf.readpartial(1) }.should raise_error(EOFError) + -> { @argf.readpartial(1) }.should.raise(EOFError) + -> { @argf.readpartial(1) }.should.raise(EOFError) end end @@ -69,7 +69,7 @@ describe "ARGF.readpartial" do print ARGF.readpartial(#{@stdin.size}) ARGF.readpartial(1) rescue print $!.class STR - stdin = ruby_exe(ruby_str, args: "< #{@stdin_name}", escape: true) + stdin = ruby_exe(ruby_str, args: "< #{@stdin_name}") stdin.should == @stdin + "EOFError" end end diff --git a/spec/ruby/core/argf/rewind_spec.rb b/spec/ruby/core/argf/rewind_spec.rb index b29f0b75b7..9255f790fe 100644 --- a/spec/ruby/core/argf/rewind_spec.rb +++ b/spec/ruby/core/argf/rewind_spec.rb @@ -33,7 +33,7 @@ describe "ARGF.rewind" do it "raises an ArgumentError when end of stream reached" do argf [@file1_name, @file2_name] do @argf.read - -> { @argf.rewind }.should raise_error(ArgumentError) + -> { @argf.rewind }.should.raise(ArgumentError) end end end diff --git a/spec/ruby/core/argf/seek_spec.rb b/spec/ruby/core/argf/seek_spec.rb index 2b73bd46fb..c1ea1ea438 100644 --- a/spec/ruby/core/argf/seek_spec.rb +++ b/spec/ruby/core/argf/seek_spec.rb @@ -57,7 +57,7 @@ describe "ARGF.seek" do it "takes at least one argument (offset)" do argf [@file1_name] do - -> { @argf.seek }.should raise_error(ArgumentError) + -> { @argf.seek }.should.raise(ArgumentError) end end end diff --git a/spec/ruby/core/argf/shared/each_byte.rb b/spec/ruby/core/argf/shared/each_byte.rb deleted file mode 100644 index 6b1dc1dae2..0000000000 --- a/spec/ruby/core/argf/shared/each_byte.rb +++ /dev/null @@ -1,58 +0,0 @@ -describe :argf_each_byte, shared: true do - before :each do - @file1_name = fixture __FILE__, "file1.txt" - @file2_name = fixture __FILE__, "file2.txt" - - @bytes = [] - File.read(@file1_name).each_byte { |b| @bytes << b } - File.read(@file2_name).each_byte { |b| @bytes << b } - end - - it "yields each byte of all streams to the passed block" do - argf [@file1_name, @file2_name] do - bytes = [] - @argf.send(@method) { |b| bytes << b } - bytes.should == @bytes - end - end - - it "returns self when passed a block" do - argf [@file1_name, @file2_name] do - @argf.send(@method) {}.should equal(@argf) - end - end - - it "returns an Enumerator when passed no block" do - argf [@file1_name, @file2_name] do - enum = @argf.send(@method) - enum.should be_an_instance_of(Enumerator) - - bytes = [] - enum.each { |b| bytes << b } - bytes.should == @bytes - end - end - - describe "when no block is given" do - it "returns an Enumerator" do - argf [@file1_name, @file2_name] do - enum = @argf.send(@method) - enum.should be_an_instance_of(Enumerator) - - bytes = [] - enum.each { |b| bytes << b } - bytes.should == @bytes - end - end - - describe "returned Enumerator" do - describe "size" do - it "should return nil" do - argf [@file1_name, @file2_name] do - @argf.send(@method).size.should == nil - end - end - end - end - end -end diff --git a/spec/ruby/core/argf/shared/each_char.rb b/spec/ruby/core/argf/shared/each_char.rb deleted file mode 100644 index 9e333ecc5b..0000000000 --- a/spec/ruby/core/argf/shared/each_char.rb +++ /dev/null @@ -1,58 +0,0 @@ -describe :argf_each_char, shared: true do - before :each do - @file1_name = fixture __FILE__, "file1.txt" - @file2_name = fixture __FILE__, "file2.txt" - - @chars = [] - File.read(@file1_name).each_char { |c| @chars << c } - File.read(@file2_name).each_char { |c| @chars << c } - end - - it "yields each char of all streams to the passed block" do - argf [@file1_name, @file2_name] do - chars = [] - @argf.send(@method) { |c| chars << c } - chars.should == @chars - end - end - - it "returns self when passed a block" do - argf [@file1_name, @file2_name] do - @argf.send(@method) {}.should equal(@argf) - end - end - - it "returns an Enumerator when passed no block" do - argf [@file1_name, @file2_name] do - enum = @argf.send(@method) - enum.should be_an_instance_of(Enumerator) - - chars = [] - enum.each { |c| chars << c } - chars.should == @chars - end - end - - describe "when no block is given" do - it "returns an Enumerator" do - argf [@file1_name, @file2_name] do - enum = @argf.send(@method) - enum.should be_an_instance_of(Enumerator) - - chars = [] - enum.each { |c| chars << c } - chars.should == @chars - end - end - - describe "returned Enumerator" do - describe "size" do - it "should return nil" do - argf [@file1_name, @file2_name] do - @argf.send(@method).size.should == nil - end - end - end - end - end -end diff --git a/spec/ruby/core/argf/shared/each_codepoint.rb b/spec/ruby/core/argf/shared/each_codepoint.rb deleted file mode 100644 index e2a2dfff46..0000000000 --- a/spec/ruby/core/argf/shared/each_codepoint.rb +++ /dev/null @@ -1,58 +0,0 @@ -describe :argf_each_codepoint, shared: true do - before :each do - file1_name = fixture __FILE__, "file1.txt" - file2_name = fixture __FILE__, "file2.txt" - @filenames = [file1_name, file2_name] - - @codepoints = File.read(file1_name).codepoints - @codepoints.concat File.read(file2_name).codepoints - end - - it "is a public method" do - argf @filenames do - @argf.public_methods(false).should include(@method) - end - end - - it "does not require arguments" do - argf @filenames do - @argf.method(@method).arity.should == 0 - end - end - - it "returns self when passed a block" do - argf @filenames do - @argf.send(@method) {}.should equal(@argf) - end - end - - it "returns an Enumerator when passed no block" do - argf @filenames do - @argf.send(@method).should be_an_instance_of(Enumerator) - end - end - - it "yields each codepoint of all streams" do - argf @filenames do - @argf.send(@method).to_a.should == @codepoints - end - end - - describe "when no block is given" do - it "returns an Enumerator" do - argf @filenames do - @argf.send(@method).should be_an_instance_of(Enumerator) - end - end - - describe "returned Enumerator" do - describe "size" do - it "should return nil" do - argf @filenames do - @argf.send(@method).size.should == nil - end - end - end - end - end -end diff --git a/spec/ruby/core/argf/shared/each_line.rb b/spec/ruby/core/argf/shared/each_line.rb deleted file mode 100644 index c0ef77dc54..0000000000 --- a/spec/ruby/core/argf/shared/each_line.rb +++ /dev/null @@ -1,62 +0,0 @@ -describe :argf_each_line, shared: true do - before :each do - @file1_name = fixture __FILE__, "file1.txt" - @file2_name = fixture __FILE__, "file2.txt" - - @lines = File.readlines @file1_name - @lines += File.readlines @file2_name - end - - it "is a public method" do - argf [@file1_name, @file2_name] do - @argf.public_methods(false).should include(@method) - end - end - - it "requires multiple arguments" do - argf [@file1_name, @file2_name] do - @argf.method(@method).arity.should < 0 - end - end - - it "reads each line of files" do - argf [@file1_name, @file2_name] do - lines = [] - @argf.send(@method) { |b| lines << b } - lines.should == @lines - end - end - - it "returns self when passed a block" do - argf [@file1_name, @file2_name] do - @argf.send(@method) {}.should equal(@argf) - end - end - - describe "with a separator" do - it "yields each separated section of all streams" do - argf [@file1_name, @file2_name] do - @argf.send(@method, '.').to_a.should == - (File.readlines(@file1_name, '.') + File.readlines(@file2_name, '.')) - end - end - end - - describe "when no block is given" do - it "returns an Enumerator" do - argf [@file1_name, @file2_name] do - @argf.send(@method).should be_an_instance_of(Enumerator) - end - end - - describe "returned Enumerator" do - describe "size" do - it "should return nil" do - argf [@file1_name, @file2_name] do - @argf.send(@method).size.should == nil - end - end - end - end - end -end diff --git a/spec/ruby/core/argf/shared/eof.rb b/spec/ruby/core/argf/shared/eof.rb deleted file mode 100644 index 0e684f943f..0000000000 --- a/spec/ruby/core/argf/shared/eof.rb +++ /dev/null @@ -1,24 +0,0 @@ -describe :argf_eof, shared: true do - before :each do - @file1 = fixture __FILE__, "file1.txt" - @file2 = fixture __FILE__, "file2.txt" - end - - # NOTE: this test assumes that fixtures files have two lines each - it "returns true when reaching the end of a file" do - argf [@file1, @file2] do - result = [] - while @argf.gets - result << @argf.send(@method) - end - result.should == [false, true, false, true] - end - end - - it "raises IOError when called on a closed stream" do - argf [@file1] do - @argf.read - -> { @argf.send(@method) }.should raise_error(IOError) - end - end -end diff --git a/spec/ruby/core/argf/shared/filename.rb b/spec/ruby/core/argf/shared/filename.rb deleted file mode 100644 index f47c673dc0..0000000000 --- a/spec/ruby/core/argf/shared/filename.rb +++ /dev/null @@ -1,28 +0,0 @@ -describe :argf_filename, shared: true do - before :each do - @file1 = fixture __FILE__, "file1.txt" - @file2 = fixture __FILE__, "file2.txt" - end - - # NOTE: this test assumes that fixtures files have two lines each - it "returns the current file name on each file" do - argf [@file1, @file2] do - result = [] - # returns first current file even when not yet open - result << @argf.send(@method) - result << @argf.send(@method) while @argf.gets - # returns last current file even when closed - result << @argf.send(@method) - - result.map! { |f| File.expand_path(f) } - result.should == [@file1, @file1, @file1, @file2, @file2, @file2] - end - end - - # NOTE: this test assumes that fixtures files have two lines each - it "sets the $FILENAME global variable with the current file name on each file" do - script = fixture __FILE__, "filename.rb" - out = ruby_exe(script, args: [@file1, @file2]) - out.should == "#{@file1}\n#{@file1}\n#{@file2}\n#{@file2}\n#{@file2}\n" - end -end diff --git a/spec/ruby/core/argf/shared/fileno.rb b/spec/ruby/core/argf/shared/fileno.rb deleted file mode 100644 index 5d674048e2..0000000000 --- a/spec/ruby/core/argf/shared/fileno.rb +++ /dev/null @@ -1,24 +0,0 @@ -describe :argf_fileno, shared: true do - before :each do - @file1 = fixture __FILE__, "file1.txt" - @file2 = fixture __FILE__, "file2.txt" - end - - # NOTE: this test assumes that fixtures files have two lines each - it "returns the current file number on each file" do - argf [@file1, @file2] do - result = [] - # returns first current file even when not yet open - result << @argf.send(@method) while @argf.gets - # returns last current file even when closed - result.map { |d| d.class }.should == [Fixnum, Fixnum, Fixnum, Fixnum] - end - end - - it "raises an ArgumentError when called on a closed stream" do - argf [@file1] do - @argf.read - -> { @argf.send(@method) }.should raise_error(ArgumentError) - end - end -end diff --git a/spec/ruby/core/argf/shared/getc.rb b/spec/ruby/core/argf/shared/getc.rb index 8be39c60b6..d63372d9d7 100644 --- a/spec/ruby/core/argf/shared/getc.rb +++ b/spec/ruby/core/argf/shared/getc.rb @@ -9,7 +9,7 @@ describe :argf_getc, shared: true do it "reads each char of files" do argf [@file1, @file2] do - chars = "" + chars = +"" @chars.size.times { chars << @argf.send(@method) } chars.should == @chars end diff --git a/spec/ruby/core/argf/shared/pos.rb b/spec/ruby/core/argf/shared/pos.rb deleted file mode 100644 index 9836d5f1e4..0000000000 --- a/spec/ruby/core/argf/shared/pos.rb +++ /dev/null @@ -1,31 +0,0 @@ -describe :argf_pos, shared: true do - before :each do - @file1 = fixture __FILE__, "file1.txt" - @file2 = fixture __FILE__, "file2.txt" - end - - it "gives the correct position for each read operation" do - argf [@file1, @file2] do - size1 = File.size(@file1) - size2 = File.size(@file2) - - @argf.read(2) - @argf.send(@method).should == 2 - @argf.read(size1-2) - @argf.send(@method).should == size1 - @argf.read(6) - @argf.send(@method).should == 6 - @argf.rewind - @argf.send(@method).should == 0 - @argf.read(size2) - @argf.send(@method).should == size2 - end - end - - it "raises an ArgumentError when called on a closed stream" do - argf [@file1] do - @argf.read - -> { @argf.send(@method) }.should raise_error(ArgumentError) - end - end -end diff --git a/spec/ruby/core/argf/shared/read.rb b/spec/ruby/core/argf/shared/read.rb index fe903983c0..e76d022139 100644 --- a/spec/ruby/core/argf/shared/read.rb +++ b/spec/ruby/core/argf/shared/read.rb @@ -15,7 +15,7 @@ describe :argf_read, shared: true do it "treats second argument as an output buffer" do argf [@file1_name] do - buffer = "" + buffer = +"" @argf.send(@method, @file1.size, buffer) buffer.should == @file1 end @@ -23,7 +23,7 @@ describe :argf_read, shared: true do it "clears output buffer before appending to it" do argf [@file1_name] do - buffer = "to be cleared" + buffer = +"to be cleared" @argf.send(@method, @file1.size, buffer) buffer.should == @file1 end diff --git a/spec/ruby/core/argf/shared/readlines.rb b/spec/ruby/core/argf/shared/readlines.rb deleted file mode 100644 index 505fa94acb..0000000000 --- a/spec/ruby/core/argf/shared/readlines.rb +++ /dev/null @@ -1,22 +0,0 @@ -describe :argf_readlines, shared: true do - before :each do - @file1 = fixture __FILE__, "file1.txt" - @file2 = fixture __FILE__, "file2.txt" - - @lines = File.readlines(@file1) - @lines += File.readlines(@file2) - end - - it "reads all lines of all files" do - argf [@file1, @file2] do - @argf.send(@method).should == @lines - end - end - - it "returns an empty Array when end of stream reached" do - argf [@file1, @file2] do - @argf.read - @argf.send(@method).should == [] - end - end -end diff --git a/spec/ruby/core/argf/skip_spec.rb b/spec/ruby/core/argf/skip_spec.rb index 0181801c2d..bb1c0ae110 100644 --- a/spec/ruby/core/argf/skip_spec.rb +++ b/spec/ruby/core/argf/skip_spec.rb @@ -37,6 +37,6 @@ describe "ARGF.skip" do # which as a side-effect calls argf.file which will initialize # internals of ARGF enough for this to work. it "has no effect when nothing has been processed yet" do - -> { ARGF.class.new(@file1_name).skip }.should_not raise_error + -> { ARGF.class.new(@file1_name).skip }.should_not.raise end end diff --git a/spec/ruby/core/argf/tell_spec.rb b/spec/ruby/core/argf/tell_spec.rb index 16d9f29920..bb28df74a2 100644 --- a/spec/ruby/core/argf/tell_spec.rb +++ b/spec/ruby/core/argf/tell_spec.rb @@ -1,6 +1,7 @@ require_relative '../../spec_helper' -require_relative 'shared/pos' describe "ARGF.tell" do - it_behaves_like :argf_pos, :tell + it "is an alias of ARGF.pos" do + ARGF.method(:tell).should == ARGF.method(:pos) + end end diff --git a/spec/ruby/core/argf/to_a_spec.rb b/spec/ruby/core/argf/to_a_spec.rb index b17a93db33..d95dc732ec 100644 --- a/spec/ruby/core/argf/to_a_spec.rb +++ b/spec/ruby/core/argf/to_a_spec.rb @@ -1,6 +1,7 @@ require_relative '../../spec_helper' -require_relative 'shared/readlines' describe "ARGF.to_a" do - it_behaves_like :argf_readlines, :to_a + it "is an alias of ARGF.readlines" do + ARGF.method(:to_a).should == ARGF.method(:readlines) + end end diff --git a/spec/ruby/core/argf/to_i_spec.rb b/spec/ruby/core/argf/to_i_spec.rb index 2183de6cd4..e8df378f4e 100644 --- a/spec/ruby/core/argf/to_i_spec.rb +++ b/spec/ruby/core/argf/to_i_spec.rb @@ -1,6 +1,7 @@ require_relative '../../spec_helper' -require_relative 'shared/fileno' describe "ARGF.to_i" do - it_behaves_like :argf_fileno, :to_i + it "is an alias of ARGF.fileno" do + ARGF.method(:to_i).should == ARGF.method(:fileno) + end end diff --git a/spec/ruby/core/argf/to_io_spec.rb b/spec/ruby/core/argf/to_io_spec.rb index 062383d291..ab5de58bcf 100644 --- a/spec/ruby/core/argf/to_io_spec.rb +++ b/spec/ruby/core/argf/to_io_spec.rb @@ -15,7 +15,7 @@ describe "ARGF.to_io" do result << @argf.to_io end - result.each { |io| io.should be_kind_of(IO) } + result.each { |io| io.should.is_a?(IO) } result[0].should == result[1] result[2].should == result[3] end |
