mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-22 13:18:59 +08:00
really fix bug in export status of universal vars; add tests for that bug
This commit is contained in:
parent
3c116f6ab3
commit
9ee7b0a501
6
env.cpp
6
env.cpp
|
@ -811,7 +811,7 @@ int env_set(const wcstring &key, const wchar_t *val, int var_mode)
|
|||
|
||||
if (var_mode & ENV_UNIVERSAL)
|
||||
{
|
||||
int exportv = 0;
|
||||
int exportv;
|
||||
|
||||
if (!(var_mode & ENV_EXPORT) &&
|
||||
!(var_mode & ENV_UNEXPORT))
|
||||
|
@ -868,12 +868,12 @@ int env_set(const wcstring &key, const wchar_t *val, int var_mode)
|
|||
|
||||
if (env_universal_get(key))
|
||||
{
|
||||
int exportv = 0;
|
||||
int exportv;
|
||||
|
||||
if (!(var_mode & ENV_EXPORT) &&
|
||||
!(var_mode & ENV_UNEXPORT))
|
||||
{
|
||||
env_universal_get_export(key);
|
||||
exportv = env_universal_get_export(key);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -134,3 +134,87 @@ if test $foo '=' def
|
|||
else
|
||||
echo Test 11 fail
|
||||
end
|
||||
|
||||
# Test combinations of export and scope
|
||||
|
||||
set -ge foo
|
||||
|
||||
set -Ue foo
|
||||
set -Ux foo bar
|
||||
set foo baz
|
||||
if test (/bin/sh -c 'echo $foo') = baz -a (../fish -c 'echo $foo') = baz
|
||||
echo Test 12 pass
|
||||
else
|
||||
echo Test 12 fail
|
||||
end
|
||||
|
||||
set -Ue foo
|
||||
set -Ux foo bar
|
||||
set -U foo baz
|
||||
if test (/bin/sh -c 'echo $foo') = baz -a (../fish -c 'echo $foo') = baz
|
||||
echo Test 13 pass
|
||||
else
|
||||
echo Test 13 fail
|
||||
end
|
||||
|
||||
set -Ux foo bar
|
||||
set -u foo bar
|
||||
if test (/bin/sh -c 'echo $foo') = '' -a (../fish -c 'echo $foo') = bar
|
||||
echo Test 14 pass
|
||||
else
|
||||
echo Test 14 fail
|
||||
end
|
||||
|
||||
set -Ux foo bar
|
||||
set -Uu foo baz
|
||||
if test (/bin/sh -c 'echo $foo') = '' -a (../fish -c 'echo $foo') = baz
|
||||
echo Test 15 pass
|
||||
else
|
||||
echo Test 15 fail
|
||||
end
|
||||
|
||||
set -eU foo
|
||||
|
||||
# test erasing variables without a specified scope
|
||||
|
||||
set -g test16res
|
||||
|
||||
set -U foo universal
|
||||
set -g foo global
|
||||
begin
|
||||
set -l foo blocklocal
|
||||
function test16
|
||||
set -l foo function
|
||||
begin
|
||||
set -l foo functionblock
|
||||
|
||||
set test16res $test16res (echo $foo)
|
||||
set -e foo
|
||||
set test16res $test16res (echo $foo)
|
||||
set -e foo
|
||||
set test16res $test16res (echo $foo)
|
||||
set -e foo
|
||||
set test16res $test16res (echo $foo)
|
||||
set -e foo
|
||||
set test16res $test16res (echo $foo)
|
||||
end
|
||||
set test16res $test16res (echo $foo)
|
||||
set -e foo
|
||||
end
|
||||
test16
|
||||
set test16res $test16res (echo $foo)
|
||||
end
|
||||
set test16res $test16res (echo $foo)
|
||||
|
||||
#echo count: (count $test16res) "content:[$test16res]"
|
||||
|
||||
if test (count $test16res) = 8 -a "$test16res" = "functionblock function global universal blocklocal "
|
||||
echo Test 16 pass
|
||||
else
|
||||
echo Test 16 fail
|
||||
end
|
||||
|
||||
|
||||
# clear foo for other shells
|
||||
set -eU foo
|
||||
true
|
||||
|
|
|
@ -9,3 +9,8 @@ Test 8 pass
|
|||
Test 9 pass
|
||||
Test 10 pass
|
||||
Test 11 pass
|
||||
Test 12 pass
|
||||
Test 13 pass
|
||||
Test 14 pass
|
||||
Test 15 pass
|
||||
Test 16 pass
|
||||
|
|
Loading…
Reference in New Issue
Block a user