1# RUN: %fish %s
2
3# erase all lowercase variables to make sure they don't break our tests
4for varname in (set -xn | string match -r '^[a-z].*')
5    while set -q $varname
6        set -e $varname
7    end
8end
9
10# CHECK: bar
11foo=bar echo $foo
12
13# CHECK: nil
14set -q foo; or echo nil
15
16# CHECK: lx
17foo=bar set -qlx foo; and echo lx
18
19# CHECK: 3
20a={1, 2, 3} count $a
21
22# CHECK: 1+2+3
23a={1, 2, 3} string join + $a
24
25# CHECK: 1 2 3
26a=(echo 1 2 3) echo $a
27
28# CHECK: a a2
29a=a b={$a}2 echo $a $b
30
31# CHECK: a
32a=a builtin echo $a
33
34# CHECK: 0
35a=failing-glob-* count $a
36
37# CHECK: ''
38a=b true | echo "'$a'"
39
40if a=b true
41    # CHECK: ''
42    echo "'$a'"
43end
44
45# CHECK: b
46not a=b echo $a
47
48# CHECK: b
49a=b not echo $a
50
51# CHECK: b
52a=b not builtin echo $a
53
54# CHECK: /usr/bin:/bin
55xPATH={/usr,}/bin sh -c 'echo $xPATH'
56
57# CHECK: 2
58yPATH=/usr/bin:/bin count $yPATH
59
60# CHECK: b
61a=b begin
62    true | echo $a
63end
64
65# CHECK: b
66a=b if true
67    echo $a
68end
69
70# CHECK: b
71a=b switch x
72    case x
73        echo $a
74end
75
76complete -c x --erase
77complete -c x -xa arg
78complete -C' a=b x ' # Mind the leading space.
79# CHECK: arg
80alias xalias=x
81complete -C'a=b xalias '
82# CHECK: arg
83alias envxalias='a=b x'
84complete -C'a=b envxalias '
85# CHECK: arg
86
87# Eval invalid grammar to allow fish to parse this file
88eval 'a=(echo b)'
89# CHECKERR: {{.*}}: Unsupported use of '='. In fish, please use 'set a (echo b)'.
90eval ': | a=b'
91# CHECKERR: {{.*}}: Unsupported use of '='. In fish, please use 'set a b'.
92eval 'not a=b'
93# CHECKERR: {{.*}}: Unsupported use of '='. In fish, please use 'set a b'.
94
95complete -c foo -xa '$a'
96a=b complete -C'foo '
97#CHECK: b
98