fish-shell/tests/checks/fds.fish
ridiculousfish 9be77d1f9c Correctly handle "self fd redirections"
This adds a test for the obscure case where an fd is redirected to
itself. This is tricky because the dup2 will not clear the CLO_EXEC bit.
So do it manually; also posix_spawn can't be used in this case.
2019-12-13 16:51:49 -08:00

80 lines
1.3 KiB
Fish

# RUN: %fish -C "set helper %fish_test_helper" %s
# Check that we don't leave stray FDs.
$helper print_fds
# CHECK: 0 1 2
$helper print_fds 0>&-
# CHECK: 1 2
$helper print_fds 0>&- 2>&-
# CHECK: 1
false | $helper print_fds 0>&-
# CHECK: 0 1 2
$helper print_fds </dev/null
# CHECK: 0 1 2
$helper print_fds </dev/null
# CHECK: 0 1 2
$helper print_fds 3</dev/null
# CHECK: 0 1 2 3
# This attempts to trip a case where the file opened in fish
# has the same fd as the redirection. In this case, the dup2
# does not clear the CLO_EXEC bit.
$helper print_fds 4</dev/null
# CHECK: 0 1 2 4
$helper print_fds 5</dev/null
# CHECK: 0 1 2 5
$helper print_fds 6</dev/null
# CHECK: 0 1 2 6
$helper print_fds 7</dev/null
# CHECK: 0 1 2 7
$helper print_fds 8</dev/null
# CHECK: 0 1 2 8
$helper print_fds 9</dev/null
# CHECK: 0 1 2 9
$helper print_fds 10</dev/null
# CHECK: 0 1 2 10
$helper print_fds 11</dev/null
# CHECK: 0 1 2 11
$helper print_fds 12</dev/null
# CHECK: 0 1 2 12
$helper print_fds 13</dev/null
# CHECK: 0 1 2 13
$helper print_fds 14</dev/null
# CHECK: 0 1 2 14
$helper print_fds 15</dev/null
# CHECK: 0 1 2 15
$helper print_fds 16</dev/null
# CHECK: 0 1 2 16
$helper print_fds 17</dev/null
# CHECK: 0 1 2 17
$helper print_fds 18</dev/null
# CHECK: 0 1 2 18
$helper print_fds 19</dev/null
# CHECK: 0 1 2 19
$helper print_fds 20</dev/null
# CHECK: 0 1 2 20