fish-shell/tests/test1.out
Kurtis Rader 905766fca2 Hoist for loop control var to enclosing scope (#4376)
* Hoist `for` loop control var to enclosing scope

It should be possible to reference the last value assigned to a `for`
loop control var when the loop terminates. This makes it easier to detect
if we broke out of the loop among other things.  This change makes fish
`for` loops behave like most other shells.

Fixes #1935

* Remove redundant line
2017-09-08 21:14:26 -07:00

136 lines
2.6 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
####################
# 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
errput
output
errput
output
####################
# 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)
####################
# 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