about summary refs log tree commit diff
path: root/Test/runtests.zsh
diff options
context:
space:
mode:
authorBart Schaefer <schaefer@ipost.com>2020-11-28 09:23:10 -0800
committerBart Schaefer <schaefer@ipost.com>2021-04-13 21:18:34 -0700
commitdddae7f05582c6c8e91501dbea6106636cd76f6c (patch)
tree7a86eb982ba89eaf5ae323cff206ae84ad279b9e /Test/runtests.zsh
parent9dc195120cf4e01cd0068f90db12fc9a7eb522b5 (diff)
downloadzsh-dddae7f05582c6c8e91501dbea6106636cd76f6c.tar.gz
zsh-dddae7f05582c6c8e91501dbea6106636cd76f6c.tar.xz
zsh-dddae7f05582c6c8e91501dbea6106636cd76f6c.zip
Add PM_DECLARED and PM_DECLAREDNULL parameter flags.
This addresses the issue that "typeset foo" creates $foo set to an
empty string, which differs from typeset handling in bash and ksh.
It does this by concealing the internal value rather than alter
the way internal values are defaulted.

This imposes the following changes:

A typeset variable with no assignment triggers NO_UNSET warnings
when the name is used in parameter expansion or math.

The typeset -AEFHLRTZailux options are applied upon the first
assignment to the variable.  Explicit unset before the first
assignment discards all of those properties.  If any option is
applied to an existing name, historic behavior is unchanged.

Consequent to the foregoing, the (t) parameter expansion flag
prints nothing until after the first assignment, and the (i)
and (I) subscript flags also print nothing.

The bash behavior of "unset foo; typeset -p foo" is NOT used.
This is called out as an emulation distinction, not a change.

The test cases have not been updated, so several now fail.
The test harness has been updated to declare default values.
Diffstat (limited to 'Test/runtests.zsh')
-rw-r--r--Test/runtests.zsh2
1 files changed, 1 insertions, 1 deletions
diff --git a/Test/runtests.zsh b/Test/runtests.zsh
index 562234d91..b66d579b6 100644
--- a/Test/runtests.zsh
+++ b/Test/runtests.zsh
@@ -7,7 +7,7 @@ emulate zsh
 # protect from catastrophic failure of an individual test.
 # We could probably do that with subshells instead.
 
-integer success failure skipped retval
+integer success=0 failure=0 skipped=0 retval
 for file in "${(f)ZTST_testlist}"; do
   $ZTST_exe +Z -f $ZTST_srcdir/ztst.zsh $file
   retval=$?