Results for builtin-cd.test.sh

statusdashbashmkshzshosh
pass 1822162016
ok 10400
BUG 30220
FAIL 00006
total2222222222
casedashbashmkshzshoshdescription
0pass pass pass pass pass cd and $PWD
1BUG pass BUG pass FAIL cd BAD/..
detailsdetailsdetails
2BUG pass pass pass pass cd with 2 or more args
details
3BUG pass ok BUG pass cd - without OLDPWD
detailsdetailsdetails
4pass pass BUG BUG pass $OLDPWD
detailsdetails
5pass pass pass pass pass pwd
6pass pass pass pass FAIL pwd after cd ..
details
7pass pass pass pass FAIL pwd with symlink and -P
details
8pass pass pass pass pass setting $PWD doesn't affect the value of 'pwd' builtin
9pass pass pass pass pass unset PWD; then pwd
10pass pass pass pass pass 'unset PWD; pwd' before any cd (tickles a rare corner case)
11pass pass pass pass pass lie about PWD; pwd before any cd
12pass pass ok pass pass remove pwd dir
details
13pass pass ok pass FAIL pwd in symlinked dir on shell initialization
detailsdetails
14pass pass pass pass pass Test the current directory after 'cd ..' involving symlinks
15pass pass pass pass FAIL cd with no arguments
details
16ok pass ok pass pass cd to nonexistent dir
detailsdetails
17pass pass pass pass FAIL cd away from dir that was deleted
details
18pass pass pass pass pass cd permits double bare dash
19pass pass pass pass pass cd to symlink with -L and -P
20pass pass pass pass pass cd to relative path with -L and -P
21pass pass pass pass pass unset PWD; cd /tmp is allowed (regression)
92 passed, 5 OK, 0 not implemented, 7 BUG, 6 failed, 0 timeouts, 0 cases skipped
6 failed under osh

Details on runs that didn't PASS

dash1 cd BAD/..

stdout:
status=0
stderr:
mksh1 cd BAD/..

stdout:
status=0
stderr:
osh1 cd BAD/..

[osh stdout] Expected 'status=1\n', got 'status=0\n'

stdout:
status=0
stderr:
dash2 cd with 2 or more args

stdout:
status=0
status=0
stderr:
dash3 cd - without OLDPWD

stdout:
status=0
stderr:
mksh3 cd - without OLDPWD

stdout:
status=2
stderr:
mksh: <stdin>[1]: cd: no OLDPWD
zsh3 cd - without OLDPWD

stdout:
status=0
stderr:
mksh4 $OLDPWD

stdout:
old: /
/
stderr:
zsh4 $OLDPWD

stdout:
old: /
OLDPWD=/
stderr:
osh6 pwd after cd ..

[osh stdout] Expected 'dir-two\ndir-one\n', got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1266, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2285, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1811, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1054, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2529, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 1983, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1875, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2623, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 693, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 621, in CaptureStdout
    fds = pyos.WaitForInputs([r, r2])
  File "/home/uke/oil/core/pyos.py", line 288, in WaitForInputs
    r, w, exc = select.select(fd, [], [fd])
TypeError: argument must be an int, or have a fileno() method
osh7 pwd with symlink and -P

[osh stdout] Expected 'pwd:\nsymlink\npwd -P:\ntarget\n', got 'pwd:\n'
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
pwd:
stderr:
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1266, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2285, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1811, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1054, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2529, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 1983, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1875, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2623, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 693, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 621, in CaptureStdout
    fds = pyos.WaitForInputs([r, r2])
  File "/home/uke/oil/core/pyos.py", line 288, in WaitForInputs
    r, w, exc = select.select(fd, [], [fd])
TypeError: argument must be an int, or have a fileno() method
mksh12 remove pwd dir

stdout:
/tmp/oil-spec-test/pwd
status=0
status=1
stderr:
mksh: <stdin>[7]: pwd: can't determine current directory: No such file or directory
mksh13 pwd in symlinked dir on shell initialization

stdout:
target
target
stderr:
osh13 pwd in symlinked dir on shell initialization

