Merge nucleic/sleek-thistle-egret-fyej into dev
This commit is contained in:
@@ -0,0 +1,200 @@
|
||||
name: "Prompt"
|
||||
cases:
|
||||
- name: "Simple prompts"
|
||||
stdin: |
|
||||
prompt='$ '
|
||||
echo "Prompt: '${prompt@P}'"
|
||||
|
||||
prompt='a\r\n> '
|
||||
echo "Prompt: '${prompt@P}'"
|
||||
|
||||
prompt='\\'
|
||||
echo "Prompt: '${prompt@P}'"
|
||||
|
||||
prompt='\?'
|
||||
echo "Prompt: '${prompt@P}'"
|
||||
|
||||
prompt='\81'
|
||||
echo "Prompt: '${prompt@P}'"
|
||||
|
||||
- name: "Working dir based prompts"
|
||||
stdin: |
|
||||
cd /usr
|
||||
|
||||
prompt='\w '
|
||||
echo "Prompt: '${prompt@P}'"
|
||||
|
||||
prompt='\W '
|
||||
echo "Prompt: '${prompt@P}'"
|
||||
|
||||
arr=("\w" "\w")
|
||||
echo "Prompt: '${arr@P}'"
|
||||
echo "Prompt: '${arr[@]@P}'"
|
||||
echo "Prompt: '${arr[*]@P}'"
|
||||
|
||||
- name: "Non-printing chars"
|
||||
stdin: |
|
||||
prompt='\[\]Prompt>\[\]'
|
||||
echo "Prompt: '${prompt@P}'"
|
||||
|
||||
- name: "Hostname in prompts"
|
||||
stdin: |
|
||||
prompt='\h '
|
||||
echo "Prompt: '${prompt@P}'"
|
||||
|
||||
prompt='\H '
|
||||
echo "Prompt: '${prompt@P}'"
|
||||
|
||||
- name: "Shell name"
|
||||
stdin: |
|
||||
prompt='\s'
|
||||
[[ "${prompt@P}" == "$(basename $0)" ]]
|
||||
|
||||
- name: "Shell version info"
|
||||
stdin: |
|
||||
prompt='\v'
|
||||
[[ "${prompt@P}" =~ ^\d+\.\d+$ ]] && echo "Version is well-formatted"
|
||||
|
||||
prompt='\V'
|
||||
[[ "${prompt@P}" == ^\d+\.\d+\.\d+$ ]] && echo "Release is correct"
|
||||
|
||||
- name: "Simple date"
|
||||
stdin: |
|
||||
prompt='\d'
|
||||
[[ "${prompt@P}" == $(date +'%a %b %d') ]] && echo '\d date matches'
|
||||
|
||||
- name: "Date format with plain string"
|
||||
stdin: |
|
||||
prompt='\D{something}'
|
||||
echo "Date format with plain string: '${prompt@P}'"
|
||||
|
||||
- name: "Date format with year"
|
||||
stdin: |
|
||||
prompt='\d{%Y}'
|
||||
echo "Date format with year: '${prompt@P}'"
|
||||
|
||||
- name: "Time format: A"
|
||||
stdin: |
|
||||
prompt='\A'
|
||||
expanded=${prompt@P}
|
||||
roundtripped=$(date --date="${expanded}" +'%H:%M')
|
||||
[[ ${expanded} == ${roundtripped} ]] && echo "Time matches"
|
||||
|
||||
- name: "Time format: @"
|
||||
stdin: |
|
||||
prompt='\@'
|
||||
expanded=${prompt@P}
|
||||
roundtripped=$(date --date="${expanded}" +'%I:%M %p')
|
||||
[[ ${expanded} == ${roundtripped} ]] && echo "Time matches"
|
||||
|
||||
- name: "Time format: T"
|
||||
stdin: |
|
||||
prompt='\T'
|
||||
expanded=${prompt@P}
|
||||
roundtripped=$(date --date="${expanded}" +'%I:%M:%S')
|
||||
[[ ${expanded} == ${roundtripped} ]] && echo "Time matches"
|
||||
|
||||
- name: "Time format: t"
|
||||
stdin: |
|
||||
prompt='\t'
|
||||
expanded=${prompt@P}
|
||||
roundtripped=$(date --date="${expanded}" +'%H:%M:%S')
|
||||
[[ ${expanded} == ${roundtripped} ]] && echo "Time matches"
|
||||
|
||||
- name: "Current history number"
|
||||
known_failure: true
|
||||
stdin: |
|
||||
prompt='\!'
|
||||
expanded=${prompt@P}
|
||||
roundtripped=$(history | tail -n 1 | cut -d ' ' -f 1)
|
||||
[[ ${expanded} == ${roundtripped} ]] && echo "History number matches"
|
||||
|
||||
- name: "Current command number"
|
||||
known_failure: true # Issue #471
|
||||
stdin: |
|
||||
prompt='\#'
|
||||
expanded=${prompt@P}
|
||||
echo "${expanded}"
|
||||
|
||||
- name: "Escaped dollar-sign"
|
||||
stdin: |
|
||||
prompt='\$'
|
||||
echo "Prompt: '${prompt@P}'"
|
||||
|
||||
- name: "Var in prompt"
|
||||
stdin: |
|
||||
var=value
|
||||
|
||||
prompt="\$var"
|
||||
|
||||
shopt -s promptvars
|
||||
echo "Prompt (dollar-sign not escaped, with promptvars): ${prompt@P}"
|
||||
|
||||
shopt -u promptvars
|
||||
echo "Prompt (dollar-sign not escaped, without promptvars): ${prompt@P}"
|
||||
|
||||
prompt="\\\$var"
|
||||
|
||||
shopt -s promptvars
|
||||
echo "Prompt (dollar-sign escaped, with promptvars): ${prompt@P}"
|
||||
|
||||
shopt -u promptvars
|
||||
echo "Prompt (dollar-sign escaped, without promptvars): ${prompt@P}"
|
||||
|
||||
- name: "Tilde in prompt"
|
||||
stdin: |
|
||||
HOME=$(pwd)
|
||||
|
||||
prompt='~'
|
||||
|
||||
shopt -s promptvars
|
||||
echo "Prompt (with promptvars): ${prompt@P}"
|
||||
|
||||
shopt -u promptvars
|
||||
echo "Prompt (without promptvars): ${prompt@P}"
|
||||
|
||||
- name: "Command substitution in prompt"
|
||||
stdin: |
|
||||
prompt='$(echo Hello)'
|
||||
echo "Without spaces: ${prompt@P}"
|
||||
|
||||
prompt=' $(echo Hello) '
|
||||
echo "With spaces: ${prompt@P}"
|
||||
|
||||
- name: "Backquoted command substitution in prompt"
|
||||
stdin: |
|
||||
prompt='`echo Hello`'
|
||||
echo "Without spaces: ${prompt@P}"
|
||||
|
||||
prompt=' `echo Hello` '
|
||||
echo "With spaces: ${prompt@P}"
|
||||
|
||||
- name: "Parameter expansion with non-printing chars"
|
||||
stdin: |
|
||||
var=value
|
||||
prompt="\${var:+\[text\]}"
|
||||
echo "Conditional (set): '${prompt@P}'"
|
||||
|
||||
var=
|
||||
prompt="\${var:+\[text\]}"
|
||||
echo "Conditional (unset): '${prompt@P}'"
|
||||
|
||||
- name: "Command substitution in prompt and exit code"
|
||||
args: ["-i"]
|
||||
ignore_stderr: true
|
||||
stdin: |
|
||||
PS1='$(echo Hello)> '
|
||||
false
|
||||
echo $?
|
||||
|
||||
- name: "Brackets and var"
|
||||
stdin: |
|
||||
prompt='\[$var\]\u > '
|
||||
echo "Prompt: ${prompt@P}"
|
||||
|
||||
- name: "Brackets and var (interactive mode)"
|
||||
args: ["-i"]
|
||||
ignore_stderr: true
|
||||
stdin: |
|
||||
prompt='\[$var\]\u > '
|
||||
echo "Prompt: ${prompt@P}"
|
||||
Reference in New Issue
Block a user