diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2009-02-11 20:42:15 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2009-02-11 20:42:15 +0000 |
commit | c7d8b0dfb8ae9670e2bc11ecf563200069a3a12f (patch) | |
tree | 822403086b3d6d77bb14846b6e286d59389da12c /Test | |
parent | 0d02cf343eda943c32f7edfd24f28dbbd7004e32 (diff) | |
download | zsh-c7d8b0dfb8ae9670e2bc11ecf563200069a3a12f.tar.gz zsh-c7d8b0dfb8ae9670e2bc11ecf563200069a3a12f.tar.xz zsh-c7d8b0dfb8ae9670e2bc11ecf563200069a3a12f.zip |
26546, 26556: sticky emulation for functions defined in emulate ... -c ...
environments, plus documentation
Diffstat (limited to 'Test')
-rw-r--r-- | Test/B07emulate.ztst | 174 |
1 files changed, 139 insertions, 35 deletions
diff --git a/Test/B07emulate.ztst b/Test/B07emulate.ztst index 57eea3806..dec809ea4 100644 --- a/Test/B07emulate.ztst +++ b/Test/B07emulate.ztst @@ -3,72 +3,176 @@ %prep isset() { + print -n "${1}: " if [[ -o $1 ]]; then print yes; else print no; fi } showopts() { - # Set for Bourne shell emulation - isset shwordsplit - # Set in native mode and unless "emulate -R" is in use - isset banghist + # Set for Bourne shell emulation + isset shwordsplit + # Set in native mode and unless "emulate -R" is in use + isset banghist + } + cshowopts() { + showopts + # Show a csh option, too + isset cshnullglob } %test - (showopts + (print Before + showopts fn() { emulate sh } fn + print After showopts) 0:Basic use of emulate ->no ->yes ->yes ->yes +>Before +>shwordsplit: no +>banghist: yes +>After +>shwordsplit: yes +>banghist: yes fn() { emulate -L sh + print During showopts } + print Before showopts fn + print After showopts 0:Use of emulate -L ->no ->yes ->yes ->yes ->no ->yes +>Before +>shwordsplit: no +>banghist: yes +>During +>shwordsplit: yes +>banghist: yes +>After +>shwordsplit: no +>banghist: yes - (showopts + (print Before + showopts emulate -R sh + print After showopts) 0:Use of emulate -R ->no ->yes ->yes ->no +>Before +>shwordsplit: no +>banghist: yes +>After +>shwordsplit: yes +>banghist: no + print Before showopts - emulate sh -c 'showopts' + emulate sh -c 'print During; showopts' + print After showopts 0:Use of emulate -c ->no ->yes ->yes ->yes ->no ->yes - +>Before +>shwordsplit: no +>banghist: yes +>During +>shwordsplit: yes +>banghist: yes +>After +>shwordsplit: no +>banghist: yes + print Before showopts - emulate -R sh -c 'showopts' + emulate -R sh -c 'print During; showopts' + print After showopts 0:Use of emulate -R -c ->no ->yes ->yes ->no ->no ->yes +>Before +>shwordsplit: no +>banghist: yes +>During +>shwordsplit: yes +>banghist: no +>After +>shwordsplit: no +>banghist: yes + + print Before + showopts + emulate -R sh -c 'shshowopts() { showopts; }' + print After definition + showopts + print In sticky emulation + shshowopts + print After sticky emulation + showopts +0:Basic sticky function emulation +>Before +>shwordsplit: no +>banghist: yes +>After definition +>shwordsplit: no +>banghist: yes +>In sticky emulation +>shwordsplit: yes +>banghist: no +>After sticky emulation +>shwordsplit: no +>banghist: yes + + print Before + cshowopts + emulate -R sh -c 'shshowopts() { cshowopts; }' + emulate csh -c 'cshshowopts() { + cshowopts + print In nested sh emulation + shshowopts + }' + print After definition + cshowopts + print In sticky csh emulation + cshshowopts + print After sticky emulation + cshowopts +0:Basic sticky function emulation +>Before +>shwordsplit: no +>banghist: yes +>cshnullglob: no +>After definition +>shwordsplit: no +>banghist: yes +>cshnullglob: no +>In sticky csh emulation +>shwordsplit: no +>banghist: yes +>cshnullglob: yes +>In nested sh emulation +>shwordsplit: yes +>banghist: no +>cshnullglob: no +>After sticky emulation +>shwordsplit: no +>banghist: yes +>cshnullglob: no + + isalp() { if [[ -o alwayslastprompt ]]; then print on; else print off; fi; } + emulate sh -c 'shfunc_inner() { setopt alwayslastprompt; }' + emulate csh -c 'cshfunc_inner() { setopt alwayslastprompt; }' + emulate sh -c 'shfunc_outer() { + unsetopt alwayslastprompt; + shfunc_inner; + isalp + unsetopt alwayslastprompt + cshfunc_inner + isalp + }' + shfunc_outer +0:Sticky emulation not triggered if sticky emulation unchanged +>on +>off |