mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Move spec/rubyspec to spec/ruby for consistency
* Other ruby implementations use the spec/ruby directory. [Misc #13792] [ruby-core:82287] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
75bfc6440d
commit
1d15d5f080
4370 changed files with 0 additions and 0 deletions
58
spec/ruby/core/argf/shared/each_byte.rb
Normal file
58
spec/ruby/core/argf/shared/each_byte.rb
Normal file
|
@ -0,0 +1,58 @@
|
|||
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
|
58
spec/ruby/core/argf/shared/each_char.rb
Normal file
58
spec/ruby/core/argf/shared/each_char.rb
Normal file
|
@ -0,0 +1,58 @@
|
|||
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
|
58
spec/ruby/core/argf/shared/each_codepoint.rb
Normal file
58
spec/ruby/core/argf/shared/each_codepoint.rb
Normal file
|
@ -0,0 +1,58 @@
|
|||
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
|
62
spec/ruby/core/argf/shared/each_line.rb
Normal file
62
spec/ruby/core/argf/shared/each_line.rb
Normal file
|
@ -0,0 +1,62 @@
|
|||
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
|
24
spec/ruby/core/argf/shared/eof.rb
Normal file
24
spec/ruby/core/argf/shared/eof.rb
Normal file
|
@ -0,0 +1,24 @@
|
|||
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
|
||||
lambda { @argf.send(@method) }.should raise_error(IOError)
|
||||
end
|
||||
end
|
||||
end
|
28
spec/ruby/core/argf/shared/filename.rb
Normal file
28
spec/ruby/core/argf/shared/filename.rb
Normal file
|
@ -0,0 +1,28 @@
|
|||
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
|
24
spec/ruby/core/argf/shared/fileno.rb
Normal file
24
spec/ruby/core/argf/shared/fileno.rb
Normal file
|
@ -0,0 +1,24 @@
|
|||
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
|
||||
lambda { @argf.send(@method) }.should raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
end
|
17
spec/ruby/core/argf/shared/getc.rb
Normal file
17
spec/ruby/core/argf/shared/getc.rb
Normal file
|
@ -0,0 +1,17 @@
|
|||
describe :argf_getc, shared: true do
|
||||
before :each do
|
||||
@file1 = fixture __FILE__, "file1.txt"
|
||||
@file2 = fixture __FILE__, "file2.txt"
|
||||
|
||||
@chars = File.read @file1
|
||||
@chars += File.read @file2
|
||||
end
|
||||
|
||||
it "reads each char of files" do
|
||||
argf [@file1, @file2] do
|
||||
chars = ""
|
||||
@chars.size.times { chars << @argf.send(@method) }
|
||||
chars.should == @chars
|
||||
end
|
||||
end
|
||||
end
|
99
spec/ruby/core/argf/shared/gets.rb
Normal file
99
spec/ruby/core/argf/shared/gets.rb
Normal file
|
@ -0,0 +1,99 @@
|
|||
describe :argf_gets, shared: true do
|
||||
before :each do
|
||||
@file1_name = fixture __FILE__, "file1.txt"
|
||||
@file2_name = fixture __FILE__, "file2.txt"
|
||||
@stdin_name = fixture __FILE__, "stdin.txt"
|
||||
|
||||
@file1 = File.readlines @file1_name
|
||||
@file2 = File.readlines @file2_name
|
||||
@stdin = File.read @stdin_name
|
||||
end
|
||||
|
||||
it "reads one line of a file" do
|
||||
argf [@file1_name] do
|
||||
@argf.send(@method).should == @file1.first
|
||||
end
|
||||
end
|
||||
|
||||
it "reads all lines of a file" do
|
||||
argf [@file1_name] do
|
||||
lines = []
|
||||
@file1.size.times { lines << @argf.send(@method) }
|
||||
lines.should == @file1
|
||||
end
|
||||
end
|
||||
|
||||
it "reads all lines of stdin" do
|
||||
total = @stdin.count $/
|
||||
stdin = ruby_exe(
|
||||
"#{total}.times { print ARGF.send(#{@method.inspect}) }",
|
||||
args: "< #{@stdin_name}")
|
||||
stdin.should == @stdin
|
||||
end
|
||||
|
||||
it "reads all lines of two files" do
|
||||
argf [@file1_name, @file2_name] do
|
||||
total = @file1.size + @file2.size
|
||||
lines = []
|
||||
total.times { lines << @argf.send(@method) }
|
||||
lines.should == @file1 + @file2
|
||||
end
|
||||
end
|
||||
|
||||
it "sets $_ global variable with each line read" do
|
||||
argf [@file1_name, @file2_name] do
|
||||
total = @file1.size + @file2.size
|
||||
total.times do
|
||||
line = @argf.send(@method)
|
||||
$_.should == line
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe :argf_gets_inplace_edit, shared: true do
|
||||
before :each do
|
||||
@file1_name = fixture __FILE__, "file1.txt"
|
||||
@file2_name = fixture __FILE__, "file2.txt"
|
||||
|
||||
@tmp1_name = tmp "file1.txt"
|
||||
@tmp2_name = tmp "file2.txt"
|
||||
|
||||
@tmp1_name_bak = @tmp1_name + ".bak"
|
||||
@tmp2_name_bak = @tmp2_name + ".bak"
|
||||
|
||||
cp @file1_name, @tmp1_name
|
||||
cp @file2_name, @tmp2_name
|
||||
|
||||
method = "ARGF.send(#{@method.inspect})"
|
||||
@code = "begin while line = #{method} do puts 'x' end rescue EOFError; end"
|
||||
end
|
||||
|
||||
after :each do
|
||||
rm_r @tmp1_name, @tmp2_name, @tmp1_name_bak, @tmp2_name_bak
|
||||
end
|
||||
|
||||
# -i with no backup extension is not supported on Windows
|
||||
platform_is_not :windows do
|
||||
it "modifies the files when in place edit mode is on" do
|
||||
ruby_exe(@code,
|
||||
options: "-i",
|
||||
args: "#{@tmp1_name} #{@tmp2_name}")
|
||||
|
||||
File.read(@tmp1_name).should == "x\nx\n"
|
||||
File.read(@tmp2_name).should == "x\nx\n"
|
||||
end
|
||||
end
|
||||
|
||||
it "modifies and backups two files when in place edit mode is on" do
|
||||
ruby_exe(@code,
|
||||
options: "-i.bak",
|
||||
args: "#{@tmp1_name} #{@tmp2_name}")
|
||||
|
||||
File.read(@tmp1_name).should == "x\nx\n"
|
||||
File.read(@tmp2_name).should == "x\nx\n"
|
||||
|
||||
File.read(@tmp1_name_bak).should == "file1.1\nfile1.2\n"
|
||||
File.read(@tmp2_name_bak).should == "line2.1\nline2.2\n"
|
||||
end
|
||||
end
|
31
spec/ruby/core/argf/shared/pos.rb
Normal file
31
spec/ruby/core/argf/shared/pos.rb
Normal file
|
@ -0,0 +1,31 @@
|
|||
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
|
||||
lambda { @argf.send(@method) }.should raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
end
|
58
spec/ruby/core/argf/shared/read.rb
Normal file
58
spec/ruby/core/argf/shared/read.rb
Normal file
|
@ -0,0 +1,58 @@
|
|||
describe :argf_read, shared: true do
|
||||
before :each do
|
||||
@file1_name = fixture __FILE__, "file1.txt"
|
||||
@stdin_name = fixture __FILE__, "stdin.txt"
|
||||
|
||||
@file1 = File.read @file1_name
|
||||
@stdin = File.read @stdin_name
|
||||
end
|
||||
|
||||
it "treats second nil argument as no output buffer" do
|
||||
argf [@file1_name] do
|
||||
@argf.send(@method, @file1.size, nil).should == @file1
|
||||
end
|
||||
end
|
||||
|
||||
it "treats second argument as an output buffer" do
|
||||
argf [@file1_name] do
|
||||
buffer = ""
|
||||
@argf.send(@method, @file1.size, buffer)
|
||||
buffer.should == @file1
|
||||
end
|
||||
end
|
||||
|
||||
it "clears output buffer before appending to it" do
|
||||
argf [@file1_name] do
|
||||
buffer = "to be cleared"
|
||||
@argf.send(@method, @file1.size, buffer)
|
||||
buffer.should == @file1
|
||||
end
|
||||
end
|
||||
|
||||
it "reads a number of bytes from the first file" do
|
||||
argf [@file1_name] do
|
||||
@argf.send(@method, 5).should == @file1[0, 5]
|
||||
end
|
||||
end
|
||||
|
||||
it "reads from a single file consecutively" do
|
||||
argf [@file1_name] do
|
||||
@argf.send(@method, 1).should == @file1[0, 1]
|
||||
@argf.send(@method, 2).should == @file1[1, 2]
|
||||
@argf.send(@method, 3).should == @file1[3, 3]
|
||||
end
|
||||
end
|
||||
|
||||
it "reads a number of bytes from stdin" do
|
||||
stdin = ruby_exe("print ARGF.#{@method}(10)", :args => "< #{@stdin_name}")
|
||||
stdin.should == @stdin[0, 10]
|
||||
end
|
||||
|
||||
platform_is_not :windows do
|
||||
it "reads the contents of a special device file" do
|
||||
argf ['/dev/zero'] do
|
||||
@argf.send(@method, 100).should == "\000" * 100
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
22
spec/ruby/core/argf/shared/readlines.rb
Normal file
22
spec/ruby/core/argf/shared/readlines.rb
Normal file
|
@ -0,0 +1,22 @@
|
|||
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
|
Loading…
Add table
Add a link
Reference in a new issue