From 7ae7e4948a54c7043627f18827e2687203a1428d Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Wed, 2 Feb 2000 01:26:24 +0000 Subject: zsh-workers/9518 --- Test/.distfiles | 3 +- Test/10prompt.ztst | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 Test/10prompt.ztst (limited to 'Test') diff --git a/Test/.distfiles b/Test/.distfiles index 8e4048878..daf76cebb 100644 --- a/Test/.distfiles +++ b/Test/.distfiles @@ -2,5 +2,6 @@ DISTFILES_SRC=' .cvsignore .distfiles Makefile.in ztst.zsh 01grammar.ztst 02alias.ztst 03quoting.ztst 04redirect.ztst - 05command.ztst 06arith.ztst 07cond.ztst 08traps.ztst 50cd.ztst + 05command.ztst 06arith.ztst 07cond.ztst 08traps.ztst 09funcdef.ztst + 10prompt.ztst 50cd.ztst ' diff --git a/Test/10prompt.ztst b/Test/10prompt.ztst new file mode 100644 index 000000000..08bf8f6a9 --- /dev/null +++ b/Test/10prompt.ztst @@ -0,0 +1,106 @@ +%prep + + mydir=$PWD + SHLVL=2 + setopt extendedglob + +%test + +# 'mydir=$PWD; hash -d mydir; print -P %~' doesn't seem to abbreviate +# to ~mydir in a non-interactive shell. Is this correct? + + print -P ' %%%): %) + %%d: %d + %%1/: %1/ + %%h: %h + %%L: %L + %%M: %M + %%m: %m + %%n: %n + %%N: %N + %%i: %i + a%%{...%%}b: a%{%}b + ' +0q:Basic prompt escapes as shown. +> %): ) +> %d: $mydir +> %1/: ${mydir:t} +> %h: 0 +> %L: 2 +> %M: $HOST +> %m: ${HOST%%.*} +> %n: $USERNAME +> %N: ZTST_execchunk +> %i: 2 +> a%{...%}b: ab +> + + true + print -P '%?' + false + print -P '%?' +0:`%?' prompt escape +>0 +>1 + + PS4="%_> " + setopt xtrace + if true; then true; else false; fi + unsetopt xtrace +0:`%_' prompt escape +?if> true +?then> true +?> unsetopt xtrace + + diff =(print -P '%#') =(print -P '%(!.#.%%)') +0:`%#' prompt escape and its equivalent + + psvar=(caesar adsum jam forte) + print -P '%v' '%4v' +0:`%v' prompt escape +>caesar forte + + true + print -P '%(?.true.false)' + false + print -P '%(?.true.false)' +0:ternary prompt escapes +>true +>false + + print -P '%10<......>truncated at 10%>> Not truncated' +0:prompt truncation +>...d at 10 Not truncated +>truncat... Not truncated + +# It's hard to check the time and date as they are moving targets. +# We therefore just check that various forms of the date are consistent. +# In fact, if you perform this at midnight it can still fail. +# We could test for that, but we can't be bothered. +# I hope LC_ALL is enough to make the format what's expected. + + LC_ALL=C + date1=$(print -P %w) + date2=$(print -P %W) + date3=$(print -P %D) + if [[ $date1 != [A-Z][a-z][a-z][[:blank:]]##[0-9]## ]]; then + print "Date \`$date1' is not in the form \`Day DD' (e.g. \`Mon 1'" + fi + if [[ $date2 != [0-9][0-9]/[0-9][0-9]/[0-9][0-9] ]]; then + print "Date \`$date2' is not in the form \`DD/MM/YYYY'" + fi + if [[ $date3 != [0-9][0-9]-[0-9][0-9]-[0-9][0-9] ]]; then + print "Date \`$date3' is not in the form \`YY-MM-DD'" + fi + if (( $date1[5,-1] != $date2[4,5] )) || (( $date2[4,5] != $date3[8,9] )) + then + print "Days of month do not agree in $date1, $date2, $date3" + fi + if (( $date2[1,2] != $date3[4,5] )); then + print "Months do not agree in $date2, $date3" + fi + if (( $date2[7,8] != $date3[1,2] )); then + print "Years do not agree in $date2, $date3" + fi +0:Dates produced by prompt escapes -- cgit 1.4.1