File: scoping.fish

package info (click to toggle)
fish 4.2.1-3.1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 35,980 kB
  • sloc: python: 6,972; javascript: 1,407; sh: 1,009; xml: 411; ansic: 230; objc: 78; makefile: 20
file content (271 lines) | stat: -rw-r--r-- 3,826 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
#RUN: %fish %s
# Test scoping rules for functions and status

set -e smurf

function setter
    set smurf green
end

function unsetter
    set -e smurf
end

function call1
    set smurf blue
    setter
    if test $smurf = blue
        echo Test 1 pass
    else
        echo Test 1 fail
    end
end

function call2
    set smurf blue
    unsetter
    if test $smurf = blue
        echo Test 2 pass
    else
        echo Test 2 fail
    end
end

call1
#CHECK: Test 1 pass
call2
#CHECK: Test 2 pass

function call3
    setter
    if test $smurf = green
        echo Test 3 pass
    else
        echo Test 3 fail
    end
end

function call4
    unsetter
    if not set -q smurf
        echo Test 4 pass
    else
        echo Test 4 fail
    end
end

set -g smurf yellow
call3
#CHECK: Test 3 pass
call4
#CHECK: Test 4 pass

set -l foo 1
set -g bar 2
set -U baz 3

set -l -q foo

if test $status -ne 0
    echo Test 5 fail
else
    echo Test 5 pass
end
#CHECK: Test 5 pass

if not set -g -q bar
    echo Test 6 fail
else
    echo Test 6 pass
end
#CHECK: Test 6 pass

if not set -U -q baz
    echo Test 7 fail
else
    echo Test 7 pass
end
#CHECK: Test 7 pass

set -u -l -q foo
if test $status -ne 0
    echo Test 8 fail
else
    echo Test 8 pass

end
#CHECK: Test 8 pass

if not set -u -g -q bar
    echo Test 9 fail
else
    echo Test 9 pass
end
#CHECK: Test 9 pass

if not set -u -U -q baz
    echo Test 10 fail
else
    echo Test 10 pass
end
#CHECK: Test 10 pass

set -x -l -q foo
if test $status -eq 0
    echo Test 11 fail
else
    echo Test 11 pass
end
#CHECK: Test 11 pass

if set -x -g -q bar
    echo Test 12 fail
else
    echo Test 12 pass
end
#CHECK: Test 12 pass

if set -x -U -q baz
    echo Test 13 fail
else
    echo Test 13 pass
end
#CHECK: Test 13 pass

set -x -l foo 1
set -x -g bar 2
set -x -U baz 3

set -l -q foo
if test $status -ne 0
    echo Test 14 fail
else
    echo Test 14 pass
end
#CHECK: Test 14 pass

if not set -g -q bar
    echo Test 15 fail
else
    echo Test 15 pass
end
#CHECK: Test 15 pass

if not set -U -q baz
    echo Test 16 fail
else
    echo Test 16 pass

end
#CHECK: Test 16 pass

set -u -l -q foo
if test $status -ne 1
    echo Test 17 fail
else
    echo Test 17 pass
end
#CHECK: Test 17 pass

if set -u -g -q bar
    echo Test 18 fail
else
    echo Test 18 pass
end
#CHECK: Test 18 pass

if set -u -U -q baz
    echo Test 19 fail
else
    echo Test 19 pass

end
#CHECK: Test 19 pass

set -x -l -q foo
if test $status -ne 0
    echo Test 20 fail
else
    echo Test 20 pass
end
#CHECK: Test 20 pass

if not set -x -g -q bar
    echo Test 21 fail
else
    echo Test 21 pass
end
#CHECK: Test 21 pass

if not set -x -U -q baz
    echo Test 22 fail
else
    echo Test 22 pass
end
#CHECK: Test 22 pass

set -U -e baz

# Verify subcommand statuses
echo (false) $status (true) $status (false) $status
#CHECK: 1 0 1

# Verify that set passes through exit status, except when passed -n or -q or -e
false
set foo bar
echo 1 $status # passthrough
#CHECK: 1 1
true
set foo bar
echo 2 $status # passthrough
#CHECK: 2 0
false
set -q foo
echo 3 $status # no passthrough
#CHECK: 3 0
true
set -q foo
echo 4 $status # no passthrough
#CHECK: 4 0
false
set -n >/dev/null
echo 5 $status # no passthrough
#CHECK: 5 0
false
set -e foo
echo 6 $status # no passthrough
#CHECK: 6 0
true
set -e foo
echo 7 $status # no passthrough
#CHECK: 7 4
false
set -h >/dev/null
# CHECKERR: Documentation for set

echo 8 $status # no passthrough
#CHECK: 8 0
true
set -NOT_AN_OPTION 2>/dev/null
echo 9 $status # no passthrough
#CHECK: 9 2
false
set foo (echo A; true)
echo 10 $status $foo
#CHECK: 10 0 A
true
set foo (echo B; false)
echo 11 $status $foo
#CHECK: 11 1 B
true

function setql_check
    set -l setql_foo val
    if set -ql setql_foo
        echo Pass
    else
        echo Fail
    end
end
setql_check
#CHECK: Pass