aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/test3.in
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test3.in')
-rw-r--r--tests/test3.in135
1 files changed, 90 insertions, 45 deletions
diff --git a/tests/test3.in b/tests/test3.in
index 92cc1c86..51d545c6 100644
--- a/tests/test3.in
+++ b/tests/test3.in
@@ -113,23 +113,23 @@ end
# Test erasing variables in specific scope
-set -eU foo
-set -g foo bar
+set -eU __fish_test_universal_variables_variable_foo
+set -g __fish_test_universal_variables_variable_foo bar
begin
- set -l foo baz
- set -eg foo
+ set -l __fish_test_universal_variables_variable_foo baz
+ set -eg __fish_test_universal_variables_variable_foo
end
-if set -q foo
+if set -q __fish_test_universal_variables_variable_foo
echo Test 10 fail
else
echo Test 10 pass
end
-set foo abc def
-set -e foo[1]
-if test $foo '=' def
+set __fish_test_universal_variables_variable_foo abc def
+set -e __fish_test_universal_variables_variable_foo[1]
+if test $__fish_test_universal_variables_variable_foo '=' def
echo Test 11 pass
else
echo Test 11 fail
@@ -137,74 +137,83 @@ end
# Test combinations of export and scope
-set -ge foo
+set -ge __fish_test_universal_variables_variable_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
+set -Ue __fish_test_universal_variables_variable_foo
+set -Ux __fish_test_universal_variables_variable_foo bar
+set __fish_test_universal_variables_variable_foo baz
+if test (/bin/sh -c 'echo $__fish_test_universal_variables_variable_foo') = baz -a (../fish -c 'echo $__fish_test_universal_variables_variable_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
+set -Ue __fish_test_universal_variables_variable_foo
+set -Ux __fish_test_universal_variables_variable_foo bar
+set -U __fish_test_universal_variables_variable_foo baz
+if test (/bin/sh -c 'echo $__fish_test_universal_variables_variable_foo') = baz -a (../fish -c 'echo $__fish_test_universal_variables_variable_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
+set -Ux __fish_test_universal_variables_variable_foo bar
+set -u __fish_test_universal_variables_variable_foo bar
+if test (/bin/sh -c 'echo $__fish_test_universal_variables_variable_foo') = '' -a (../fish -c 'echo $__fish_test_universal_variables_variable_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
+set -Ux __fish_test_universal_variables_variable_foo bar
+set -Uu __fish_test_universal_variables_variable_foo baz
+if test (/bin/sh -c 'echo $__fish_test_universal_variables_variable_foo') = '' -a (../fish -c 'echo $__fish_test_universal_variables_variable_foo') = baz
echo Test 15 pass
else
echo Test 15 fail
end
-set -eU foo
+set -eU __fish_test_universal_variables_variable_foo
+function watch_foo --on-variable __fish_test_universal_variables_variable_foo
+ echo Foo change detected
+end
+
+set -U __fish_test_universal_variables_variable_foo 1234
+set -eU __fish_test_universal_variables_variable_foo
+
+functions -e watch_foo
+
# test erasing variables without a specified scope
set -g test16res
-set -U foo universal
-set -g foo global
+set -U __fish_test_universal_variables_variable_foo universal
+set -g __fish_test_universal_variables_variable_foo global
begin
- set -l foo blocklocal
+ set -l __fish_test_universal_variables_variable_foo blocklocal
function test16
- set -l foo function
+ set -l __fish_test_universal_variables_variable_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)
+ set -l __fish_test_universal_variables_variable_foo functionblock
+
+ set test16res $test16res (echo $__fish_test_universal_variables_variable_foo)
+ set -e __fish_test_universal_variables_variable_foo
+ set test16res $test16res (echo $__fish_test_universal_variables_variable_foo)
+ set -e __fish_test_universal_variables_variable_foo
+ set test16res $test16res (echo $__fish_test_universal_variables_variable_foo)
+ set -e __fish_test_universal_variables_variable_foo
+ set test16res $test16res (echo $__fish_test_universal_variables_variable_foo)
+ set -e __fish_test_universal_variables_variable_foo
+ set test16res $test16res (echo $__fish_test_universal_variables_variable_foo)
end
- set test16res $test16res (echo $foo)
- set -e foo
+ set test16res $test16res (echo $__fish_test_universal_variables_variable_foo)
+ set -e __fish_test_universal_variables_variable_foo
end
test16
- set test16res $test16res (echo $foo)
+ set test16res $test16res (echo $__fish_test_universal_variables_variable_foo)
end
-set test16res $test16res (echo $foo)
+set test16res $test16res (echo $__fish_test_universal_variables_variable_food)
#echo count: (count $test16res) "content:[$test16res]"
@@ -215,6 +224,42 @@ else
end
-# clear foo for other shells
-set -eU foo
+# clear for other shells
+set -eU __fish_test_universal_variables_variable_foo
+
+# Test behavior of universals on startup (#1526)
+echo Testing Universal Startup
+set -U testu 0
+../fish -c 'set -U testu 1'
+echo $testu
+../fish -c 'echo $testu'
+
+../fish -c 'set -U testu 2'
+echo $testu
+../fish -c 'echo $testu'
+
+../fish -c 'set -e testu';
+echo Missing: $testu
+../fish -c 'echo Missing: $testu'
+
+# test SHLVL
+# use a subshell to ensure a clean slate
+env SHLVL= ../fish -c 'echo SHLVL: $SHLVL; ../fish -c \'echo SHLVL: $SHLVL\''
+# exec should decrement SHLVL
+env SHLVL= ../fish -c 'echo SHLVL: $SHLVL; exec ../fish -c \'echo SHLVL: $SHLVL\''
+# garbage SHLVLs should be treated as garbage
+env SHLVL=3foo ../fish -c 'echo SHLVL: $SHLVL'
+# whitespace is allowed though (for bash compatibility)
+env SHLVL="3 " ../fish -c 'echo SHLVL: $SHLVL'
+env SHLVL=" 3" ../fish -c 'echo SHLVL: $SHLVL'
+
+# Test transformation of inherited variables
+env DISPLAY="localhost:0.0" ../fish -c 'echo Elements in DISPLAY: (count $DISPLAY)'
+# We can't use PATH for this because the global configuration will modify PATH
+# based on /etc/paths and /etc/paths.d.
+# Exported arrays should use record separator, with a few exceptions. So we can use an arbitrary variable for this.
+env FOO=one\x1etwo\x1ethree\x1efour ../fish -c 'echo Elements in FOO: (count $FOO)'
+# some must use colon separators!
+set -lx MANPATH man1 man2 man3 ; env | grep MANPATH
+
true