194 lines
3.9 KiB
YAML
194 lines
3.9 KiB
YAML
name: "Builtins: history"
|
|
cases:
|
|
- name: "basic history saving"
|
|
args: ["-o", "history"]
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
stdin: |
|
|
echo something
|
|
echo else
|
|
|
|
- name: "existing history file"
|
|
pty: true
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
test_files:
|
|
- path: "history-file.txt"
|
|
contents: |
|
|
a b c
|
|
1 2 3
|
|
ignore_stdout: true # Prompts and other don't quite line up
|
|
stdin: |
|
|
#expect-prompt
|
|
history >history-output.txt
|
|
#send:Enter
|
|
#expect-prompt
|
|
#send:Ctrl+D
|
|
|
|
- name: "existing history file with timestamps"
|
|
pty: true
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
test_files:
|
|
- path: "history-file.txt"
|
|
contents: |
|
|
#1750000000
|
|
a b c
|
|
#1750000001
|
|
1 2 3
|
|
ignore_stdout: true # Prompts and other don't quite line up
|
|
stdin: |
|
|
#expect-prompt
|
|
history >history-output.txt
|
|
#send:Enter
|
|
#expect-prompt
|
|
#send:Ctrl+D
|
|
|
|
- name: "existing history file with timestamps and HISTTIMEFORMAT"
|
|
pty: true
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
HISTTIMEFORMAT: "%C "
|
|
test_files:
|
|
- path: "history-file.txt"
|
|
contents: |
|
|
#1750000000
|
|
a b c
|
|
#1750000001
|
|
1 2 3
|
|
ignore_stdout: true # Prompts and other don't quite line up
|
|
stdin: |
|
|
#expect-prompt
|
|
#send:Ctrl+D
|
|
|
|
- name: "history N"
|
|
args: ["-o", "history"]
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
stdin: |
|
|
: cmd1
|
|
: cmd2
|
|
history 2
|
|
|
|
- name: "history with duplicates"
|
|
args: ["-o", "history"]
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
stdin: |
|
|
: cmd1
|
|
: cmd1
|
|
: cmd1
|
|
: cmd2
|
|
: cmd1
|
|
history
|
|
|
|
- name: "history -c"
|
|
args: ["-o", "history"]
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
stdin: |
|
|
: cmd1
|
|
history -c
|
|
history
|
|
|
|
- name: "history -d"
|
|
args: ["-o", "history"]
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
stdin: |
|
|
: cmd1
|
|
history -d 1
|
|
history
|
|
|
|
- name: "history -d: negative offset"
|
|
args: ["-o", "history"]
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
stdin: |
|
|
: cmd1
|
|
: cmd2
|
|
history -d -2
|
|
history
|
|
|
|
- name: "history -a"
|
|
args: ["-o", "history"]
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
stdin: |
|
|
echo "[histfile]"
|
|
cat $HISTFILE
|
|
|
|
history -a
|
|
|
|
echo "[histfile after -a]"
|
|
cat $HISTFILE
|
|
|
|
history -a
|
|
|
|
echo "[histfile after second -a]"
|
|
cat $HISTFILE
|
|
|
|
- name: "history -w"
|
|
args: ["-o", "history"]
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
stdin: |
|
|
echo "[histfile]"
|
|
cat $HISTFILE
|
|
|
|
history -w
|
|
|
|
echo "[histfile after -w]"
|
|
cat $HISTFILE
|
|
|
|
history -w
|
|
|
|
echo "[histfile after second -w]"
|
|
cat $HISTFILE
|
|
|
|
- name: "history -w with explicit file"
|
|
args: ["-o", "history"]
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
stdin: |
|
|
: cmd1
|
|
history -w some-file.txt
|
|
|
|
- name: "history -s"
|
|
known_failure: true # NOTE: bash excludes the history command itself from history
|
|
args: ["-o", "history"]
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
stdin: |
|
|
history -s a b c
|
|
history
|
|
|
|
- name: "HISTCMD"
|
|
args: ["-o", "history"]
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
stdin: |
|
|
: cmd1
|
|
echo $HISTCMD
|
|
: cmd2
|
|
echo $HISTCMD
|
|
: cmd3
|
|
echo $HISTCMD
|
|
|
|
- name: "HISTTIMEFORMAT"
|
|
known_failure: true # TODO(history): needs triage
|
|
args: ["-o", "history"]
|
|
env:
|
|
HISTFILE: "history-file.txt"
|
|
HISTTIMEFORMAT: "century=%C "
|
|
stdin: |
|
|
: cmd1
|
|
: cmd2
|
|
history
|
|
|
|
- name: "history file with unreadable lines"
|
|
ignore_stderr: true # Ignore brush's warnings about unreadable lines
|
|
stdin: |
|
|
bash -c 'printf "\xff\xfe\xfd" >history-file.txt'
|
|
HISTFILE=history-file.txt $0 -o history -c 'echo hi'
|