cmdtest/t/CMDTEST_simple.rb
Johan Holmberg 6a7bdbdfe4 make tests more Windows-friendly
by using Ruby helper scripts instead fo relying
on the existence of Unix commands
2016-11-05 00:49:22 +01:00

614 lines
12 KiB
Ruby

require "selftest_utils"
class CMDTEST_simple < Cmdtest::Testcase
include SelftestUtils
#-----------------------------------
def test_get_path
create_CMDTEST_foo [
'old = get_path()',
'cmd "echo_path.rb > old.path" do',
' created_files "old.path"',
'end',
'set_path("extra/dir", *old)',
'cmd "echo_path.rb > new.path" do',
' created_files "new.path"',
'end',
'cmd "diff.rb old.path new.path" do',
' exit_nonzero',
' stdout_equal /differ/',
'end',
'set_path(*old)',
'cmd "echo_path.rb > restored.path" do',
' created_files "restored.path"',
'end',
'cmd "diff.rb old.path restored.path" do',
'end',
]
cmd_cmdtest do
stdout_equal [
"### echo_path.rb > old.path",
"### echo_path.rb > new.path",
"### diff.rb old.path new.path",
"### echo_path.rb > restored.path",
"### diff.rb old.path restored.path",
]
end
end
#-----------------------------------
def test_use_chdir
create_CMDTEST_foo [
'create_file "dir/file1", ["this is dir/file1"]',
'chdir("dir")',
'File.mtime("file1")', # exception if failing
'create_file "file2", ["this is dir/file2"]',
'cmd "cat file1" do',
' stdout_equal ["this is dir/file1"]',
'end',
'cmd "cat file2" do',
' stdout_equal ["this is dir/file2"]',
'end',
]
cmd_cmdtest do
stdout_equal [
'### cat file1',
'### cat file2',
]
end
end
#-----------------------------------
def test_try_to_run_non_existing_command_LINUX
#
return unless ! windows?
create_CMDTEST_foo [
'cmd "non-existing" do',
' exit_nonzero',
' stderr_equal /non-existing: .*not found/',
'end',
]
cmd_cmdtest do
stdout_equal [
'### non-existing',
]
end
end
#-----------------------------------
def test_try_to_run_non_existing_command_WINDOWS
#
return unless windows?
create_CMDTEST_foo [
'cmd "non-existing" do',
' exit_nonzero',
' stderr_equal [',
' /non-existing.*not recognized/,',
' /program or batch file/,',
' ]',
'end',
]
cmd_cmdtest do
stdout_equal [
'### non-existing',
]
end
end
#-----------------------------------
def test_FAILING_try_to_run_non_existing_command_LINUX
#
return unless ! windows?
create_CMDTEST_foo [
'cmd "non-existing" do',
'end',
]
cmd_cmdtest do
stdout_equal [
'### non-existing',
'--- ERROR: expected zero exit status, got 127',
'--- ERROR: wrong stderr',
/--- actual:.*non-existing: .*not found/,
'--- expect: [[empty]]',
]
exit_nonzero
end
end
#-----------------------------------
def test_FAILING_try_to_run_non_existing_command_WIN32
#
return unless windows?
create_CMDTEST_foo [
'cmd "non-existing" do',
'end',
]
cmd_cmdtest do
stdout_equal [
'### non-existing',
'--- ERROR: expected zero exit status, got 1',
'--- ERROR: wrong stderr',
/--- actual:.*non-existing.*not recognized/,
/--- .*program or batch file/,
'--- expect: [[empty]]',
]
exit_nonzero
end
end
#-----------------------------------
def test_true_rb_is_archetypic_command__zero_exit_status__no_output
create_CMDTEST_foo [
'cmd "true.rb" do',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
]
end
end
#-----------------------------------
def test_true___explicit_exit_zero
create_CMDTEST_foo [
'cmd "true.rb" do',
' exit_zero',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
]
end
end
#-----------------------------------
def test_true___incorrect_exit_nonzero
create_CMDTEST_foo [
'cmd "true.rb" do',
' exit_nonzero',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
'--- ERROR: expected nonzero exit status',
]
exit_nonzero
end
end
#-----------------------------------
def test_true___incorrect_exit_status
create_CMDTEST_foo [
'cmd "true.rb" do',
' exit_status 18',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
'--- ERROR: expected 18 exit status, got 0',
]
exit_nonzero
end
end
#-----------------------------------
def test_true___correct_exit_status
create_CMDTEST_foo [
'cmd "true.rb" do',
' exit_status 0',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
]
end
end
#-----------------------------------
def test_true___incorrect_stdout
create_CMDTEST_foo [
'cmd "true.rb" do',
' stdout_equal ["hello"]',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
'--- ERROR: wrong stdout',
'--- actual: [[empty]]',
'--- expect: hello',
]
exit_nonzero
end
end
#-----------------------------------
def test_true___correct_stdout
create_CMDTEST_foo [
'cmd "true.rb" do',
' stdout_equal []',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
]
end
end
#-----------------------------------
def test_true___incorrect_stderr
create_CMDTEST_foo [
'cmd "true.rb" do',
' stderr_equal ["hello"]',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
'--- ERROR: wrong stderr',
'--- actual: [[empty]]',
'--- expect: hello',
]
exit_nonzero
end
end
#-----------------------------------
def test_true___correct_stderr
create_CMDTEST_foo [
'cmd "true.rb" do',
' stderr_equal []',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
]
end
end
#-----------------------------------
def test_true___incorrect_created_files_!
create_CMDTEST_foo [
'cmd "true.rb" do',
' created_files "foo"',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
'--- ERROR: created files',
'--- actual: []',
'--- expect: ["foo"]',
]
exit_nonzero
end
end
#-----------------------------------
def test_true___incorrect_created_files_2
create_CMDTEST_foo [
'cmd "true.rb" do',
' created_files "foo", "bar"',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
'--- ERROR: created files',
'--- actual: []',
'--- expect: ["bar", "foo"]',
]
exit_nonzero
end
end
#-----------------------------------
def test_true___correct_created_files
create_CMDTEST_foo [
'cmd "true.rb" do',
' created_files',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
]
end
end
#-----------------------------------
def test_true___incorrect_changed_files_1
create_CMDTEST_foo [
'cmd "true.rb" do',
' changed_files "foo"',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
'--- ERROR: changed files',
'--- actual: []',
'--- expect: ["foo"]',
]
exit_nonzero
end
end
#-----------------------------------
def test_true___incorrect_changed_files_2
create_CMDTEST_foo [
'cmd "true.rb" do',
' changed_files "foo", "bar"',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
'--- ERROR: changed files',
'--- actual: []',
'--- expect: ["bar", "foo"]',
]
exit_nonzero
end
end
#-----------------------------------
def test_true___correct_changed_files
create_CMDTEST_foo [
'cmd "true.rb" do',
' changed_files',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
]
end
end
#-----------------------------------
def test_true___incorrect_removed_files_1
create_CMDTEST_foo [
'cmd "true.rb" do',
' removed_files "foo"',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
'--- ERROR: removed files',
'--- actual: []',
'--- expect: ["foo"]',
]
exit_nonzero
end
end
#-----------------------------------
def test_true___incorrect_removed_files_2
create_CMDTEST_foo [
'cmd "true.rb" do',
' removed_files "foo", "bar"',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
'--- ERROR: removed files',
'--- actual: []',
'--- expect: ["bar", "foo"]',
]
exit_nonzero
end
end
#-----------------------------------
def test_true___correct_removed_files
create_CMDTEST_foo [
'cmd "true.rb" do',
' removed_files',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
]
end
end
#======================================================================
# test - without assertions
#-----------------------------------
def test_without_assertions____correct
create_CMDTEST_foo [
'cmd "true.rb" do',
'end',
]
cmd_cmdtest do
stdout_equal [
'### true.rb',
]
end
end
#-----------------------------------
def test_without_assertions____incorrect_exit_status
create_CMDTEST_foo [
'cmd "false.rb" do',
'end',
]
cmd_cmdtest do
stdout_equal [
'### false.rb',
'--- ERROR: expected zero exit status, got 1',
]
exit_nonzero
end
end
#-----------------------------------
def test_without_assertions____incorrect_stdout
create_CMDTEST_foo [
'cmd "echo.rb hello" do',
'end',
]
cmd_cmdtest do
stdout_equal [
'### echo.rb hello',
'--- ERROR: wrong stdout',
'--- actual: hello',
'--- expect: [[empty]]',
]
exit_nonzero
end
end
#-----------------------------------
def test_without_assertions____incorrect_stderr
create_CMDTEST_foo [
'cmd "echo.rb hello >&2" do',
'end',
]
cmd_cmdtest do
stdout_equal [
'### echo.rb hello >&2',
'--- ERROR: wrong stderr',
'--- actual: hello',
'--- expect: [[empty]]',
]
exit_nonzero
end
end
#-----------------------------------
def test_without_assertions____incorrect_created_files
create_CMDTEST_foo [
'cmd "touch.rb new_file" do',
'end',
]
cmd_cmdtest do
stdout_equal [
'### touch.rb new_file',
'--- ERROR: created files',
'--- actual: ["new_file"]',
'--- expect: []',
]
exit_nonzero
end
end
#-----------------------------------
def test_without_assertions____incorrect_changed_files
create_CMDTEST_foo [
'touch_file "changed_file"',
'cmd "echo.rb ... >> changed_file" do',
'end',
]
cmd_cmdtest do
stdout_equal [
'### echo.rb ... >> changed_file',
'--- ERROR: changed files',
'--- actual: ["changed_file"]',
'--- expect: []',
]
exit_nonzero
end
end
#-----------------------------------
def test_without_assertions____incorrect_removed_files
create_CMDTEST_foo [
'touch_file "removed_file"',
'cmd "rm.rb removed_file" do',
'end',
]
cmd_cmdtest do
stdout_equal [
'### rm.rb removed_file',
'--- ERROR: removed files',
'--- actual: ["removed_file"]',
'--- expect: []',
]
exit_nonzero
end
end
end