diff --git a/shell/ash_test/ash-vars/var_leak.right b/shell/ash_test/ash-vars/var_leak.right index 45c5458dd..be78112c8 100644 --- a/shell/ash_test/ash-vars/var_leak.right +++ b/shell/ash_test/ash-vars/var_leak.right @@ -1,2 +1,3 @@ should be empty: '' -should be empty: '' +should be not empty: 'val2' +should be not empty: 'val3' diff --git a/shell/ash_test/ash-vars/var_leak.tests b/shell/ash_test/ash-vars/var_leak.tests index 1b1123fb7..032059295 100755 --- a/shell/ash_test/ash-vars/var_leak.tests +++ b/shell/ash_test/ash-vars/var_leak.tests @@ -1,9 +1,18 @@ -# This currently fails with CONFIG_FEATURE_SH_NOFORK=y +# true is a regular builtin, varibale should not leak out of it +# this currently fails with CONFIG_FEATURE_SH_NOFORK=y VAR='' -VAR=qwe true +VAR=val1 true echo "should be empty: '$VAR'" -# This fails (always) +# ash follows the "special builtin leaks variables" rule here: +# exec is a special builtin. (bash does not do it) VAR='' -VAR=qwe exec 2>&1 -echo "should be empty: '$VAR'" +VAR=val2 exec 2>&1 +echo "should be not empty: '$VAR'" + +# ash follows the "function call is a special builtin" rule here +# (bash does not do it) +f() { true; } +VAR='' +VAR=val3 f +echo "should be not empty: '$VAR'"