Results for builtin-history.test.sh

statusbashosh
pass 157
ok 21
FAIL 09
total1717
casebashoshdescription
0pass pass history -a
1pass FAIL history -w writes out the in-memory history to the history file
details
2pass FAIL history -r reads from the history file, and appends it to the current history
details
3pass FAIL history -n reads *new* commands from the history file, and appends them to the current history
details
4pass pass history -c clears in-memory history
5pass FAIL history -d to delete 1 item
details
6pass FAIL history -d to delete history from end
details
7pass pass HISTFILE is defined initially
8pass pass HISTFILE must point to a file
9ok pass HISTFILE set to array
details
10pass pass HISTFILE unset
11ok pass history usage
details
12pass FAIL HISTSIZE shrinks the in-memory history when changed
details
13pass FAIL HISTFILESIZE shrinks the history file when changed
details
14pass FAIL recording history can be toggled with set -o/+o history
details
15pass FAIL shopt histappend toggle check
details
16pass ok shopt histappend - osh ignores shopt and appends, bash sometimes overwrites
details
22 passed, 3 OK, 0 not implemented, 0 BUG, 9 failed, 0 timeouts, 0 cases skipped
9 failed under osh

Details on runs that didn't PASS

osh1 history -w writes out the in-memory history to the history file

[osh stdout] Expected 'found=1\n' Got 'found=0\n'

stdout:
found=0
stderr:
  history -w # Overwrite history file
          ^~
[ stdin ]:7: 'history' doesn't accept flag -w
osh2 history -r reads from the history file, and appends it to the current history

[osh stdout] Expected '20\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 263, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 232, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 198, in AppBundleMain
    bash_compat=(applet == 'bash'))
  File "/home/uke/oil/core/shell.py", line 1296, 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 2366, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2164, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1891, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1153, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 766, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 235, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 577, in _RunSimpleCommand
    return self.RunBuiltin(builtin_id, cmd_val)
  File "/home/uke/oil/core/vm.py", line 266, in RunBuiltin
    return self._RunBuiltinProc(builtin_proc, cmd_val)
  File "/home/uke/oil/core/vm.py", line 276, in _RunBuiltinProc
    status = builtin_proc.Run(cmd_val)
  File "/home/uke/oil/builtin/readline_osh.py", line 325, in Run
    hist_file = self.sh_files.HistoryFile()
  File "/home/uke/oil/core/sh_init.py", line 118, in HistoryFile
    assert self.init_done
AssertionError
osh3 history -n reads *new* commands from the history file, and appends them to the current history

[osh stdout] Expected '10\n10\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 263, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 232, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 198, in AppBundleMain
    bash_compat=(applet == 'bash'))
  File "/home/uke/oil/core/shell.py", line 1296, 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 2366, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2164, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1891, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1151, in _DoSimple
    cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 766, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 235, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 577, in _RunSimpleCommand
    return self.RunBuiltin(builtin_id, cmd_val)
  File "/home/uke/oil/core/vm.py", line 266, in RunBuiltin
    return self._RunBuiltinProc(builtin_proc, cmd_val)
  File "/home/uke/oil/core/vm.py", line 276, in _RunBuiltinProc
    status = builtin_proc.Run(cmd_val)
  File "/home/uke/oil/builtin/readline_osh.py", line 325, in Run
    hist_file = self.sh_files.HistoryFile()
  File "/home/uke/oil/core/sh_init.py", line 118, in HistoryFile
    assert self.init_done
AssertionError
osh5 history -d to delete 1 item

[osh stdout] Expected 'status=1\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 263, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 232, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 198, in AppBundleMain
    bash_compat=(applet == 'bash'))
  File "/home/uke/oil/core/shell.py", line 1296, 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 2366, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2164, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1891, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1153, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 766, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 235, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 577, in _RunSimpleCommand
    return self.RunBuiltin(builtin_id, cmd_val)
  File "/home/uke/oil/core/vm.py", line 266, in RunBuiltin
    return self._RunBuiltinProc(builtin_proc, cmd_val)
  File "/home/uke/oil/core/vm.py", line 276, in _RunBuiltinProc
    status = builtin_proc.Run(cmd_val)
  File "/home/uke/oil/builtin/readline_osh.py", line 325, in Run
    hist_file = self.sh_files.HistoryFile()
  File "/home/uke/oil/core/sh_init.py", line 118, in HistoryFile
    assert self.init_done
AssertionError
osh6 history -d to delete history from end

