cmdtest/t/01-misc.rb
2009-03-26 21:50:24 +00:00

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