mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-27 21:33:09 +00:00
5eade35257
If a function process is deferred, allow it to be unbuffered. This permits certain simple cases where functions are piped to external commands to execute without buffering. This is a somewhat-hacky stopgap measure that can't really be extended to more general concurrent processes. However it is overall an improvement in user experience that might help flush out some bugs too.
145 lines
2.7 KiB
Text
145 lines
2.7 KiB
Text
|
|
####################
|
|
# Comments in odd places don't cause problems
|
|
1a
|
|
1b
|
|
2a
|
|
2b
|
|
|
|
####################
|
|
# Bracket expansion
|
|
x-1
|
|
x-1 x-2
|
|
foo-1 foo-23 foo-24
|
|
foo-{}
|
|
foo-{} foo-{}
|
|
foo-
|
|
|
|
foo- foo- foo- foo-
|
|
foo- foo-, foo-
|
|
|
|
####################
|
|
# Escaped newlines
|
|
foo bar
|
|
foobar
|
|
foobar
|
|
foo\
|
|
bar
|
|
a
|
|
b
|
|
c
|
|
|
|
####################
|
|
# Simple function tests
|
|
Test 2 pass
|
|
Test 3a pass
|
|
Test 3b pass
|
|
Test 4 pass
|
|
|
|
####################
|
|
# Ensure eval doesn't unnecessarily mess with the exit status
|
|
1
|
|
0
|
|
Test 5 pass
|
|
|
|
####################
|
|
# Verify that we can turn stderr into stdout and then pipe it
|
|
output
|
|
errput
|
|
output
|
|
errput
|
|
|
|
####################
|
|
# Test that trailing ^ doesn't trigger redirection, see #1873
|
|
caret_no_redirect 12345^
|
|
|
|
####################
|
|
# Verify that we can pipe something other than stdout
|
|
is_stdout
|
|
|
|
####################
|
|
# echo tests
|
|
abc\ndef
|
|
abc
|
|
def
|
|
abc\zdef
|
|
abc!def
|
|
abc!def
|
|
abcQdef
|
|
abcQ2def
|
|
abc
|
|
-
|
|
-h
|
|
0000000 376
|
|
0000001
|
|
Catch your breath
|
|
abc!def
|
|
abc!1def
|
|
|
|
####################
|
|
# Verify that pipes don't conflict with fd redirections
|
|
pipe 3
|
|
pipe 4
|
|
pipe 5
|
|
pipe 6
|
|
pipe 7
|
|
pipe 8
|
|
pipe 9
|
|
pipe 10
|
|
pipe 11
|
|
pipe 12
|
|
|
|
####################
|
|
# Make sure while loops don't run forever with no-exec (#1543)
|
|
Checking for infinite loops in no-execute
|
|
|
|
####################
|
|
# For loops with read-only vars is an error (#4342)
|
|
|
|
####################
|
|
# That goes for non-electric ones as well (#5548)
|
|
|
|
####################
|
|
# For loop control vars available outside the for block
|
|
$loop_var: set in local scope, unexported, with 1 elements
|
|
$loop_var[1]: length=1 value=|c|
|
|
$loop_var: not set in global scope
|
|
$loop_var: not set in universal scope
|
|
|
|
$loop_var: set in local scope, unexported, with 1 elements
|
|
$loop_var[1]: length=1 value=|b|
|
|
$loop_var: set in global scope, unexported, with 1 elements
|
|
$loop_var[1]: length=10 value=|global_val|
|
|
$loop_var: not set in universal scope
|
|
|
|
$loop_var: not set in local scope
|
|
$loop_var: set in global scope, unexported, with 1 elements
|
|
$loop_var[1]: length=10 value=|global_val|
|
|
$loop_var: not set in universal scope
|
|
|
|
$loop_var: set in local scope, unexported, with 1 elements
|
|
$loop_var[1]: length=2 value=|cc|
|
|
$loop_var: set in global scope, unexported, with 1 elements
|
|
$loop_var[1]: length=10 value=|global_val|
|
|
$loop_var: not set in universal scope
|
|
|
|
$loop_var: not set in local scope
|
|
$loop_var: set in global scope, unexported, with 1 elements
|
|
$loop_var[1]: length=10 value=|global_val|
|
|
$loop_var: not set in universal scope
|
|
|
|
|
|
####################
|
|
# Comments allowed in between lines (#1987)
|
|
before comment after comment
|
|
|
|
####################
|
|
# Backslashes are part of comments and do not join lines (#1255)
|
|
|
|
####################
|
|
# Verify $argv set correctly in sourced scripts (#139)
|
|
source argv {}
|
|
source argv {}
|
|
source argv {abc}
|
|
source argv {abc def}
|
|
1
|