[osh stdout] Expected 'symlink\ntarget\n', got ''
[osh stderr] Expected u'', got 'Traceback (most recent call last):\n File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>\n sys.exit(main(sys.argv))\n File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main\n return AppBundleMain(argv)\n File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain\n return shell.Main(\'osh\', arg_r, environ, login_shell, loader, readline)\n File "/home/uke/oil/core/shell.py", line 1266, in Main\n cmd_flags=cmd_eval.IsMainProgram)\n File "/home/uke/oil/core/main_loop.py", line 336, in Batch\n was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)\n File "/home/uke/oil/core/main_loop.py", line 401, in Batch2\n is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)\n File "/home/uke/oil/osh/cmd_eval.py", line 2285, in ExecuteAndCatch\n status = self._Execute(node)\n File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute\n status = self._Dispatch(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1811, in _Dispatch\n status = self._DoSimple(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1054, in _DoSimple\n allow_assign=True)\n File "/home/uke/oil/osh/word_eval.py", line 2529, in EvalWordSequence2\n self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)\n File "/home/uke/oil/osh/word_eval.py", line 1983, in _EvalWordToParts\n self._EvalWordPart(p, word_part_vals, eval_flags)\n File "/home/uke/oil/osh/word_eval.py", line 1875, in _EvalWordPart\n quoted) # type: part_value_t\n File "/home/uke/oil/osh/word_eval.py", line 2623, in _EvalCommandSub\n stdout_str = self.shell_ex.RunCommandSub(cs_part)\n File "/home/uke/oil/core/executor.py", line 693, in RunCommandSub\n status, stdout_str, stderr_str = self.CaptureStdout(node)\n File "/home/uke/oil/core/executor.py", line 621, in CaptureStdout\n fds = pyos.WaitForInputs([r, r2])\n File "/home/uke/oil/core/pyos.py", line 288, in WaitForInputs\n r, w, exc = select.select(fd, [], [fd])\nTypeError: argument must be an int, or have a fileno() method\nTraceback (most recent call last):\n File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>\n sys.exit(main(sys.argv))\n File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main\n return AppBundleMain(argv)\n File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain\n return shell.Main(\'osh\', arg_r, environ, login_shell, loader, readline)\n File "/home/uke/oil/core/shell.py", line 1266, in Main\n cmd_flags=cmd_eval.IsMainProgram)\n File "/home/uke/oil/core/main_loop.py", line 336, in Batch\n was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)\n File "/home/uke/oil/core/main_loop.py", line 401, in Batch2\n is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)\n File "/home/uke/oil/osh/cmd_eval.py", line 2285, in ExecuteAndCatch\n status = self._Execute(node)\n File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute\n status = self._Dispatch(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1811, in _Dispatch\n status = self._DoSimple(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1054, in _DoSimple\n allow_assign=True)\n File "/home/uke/oil/osh/word_eval.py", line 2529, in EvalWordSequence2\n self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)\n File "/home/uke/oil/osh/word_eval.py", line 1983, in _EvalWordToParts\n self._EvalWordPart(p, word_part_vals, eval_flags)\n File "/home/uke/oil/osh/word_eval.py", line 1875, in _EvalWordPart\n quoted) # type: part_value_t\n File "/home/uke/oil/osh/word_eval.py", line 2623, in _EvalCommandSub\n stdout_str = self.shell_ex.RunCommandSub(cs_part)\n File "/home/uke/oil/core/executor.py", line 693, in RunCommandSub\n status, stdout_str, stderr_str = self.CaptureStdout(node)\n File "/home/uke/oil/core/executor.py", line 621, in CaptureStdout\n fds = pyos.WaitForInputs([r, r2])\n File "/home/uke/oil/core/pyos.py", line 288, in WaitForInputs\n r, w, exc = select.select(fd, [], [fd])\nTypeError: argument must be an int, or have a fileno() method\n'
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1266, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2285, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1811, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1054, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2529, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 1983, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1875, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2623, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 693, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 621, in CaptureStdout
    fds = pyos.WaitForInputs([r, r2])
  File "/home/uke/oil/core/pyos.py", line 288, in WaitForInputs
    r, w, exc = select.select(fd, [], [fd])
TypeError: argument must be an int, or have a fileno() method
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1266, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2285, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1811, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1054, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2529, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 1983, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1875, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2623, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 693, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 621, in CaptureStdout
    fds = pyos.WaitForInputs([r, r2])
  File "/home/uke/oil/core/pyos.py", line 288, in WaitForInputs
    r, w, exc = select.select(fd, [], [fd])
TypeError: argument must be an int, or have a fileno() method
osh15 cd with no arguments

[osh stdout] Expected 'OK\n', got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1266, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2285, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1934, in _Dispatch
    status = self._DoAndOr(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1295, in _DoAndOr
    status = self._Execute(left)
  File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1811, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1054, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2529, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 1983, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1875, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2623, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 693, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 621, in CaptureStdout
    fds = pyos.WaitForInputs([r, r2])
  File "/home/uke/oil/core/pyos.py", line 288, in WaitForInputs
    r, w, exc = select.select(fd, [], [fd])
TypeError: argument must be an int, or have a fileno() method
dash16 cd to nonexistent dir

stdout:
status=2
stderr:
dash: 1: cd: can't cd to /nonexistent/dir
mksh16 cd to nonexistent dir

stdout:
status=2
stderr:
mksh: <stdin>[1]: cd: /nonexistent/dir: No such file or directory
osh17 cd away from dir that was deleted

[osh stdout] Expected 'cd-nonexistent\nstatus=0\n', got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1266, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2285, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1811, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1054, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2529, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 1983, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1875, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2623, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 693, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 621, in CaptureStdout
    fds = pyos.WaitForInputs([r, r2])
  File "/home/uke/oil/core/pyos.py", line 288, in WaitForInputs
    r, w, exc = select.select(fd, [], [fd])
TypeError: argument must be an int, or have a fileno() method