[osh stdout] Expected '42\n43\n44\nstatus=0\nstatus=0\nstatus=0\nstatus=1\n^D\n' Got '42\n43\n44\nstatus=0\nstatus=2\nstatus=2\nstatus=2\n^D\n'

stdout:
42
43
44
status=0
status=2
status=2
status=2
^D
stderr:
osh-0.36$ osh-0.36$ osh-0.36$ osh-0.36$ osh-0.36$ osh-0.36$ osh-0.36$ osh-0.36$ osh-0.36$ osh-0.36$ osh-0.36$   history -d -1
             ^~
[ stdin -i ]:11: 'history' got invalid integer for -d: -1
osh-0.36$ osh-0.36$   history -d -2
             ^~
[ stdin -i ]:13: 'history' got invalid integer for -d: -2
osh-0.36$ osh-0.36$   history -d 99
  ^~~~~~~
[ stdin -i ]:15: 'history' couldn't find item 99
osh-0.36$ osh-0.36$ osh-0.36$ osh-0.36$ osh-0.36$ 
bash9 HISTFILE set to array

stdout:
status=0
^D
stderr:
bash: cannot set terminal process group (8071): Inappropriate ioctl for device
bash: no job control in this shell
bash-5.2$ 
bash-5.2$ HISTFILE=(a b c)
bash-5.2$ history -a
bash-5.2$ echo status=$?
bash-5.2$ 
bash-5.2$ exit
bash11 history usage

stdout:
status=1
status=1
stderr:
bash: line 1: history: not-a-number: numeric argument required
bash: line 4: history: too many arguments
osh12 HISTSIZE shrinks the in-memory history when changed

[osh stdout] Expected '10\n5\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 263, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 232, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 198, in AppBundleMain
    bash_compat=(applet == 'bash'))
  File "/home/uke/oil/core/shell.py", line 1296, 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 2366, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2164, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1891, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1153, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 766, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 235, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 577, in _RunSimpleCommand
    return self.RunBuiltin(builtin_id, cmd_val)
  File "/home/uke/oil/core/vm.py", line 266, in RunBuiltin
    return self._RunBuiltinProc(builtin_proc, cmd_val)
  File "/home/uke/oil/core/vm.py", line 276, in _RunBuiltinProc
    status = builtin_proc.Run(cmd_val)
  File "/home/uke/oil/builtin/readline_osh.py", line 325, in Run
    hist_file = self.sh_files.HistoryFile()
  File "/home/uke/oil/core/sh_init.py", line 118, in HistoryFile
    assert self.init_done
AssertionError
osh13 HISTFILESIZE shrinks the history file when changed

[osh stdout] Expected '5\n' Got '10\n'

stdout:
10
stderr:
osh14 recording history can be toggled with set -o/+o history

[osh stdout] Expected '^D\nstatus=1\nstatus=0\n' Got '^D\nstatus=0\nstatus=0\n'

stdout:
^D
status=0
status=0
stderr:
osh-0.36$   set +o history
  ^~~
[ stdin -i ]:1: 'set' got invalid option 'history'
osh-0.36$ osh-0.36$   set -o history
  ^~~
[ stdin -i ]:3: 'set' got invalid option 'history'
osh-0.36$ osh-0.36$ 
osh15 shopt histappend toggle check

[osh stdout] Expected 'status=0\nshopt -s histappend\nstatus=0\nshopt -u histappend\n^D\n' Got 'status=2\nstatus=2\n'

stdout:
status=2
status=2
stderr:
  shopt -s histappend
  ^~~~~
[ stdin ]:1: 'shopt' got invalid option 'histappend'
  shopt -p histappend
  ^~~~~
[ stdin ]:3: 'shopt' got invalid option 'histappend'
  shopt -u histappend
  ^~~~~
[ stdin ]:4: 'shopt' got invalid option 'histappend'
  shopt -p histappend
  ^~~~~
[ stdin ]:6: 'shopt' got invalid option 'histappend'
osh16 shopt histappend - osh ignores shopt and appends, bash sometimes overwrites

stdout:
^D
status=0
^D
status=0
stderr:
osh-0.36$ osh-0.36$     shopt -s histappend
    ^~~~~
[ stdin -i ]:2: 'shopt' got invalid option 'histappend'
osh-0.36$ osh-0.36$ osh-0.36$ osh-0.36$ osh-0.36$ osh-0.36$     shopt -u histappend
    ^~~~~
[ stdin -i ]:2: 'shopt' got invalid option 'histappend'
osh-0.36$ osh-0.36$ osh-0.36$ osh-0.36$