fish-shell/tests/pipestatus.expect
2019-02-24 21:46:52 -08:00

80 lines
1.9 KiB
Plaintext

# vim: set filetype=expect:
#
# Verify `$pipestatus` is preserved to next prompt.
spawn $fish
expect_prompt
# no pipe
send_line "true"
expect_prompt
send_line "echo \$pipestatus : \$status"
expect_prompt "0 : 0" {}
send_line "false"
expect_prompt
send_line "echo \$pipestatus : \$status"
expect_prompt "1 : 1" {}
# no pipe but negated
send_line "! true"
expect_prompt
send_line "echo \$pipestatus : \$status"
expect_prompt "0 : 1" {}
send_line "! false"
expect_prompt
send_line "echo \$pipestatus : \$status"
expect_prompt "1 : 0" {}
# pipe
send_line "false | true | false"
expect_prompt
send_line "echo \$pipestatus : \$status"
expect_prompt "1 0 1 : 1" {}
# pipe negated
send_line "! false | true | false"
expect_prompt
send_line "echo \$pipestatus : \$status"
expect_prompt "1 0 1 : 0" {}
# pipe mixed with builtins and external
send_line "command true | false | true | true"
expect_prompt
send_line "echo \$pipestatus : \$status"
expect_prompt "0 1 0 0 : 0" {}
send_line "command true | command false | command false"
expect_prompt
send_line "echo \$pipestatus : \$status"
expect_prompt "0 1 1 : 1" {}
send_line "sh -c 'exit 3' | command false | sh -c 'exit 5'"
expect_prompt
send_line "echo \$pipestatus : \$status"
expect_prompt "3 1 5 : 5" {}
# negated pipe with mixed builtin and external
send_line "! sh -c 'exit 3' | command false | sh -c 'exit 5'"
expect_prompt
send_line "echo \$pipestatus : \$status"
expect_prompt "3 1 5 : 0" {}
# block
send_line "command false | begin; command true; end | true"
expect_prompt
send_line "echo \$pipestatus : \$status"
expect_prompt "1 0 0 : 0" {}
send_line "command false | begin; ! true; end | true"
expect_prompt
send_line "echo \$pipestatus : \$status"
expect_prompt "1 1 0 : 0" {}
# syntax error
send_line "syntax terror"
expect_prompt
send_line "echo \$pipestatus : \$status"
expect_prompt "127 : 127" {}
send_line "syntax | terror"
expect_prompt
send_line "echo \$pipestatus : \$status"
expect_prompt "127 : 127" {}