cmdtest/t/CMDTEST_file_equal.rb
Johan Holmberg f59ee18820 improve message text in 'file_equal'
now use "ERROR: wrong content of file 'foo'"
instead of earlier "ERROR: wrong file 'foo'"
2017-12-20 10:23:54 +01:00

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