require "selftest_utils" class CMDTEST_chdir < Cmdtest::Testcase include SelftestUtils # The Ruby builtin "Dir.chdir" and "chdir" from "cmdtest" # can be used in a test-method. In both cases the following # should happen: # # - the "current directory" of the "cmdtest" Ruby process should be set, # so later code in the samne test-method can rely on the new # current directory. # # - when a command is executed with "cmd", it should get the same # current directory as the "cmdtest" Ruby process. # # without any "chdir" def test_chdir_NONE create_CMDTEST_foo [ "create_file 'SUBDIR/.flagfile', ''", "system 'pwd'", ] cmd_cmdtest do stdout_equal /^\/.*\/top\/work$/ end end # "chdir" to a subdirectory def test_chdir_SUBDIR create_CMDTEST_foo [ "create_file 'SUBDIR/.flagfile', ''", "chdir 'SUBDIR'", "system 'pwd'", ] cmd_cmdtest do stdout_equal /^\/.*\/top\/work\/SUBDIR$/ end end # "Dir.chdir" to a subdirectory def test_dir_chdir_SUBDIR create_CMDTEST_foo [ "create_file 'SUBDIR/.flagfile', ''", "Dir.chdir 'SUBDIR'", "system 'pwd'", ] cmd_cmdtest do stdout_equal /^\/.*\/top\/work\/SUBDIR$/ end end # "cmd" after no "chdir" def test_chdir_NONE_cmd create_CMDTEST_foo [ "create_file 'SUBDIR/.flagfile', ''", "cmd 'echo PWD=$(pwd)' do", " stdout_equal /^PWD=\\/.*\\/top\\/work$/", "end", ] cmd_cmdtest do stdout_equal [ "### echo PWD=$(pwd)", ] end end # "cmd" after "chdir" def test_chdir_SUBDIR_cmd create_CMDTEST_foo [ "create_file 'SUBDIR/.flagfile', ''", "chdir 'SUBDIR'", "cmd 'echo PWD=$(pwd)' do", " stdout_equal /^PWD=\\/.*\\/top\\/work\\/SUBDIR$/", "end", ] cmd_cmdtest do stdout_equal [ "### echo PWD=$(pwd)", ] end end # "cmd" after "Dir.chdir" def test_dir_chdir_SUBDIR_cmd create_CMDTEST_foo [ "create_file 'SUBDIR/.flagfile', ''", "Dir.chdir 'SUBDIR'", "cmd 'echo PWD=$(pwd)' do", " stdout_equal /^PWD=\\/.*\\/top\\/work\\/SUBDIR$/", "end", ] cmd_cmdtest do stdout_equal [ "### echo PWD=$(pwd)", ] end end # "create_file" after "Dir.chdir" def test_dir_chdir_SUBDIR_create_file create_CMDTEST_foo [ "create_file 'SUBDIR/f0.txt', ''", "create_file 'f1.txt', ''", "Dir.chdir 'SUBDIR'", "create_file 'f2.txt', ''", "Dir.chdir '..'", "cmd 'find . -type f | sort' do", " stdout_equal [", " './SUBDIR/f0.txt',", " './SUBDIR/f2.txt',", " './f1.txt',", " ]", "end", ] cmd_cmdtest do stdout_equal [ "### find . -type f | sort", ] end end end