
now use "ERROR: wrong content of file 'foo'" instead of earlier "ERROR: wrong file 'foo'"
255 lines
5.1 KiB
Ruby
255 lines
5.1 KiB
Ruby
|
|
require "selftest_utils"
|
|
|
|
class CMDTEST_file_equal < Cmdtest::Testcase
|
|
|
|
include SelftestUtils
|
|
|
|
#----------------------------------------
|
|
# 'file_equal' detects equal file content
|
|
|
|
def test_file_equal_CORRECT_EMPTY
|
|
create_CMDTEST_foo [
|
|
"file_open('foo', 'w') {}",
|
|
"",
|
|
"cmd 'true.rb' do",
|
|
" file_equal 'foo', ''",
|
|
"end",
|
|
]
|
|
|
|
cmd_cmdtest do
|
|
stdout_equal [
|
|
"### true.rb",
|
|
]
|
|
end
|
|
end
|
|
|
|
#----------------------------------------
|
|
# 'file_equal' detects different file content
|
|
# and reports an error
|
|
|
|
def test_file_equal_INCORRECT_EMPTY
|
|
|
|
create_CMDTEST_foo [
|
|
"file_open('foo', 'w') {|f| f.puts 'hello world' }",
|
|
"",
|
|
"cmd 'true.rb' do",
|
|
" file_equal 'foo', ''",
|
|
"end",
|
|
]
|
|
|
|
cmd_cmdtest do
|
|
stdout_equal [
|
|
"### true.rb",
|
|
"--- ERROR: wrong content of file 'foo'",
|
|
"--- actual: hello world",
|
|
"--- expect: [[empty]]",
|
|
]
|
|
exit_nonzero
|
|
end
|
|
end
|
|
|
|
#----------------------------------------
|
|
# 'file_equal' detects equal file content,
|
|
# using [] argument too
|
|
|
|
def test_file_equal_CORRECT_NO_LINES
|
|
|
|
create_CMDTEST_foo [
|
|
"file_open('foo', 'w') {}",
|
|
"",
|
|
"cmd 'true.rb' do",
|
|
" file_equal 'foo', []",
|
|
"end",
|
|
]
|
|
|
|
cmd_cmdtest do
|
|
stdout_equal [
|
|
"### true.rb",
|
|
]
|
|
end
|
|
end
|
|
|
|
#----------------------------------------
|
|
# 'file_equal' detects different file content
|
|
# and reports an error,
|
|
# using [] argument too
|
|
|
|
def test_file_equal_INCORRECT_NO_LINES
|
|
|
|
create_CMDTEST_foo [
|
|
"file_open('foo', 'w') {|f| f.puts 'hello world' }",
|
|
"",
|
|
"cmd 'true.rb' do",
|
|
" file_equal 'foo', []",
|
|
"end",
|
|
]
|
|
|
|
cmd_cmdtest do
|
|
stdout_equal [
|
|
"### true.rb",
|
|
"--- ERROR: wrong content of file 'foo'",
|
|
"--- actual: hello world",
|
|
"--- expect: [[empty]]",
|
|
]
|
|
exit_nonzero
|
|
end
|
|
end
|
|
|
|
#----------------------------------------
|
|
# testing [] argument with one line (equal)
|
|
|
|
def test_file_equal_CORRECT_LINE
|
|
|
|
create_CMDTEST_foo [
|
|
"file_open('foo', 'w') {|f| f.puts 'hello world' }",
|
|
"",
|
|
"cmd 'true.rb' do",
|
|
" file_equal 'foo', [ 'hello world' ]",
|
|
"end",
|
|
]
|
|
|
|
cmd_cmdtest do
|
|
stdout_equal [
|
|
"### true.rb",
|
|
]
|
|
end
|
|
end
|
|
|
|
#----------------------------------------
|
|
# testing [] argument with one line (different)
|
|
|
|
def test_file_equal_INCORRECT_LINE
|
|
|
|
create_CMDTEST_foo [
|
|
"file_open('foo', 'w') {}",
|
|
"",
|
|
"cmd 'true.rb' do",
|
|
" file_equal 'foo', [ 'hello world' ]",
|
|
"end",
|
|
]
|
|
|
|
cmd_cmdtest do
|
|
stdout_equal [
|
|
"### true.rb",
|
|
"--- ERROR: wrong content of file 'foo'",
|
|
"--- actual: [[empty]]",
|
|
"--- expect: hello world",
|
|
]
|
|
exit_nonzero
|
|
end
|
|
end
|
|
|
|
#----------------------------------------
|
|
# testing [] argument with two lines (equal)
|
|
|
|
def test_file_equal_CORRECT_2_LINES
|
|
|
|
create_CMDTEST_foo [
|
|
"file_open('foo', 'w') {|f| f.puts 'hello'; f.puts 'world' }",
|
|
"",
|
|
"cmd 'true.rb' do",
|
|
" file_equal 'foo', [ 'hello', 'world' ]",
|
|
"end",
|
|
]
|
|
|
|
cmd_cmdtest do
|
|
stdout_equal [
|
|
"### true.rb",
|
|
]
|
|
end
|
|
end
|
|
|
|
#----------------------------------------
|
|
# testing [] argument with two lines (different)
|
|
|
|
def test_file_equal_INCORRECT_2_LINES
|
|
|
|
create_CMDTEST_foo [
|
|
"file_open('foo', 'w') {}",
|
|
"",
|
|
"cmd 'true.rb' do",
|
|
" file_equal 'foo', [ 'hello', 'world' ]",
|
|
"end",
|
|
]
|
|
|
|
cmd_cmdtest do
|
|
stdout_equal [
|
|
"### true.rb",
|
|
"--- ERROR: wrong content of file 'foo'",
|
|
"--- actual: [[empty]]",
|
|
"--- expect: hello",
|
|
"--- world",
|
|
]
|
|
exit_nonzero
|
|
end
|
|
end
|
|
|
|
#----------------------------------------
|
|
# non-existing file gives an error
|
|
|
|
def test_file_equal_NON_EXISTING_FILE
|
|
|
|
create_CMDTEST_foo [
|
|
"cmd 'true.rb' do",
|
|
" file_equal 'foo', ''",
|
|
"end",
|
|
]
|
|
|
|
cmd_cmdtest do
|
|
stdout_equal [
|
|
"### true.rb",
|
|
"--- ERROR: no such file: 'foo'",
|
|
]
|
|
exit_nonzero
|
|
end
|
|
end
|
|
|
|
#----------------------------------------
|
|
# file being a directory gives an error
|
|
|
|
def test_file_equal_FILE_IS_DIRECTORY
|
|
|
|
create_CMDTEST_foo [
|
|
"dir_mkdir 'foo'",
|
|
"",
|
|
"cmd 'true.rb' do",
|
|
" file_equal 'foo', ''",
|
|
"end",
|
|
]
|
|
|
|
cmd_cmdtest do
|
|
stdout_equal [
|
|
"### true.rb",
|
|
"--- ERROR: is a directory: 'foo'",
|
|
]
|
|
exit_nonzero
|
|
end
|
|
end
|
|
|
|
#----------------------------------------
|
|
# other error also detected (recursive symlink)
|
|
|
|
def test_file_equal_OTHER_ERROR
|
|
#
|
|
return unless ! windows?
|
|
|
|
create_CMDTEST_foo [
|
|
"file_symlink 'foo', 'foo'",
|
|
"",
|
|
"cmd 'true.rb' do",
|
|
" file_equal 'foo', ''",
|
|
"end",
|
|
]
|
|
|
|
cmd_cmdtest do
|
|
stdout_equal [
|
|
"### true.rb",
|
|
"--- ERROR: error reading file: 'foo'",
|
|
]
|
|
exit_nonzero
|
|
end
|
|
end
|
|
|
|
end
|