645 lines
12 KiB
Ruby
645 lines
12 KiB
Ruby
#======================================================================
|
|
|
|
#-----------------------------------
|
|
# Ruby script called with "ruby -S"
|
|
|
|
cmd "echo.rb this is a line" do
|
|
stdout_equal "this is a line\n"
|
|
end
|
|
|
|
# stdout begin
|
|
# ### echo.rb this is a line
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# actual "false.rb" will give error
|
|
|
|
cmd "true.rb" do
|
|
end
|
|
|
|
cmd "false.rb" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### true.rb
|
|
# ### false.rb
|
|
# --- ERROR: expected zero exit status, got 1
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# actual "false.rb" will give error
|
|
|
|
cmd "false.rb" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### false.rb
|
|
# --- ERROR: expected zero exit status, got 1
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# another non-zero exit will give error
|
|
|
|
cmd "exit.rb 18" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### exit.rb 18
|
|
# --- ERROR: expected zero exit status, got 18
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# actual STDOUT will give error
|
|
|
|
cmd "echo.rb a line on stdout" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### echo.rb a line on stdout
|
|
# --- ERROR: wrong stdout
|
|
# --- actual: a line on stdout
|
|
# --- expect: [[empty]]
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# actual STDERR will give error
|
|
|
|
cmd "echo.rb a line on stderr 1>&2" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### echo.rb a line on stderr 1>&2
|
|
# --- ERROR: wrong stderr
|
|
# --- actual: a line on stderr
|
|
# --- expect: [[empty]]
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# existing files is OK
|
|
|
|
File.open("before1", "w") {}
|
|
File.open("before2", "w") {}
|
|
cmd "true.rb" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### true.rb
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# actual created file will give error
|
|
|
|
cmd "echo.rb content > a-new-file" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### echo.rb content > a-new-file
|
|
# --- ERROR: created files
|
|
# --- actual: ["a-new-file"]
|
|
# --- expect: []
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# several actual created files will give error
|
|
|
|
File.open("before1", "w") {}
|
|
File.open("before2", "w") {}
|
|
cmd "echo.rb x > a && echo.rb x > b" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### echo.rb x > a && echo.rb x > b
|
|
# --- ERROR: created files
|
|
# --- actual: ["a", "b"]
|
|
# --- expect: []
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# actual removed file will give error
|
|
|
|
File.open("before", "w") {}
|
|
cmd "rm.rb before" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### rm.rb before
|
|
# --- ERROR: removed files
|
|
# --- actual: ["before"]
|
|
# --- expect: []
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# several actual removed files will give error
|
|
|
|
File.open("before1", "w") {}
|
|
File.open("before2", "w") {}
|
|
File.open("before3", "w") {}
|
|
cmd "rm.rb before1 before2" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### rm.rb before1 before2
|
|
# --- ERROR: removed files
|
|
# --- actual: ["before1", "before2"]
|
|
# --- expect: []
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# actual changed files will give error
|
|
|
|
# NOTE: order of writing/testing is important below
|
|
|
|
File.open("changed1", "w") {}
|
|
File.open("changed2", "w") {}
|
|
|
|
File.open("script.rb", "w") do |f|
|
|
f.puts "t1 = File.mtime('changed2')"
|
|
f.puts "while File.mtime('changed2') == t1"
|
|
f.puts " File.open('changed2', 'w') {|f| f.puts 111 }"
|
|
f.puts " File.open('changed1', 'w') {|f| f.puts 111 }"
|
|
f.puts "end"
|
|
end
|
|
|
|
cmd "ruby script.rb" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### ruby script.rb
|
|
# --- ERROR: changed files
|
|
# --- actual: ["changed1", "changed2"]
|
|
# --- expect: []
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# mix of actual created/removed files will give error
|
|
|
|
File.open("before1", "w") {}
|
|
File.open("before2", "w") {}
|
|
File.open("before3", "w") {}
|
|
cmd "rm.rb before1 before2 && echo.rb x > a && echo.rb x > b" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### rm.rb before1 before2 && echo.rb x > a && echo.rb x > b
|
|
# --- ERROR: created files
|
|
# --- actual: ["a", "b"]
|
|
# --- expect: []
|
|
# --- ERROR: removed files
|
|
# --- actual: ["before1", "before2"]
|
|
# --- expect: []
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# mix of "all" errros
|
|
|
|
File.open("before1", "w") {}
|
|
File.open("before2", "w") {}
|
|
File.open("before3", "w") {}
|
|
File.open("script.rb", "w") do |f|
|
|
f.puts "File.unlink 'before1'"
|
|
f.puts "File.unlink 'before2'"
|
|
f.puts "File.open('a', 'w') {}"
|
|
f.puts "File.open('b', 'w') {}"
|
|
f.puts "STDOUT.puts [11,22,33]"
|
|
f.puts "STDERR.puts [44,55,66]"
|
|
f.puts "exit 39"
|
|
end
|
|
cmd "ruby script.rb" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### ruby script.rb
|
|
# --- ERROR: expected zero exit status, got 39
|
|
# --- ERROR: wrong stdout
|
|
# --- actual: 11
|
|
# --- 22
|
|
# --- 33
|
|
# --- expect: [[empty]]
|
|
# --- ERROR: wrong stderr
|
|
# --- actual: 44
|
|
# --- 55
|
|
# --- 66
|
|
# --- expect: [[empty]]
|
|
# --- ERROR: created files
|
|
# --- actual: ["a", "b"]
|
|
# --- expect: []
|
|
# --- ERROR: removed files
|
|
# --- actual: ["before1", "before2"]
|
|
# --- expect: []
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# removed_files
|
|
|
|
File.open("file1", "w") {}
|
|
File.open("file2", "w") {}
|
|
|
|
cmd "rm.rb file1" do
|
|
comment "removed_files"
|
|
removed_files "file1"
|
|
end
|
|
|
|
# stdout begin
|
|
# ### removed_files
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# FAILED removed_files
|
|
|
|
File.open("file1", "w") {}
|
|
File.open("file2", "w") {}
|
|
|
|
cmd "true.rb" do
|
|
comment "FAILED removed_files"
|
|
removed_files "file1"
|
|
end
|
|
|
|
# stdout begin
|
|
# ### FAILED removed_files
|
|
# --- ERROR: removed files
|
|
# --- actual: []
|
|
# --- expect: ["file1"]
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# changed_files
|
|
|
|
File.open("file1", "w") {}
|
|
File.open("file2", "w") {}
|
|
|
|
cmd "sleep.rb 1 && touch.rb file1" do
|
|
comment "changed_files"
|
|
changed_files "file1"
|
|
end
|
|
|
|
# stdout begin
|
|
# ### changed_files
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# FAILED changed_files
|
|
|
|
File.open("file1", "w") {}
|
|
File.open("file2", "w") {}
|
|
|
|
cmd "true.rb" do
|
|
comment "FAILED changed_files"
|
|
changed_files "file1"
|
|
end
|
|
|
|
# stdout begin
|
|
# ### FAILED changed_files
|
|
# --- ERROR: changed files
|
|
# --- actual: []
|
|
# --- expect: ["file1"]
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# created_files
|
|
|
|
File.open("file1", "w") {}
|
|
File.open("file2", "w") {}
|
|
|
|
cmd "touch.rb file3" do
|
|
comment "created_files"
|
|
created_files "file3"
|
|
end
|
|
|
|
# stdout begin
|
|
# ### created_files
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# FAILED created_files
|
|
|
|
File.open("file1", "w") {}
|
|
File.open("file2", "w") {}
|
|
|
|
cmd "true.rb" do
|
|
comment "FAILED created_files"
|
|
created_files "file3"
|
|
end
|
|
|
|
# stdout begin
|
|
# ### FAILED created_files
|
|
# --- ERROR: created files
|
|
# --- actual: []
|
|
# --- expect: ["file3"]
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# with comment
|
|
|
|
cmd "true.rb" do
|
|
comment "this-is-the-comment"
|
|
end
|
|
|
|
# stdout begin
|
|
# ### this-is-the-comment
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# exit_nonzero
|
|
|
|
cmd "exit.rb 33" do
|
|
comment "exit_nonzero"
|
|
exit_nonzero
|
|
end
|
|
|
|
# stdout begin
|
|
# ### exit_nonzero
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# FAILING exit_nonzero
|
|
|
|
cmd "exit.rb 0" do
|
|
comment "failing exit_nonzero"
|
|
exit_nonzero
|
|
end
|
|
|
|
# stdout begin
|
|
# ### failing exit_nonzero
|
|
# --- ERROR: expected nonzero exit status
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# exit_status
|
|
|
|
cmd "exit.rb 33" do
|
|
comment "exit_status"
|
|
exit_status 33
|
|
end
|
|
|
|
# stdout begin
|
|
# ### exit_status
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# FAILING exit_status
|
|
|
|
cmd "exit.rb 44" do
|
|
comment "failing exit_status"
|
|
exit_status 33
|
|
end
|
|
|
|
# stdout begin
|
|
# ### failing exit_status
|
|
# --- ERROR: expected 33 exit status, got 44
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# stdout_equal -- one line
|
|
|
|
cmd "lines.rb 11" do
|
|
comment "stdout_equal"
|
|
stdout_equal "11\n"
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# FAILING stdout_equal -- one line
|
|
|
|
cmd "lines.rb 22" do
|
|
comment "stdout_equal"
|
|
stdout_equal "11\n"
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# --- ERROR: wrong stdout
|
|
# --- actual: 22
|
|
# --- expect: 11
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# stdout_equal -- two lines
|
|
|
|
cmd "lines.rb 11 22" do
|
|
comment "stdout_equal"
|
|
stdout_equal "11\n22\n"
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# FAILING stdout_equal -- two lines
|
|
|
|
cmd "lines.rb 33 44" do
|
|
comment "stdout_equal"
|
|
stdout_equal "11\n22\n"
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# --- ERROR: wrong stdout
|
|
# --- actual: 33
|
|
# --- 44
|
|
# --- expect: 11
|
|
# --- 22
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# stdout_equal(arr) -- two lines
|
|
|
|
cmd "lines.rb 11 22" do
|
|
comment "stdout_equal"
|
|
stdout_equal ["11", "22"]
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# FAILING stdout_equal(arr) -- two lines
|
|
|
|
cmd "lines.rb 33 44" do
|
|
comment "stdout_equal"
|
|
stdout_equal ["11", "22"]
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# --- ERROR: wrong stdout
|
|
# --- actual: 33
|
|
# --- 44
|
|
# --- expect: 11
|
|
# --- 22
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# FAILING stdout_equal(arr) -- different # lines
|
|
|
|
cmd "lines.rb 11 22 33" do
|
|
comment "stdout_equal"
|
|
stdout_equal ["11", "22"]
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# --- ERROR: wrong stdout
|
|
# --- actual: 11
|
|
# --- 22
|
|
# --- 33
|
|
# --- expect: 11
|
|
# --- 22
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# stdout_equal -- regexp argument
|
|
|
|
cmd "lines.rb 11 22" do
|
|
comment "stdout_equal"
|
|
stdout_equal /^22$/
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# stdout_equal -- twice, regexp argument
|
|
|
|
cmd "lines.rb 11 22" do
|
|
comment "stdout_equal"
|
|
stdout_equal /^22$/
|
|
stdout_equal /^11$/
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# FAILING first, stdout_equal -- twice, regexp argument
|
|
|
|
cmd "lines.rb 99 22" do
|
|
comment "stdout_equal"
|
|
stdout_equal /^22$/
|
|
stdout_equal /^11$/
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# --- ERROR: wrong stdout
|
|
# --- actual: 99
|
|
# --- 22
|
|
# --- expect: (?-mix:^11$)
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# FAILING second, stdout_equal -- twice, regexp argument
|
|
|
|
cmd "lines.rb 11 99" do
|
|
comment "stdout_equal"
|
|
stdout_equal /^22$/
|
|
stdout_equal /^11$/
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# --- ERROR: wrong stdout
|
|
# --- actual: 11
|
|
# --- 99
|
|
# --- expect: (?-mix:^22$)
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# FAILING stdout_equal -- regexp argument
|
|
|
|
cmd "lines.rb 11 22" do
|
|
comment "stdout_equal"
|
|
stdout_equal /^\d+ \d+$/
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# --- ERROR: wrong stdout
|
|
# --- actual: 11
|
|
# --- 22
|
|
# --- expect: (?-mix:^\d+ \d+$)
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# stdout_equal(arr) -- regexp argument
|
|
|
|
cmd "lines.rb 11 22" do
|
|
comment "stdout_equal"
|
|
stdout_equal ["11", /^22$/]
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# stdout_equal(arr) -- regexp argument (II)
|
|
|
|
cmd "lines.rb 11 22" do
|
|
comment "stdout_equal"
|
|
stdout_equal ["11", /^\d+$/]
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# FAILING stdout_equal(arr) -- regexp argument
|
|
|
|
cmd "lines.rb 11 22" do
|
|
comment "stdout_equal"
|
|
stdout_equal ["11", /^\d+ \d+$/]
|
|
end
|
|
|
|
# stdout begin
|
|
# ### stdout_equal
|
|
# --- ERROR: wrong stdout
|
|
# --- actual: 11
|
|
# --- 22
|
|
# --- expect: 11
|
|
# --- (?-mix:^\d+ \d+$)
|
|
# stdout end
|
|
|
|
#======================================================================
|
|
|
|
#-----------------------------------
|
|
# symlinks in tree -- should work
|
|
# TODO: this test should be improved to actually trigger the difference
|
|
# between lstat/stat in "_update_hardlinks".
|
|
#
|
|
# REQUIRE: RUBY_PLATFORM !~ /mswin32/
|
|
|
|
File.symlink "non-existing", "non-existing-link"
|
|
|
|
File.open("existing", "w") {}
|
|
File.symlink "existing", "existing-link"
|
|
|
|
cmd "true.rb" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### true.rb
|
|
# stdout end
|
|
|
|
#-----------------------------------
|
|
# file with mtime in future
|
|
|
|
File.open("future-file", "w") {}
|
|
future = Time.now + 86400
|
|
File.utime future, future, "future-file"
|
|
|
|
cmd "true.rb" do
|
|
end
|
|
|
|
# stdout begin
|
|
# ### true.rb
|
|
# stdout end
|
|
|