Results for redirect.test.sh

casedashbashmkshoshosh_ALTdescription
0pass pass pass pass pass >&
1pass pass pass pass pass <&
2pass pass pass pass pass Leading redirect
3ok pass pass pass pass Nonexistent file
details
4pass pass pass pass pass Redirect in command sub
5ok ok ok pass pass Redirect in assignment is invalid
detailsdetailsdetails
6ok ok ok pass pass Redirect in assignment
detailsdetailsdetails
7pass pass pass pass pass Redirect in function body.
8ok pass pass pass pass Bad redirects in function body
details
9N-I pass pass pass pass Redirect in function body is evaluated multiple times
details
10pass pass pass pass pass Redirect in function body AND function call
11pass pass pass pass pass Descriptor redirect with spaces
12pass pass pass pass pass Filename redirect with spaces
13pass pass pass pass pass Quoted filename redirect with spaces
14ok BUG pass pass pass Descriptor redirect with filename
detailsdetails
15pass pass pass pass pass redirect for loop
16pass pass pass pass pass redirect subshell
17pass pass ok pass pass Prefix redirect for loop -- not allowed
details
18pass pass pass pass pass Brace group redirect
19pass pass pass pass pass Redirect echo to stderr, and then redirect all of stdout somewhere.
20pass pass pass pass pass Redirect in the middle of two assignments
21pass pass pass pass pass Redirect in the middle of a command
22N-I pass N-I FAIL FAIL Named file descriptor
detailsdetailsdetailsdetails
23pass pass pass pass pass Redirect function stdout
24pass pass pass pass pass Nested function stdout redirect
25ok pass pass pass pass Redirect to empty string
details
26ok pass pass pass pass Redirect to file descriptor that's not open
details
27pass pass pass pass pass Open descriptor with exec
28pass pass pass pass pass Open multiple descriptors with exec
29ok pass pass FAIL FAIL >| to clobber
detailsdetailsdetails
30N-I pass pass pass pass &> redirects stdout and stderr
details
31N-I pass N-I FAIL FAIL 1>&2- to close file descriptor
detailsdetailsdetailsdetails
32pass pass pass FAIL FAIL <> for read/write
detailsdetails
33N-I pass pass pass pass &>> appends stdout and stderr
details
34pass pass pass pass pass exec redirect then various builtins
35pass pass pass pass pass >$file touches a file
36N-I pass pass FAIL FAIL $(< $file) yields the contents of the file
detailsdetailsdetails
37pass pass pass pass pass 2>&1 with no command
38ok pass ok pass pass 2&>1 (is it a redirect or is it like a&>1)
detailsdetails

161 passed, 15 ok, 8 known unimplemented, 1 known bugs, 5 failed, 0 skipped

Details on runs that didn't PASS

dash3 Nonexistent file

stdout:
status=2
stderr:
_tmp/spec-bin/dash: 1: cannot open /home/andy/git/oilshell/oil/_tmp/spec-tmp/redirect.test.sh/nonexistent.txt: No such file
dash5 Redirect in assignment is invalid

stdout:
stderr: 
bash5 Redirect in assignment is invalid

stdout:
stderr: 
mksh5 Redirect in assignment is invalid

stdout:
stderr: 
dash6 Redirect in assignment

stdout:
FILE=
foo
FOO=
stderr:
bash6 Redirect in assignment

stdout:
FILE=
FOO=
stderr:
foo
mksh6 Redirect in assignment

stdout:
FILE=
foo
FOO=
stderr:
dash8 Bad redirects in function body

stdout:
status=2
stderr:
_tmp/spec-bin/dash: 2: cannot create : Directory nonexistent
dash9 Redirect in function body is evaluated multiple times

stdout:
stderr: 
_tmp/spec-bin/dash: 2: arithmetic expression: expecting primary: "i++"
dash14 Descriptor redirect with filename

stdout:
stderr: 
_tmp/spec-bin/dash: 2: Syntax error: Bad fd number
bash14 Descriptor redirect with filename

stdout:
status=0
stderr:
mksh17 Prefix redirect for loop -- not allowed

stdout:
stderr: 
_tmp/spec-bin/mksh: <stdin>[1]: for: not found
_tmp/spec-bin/mksh: <stdin>[2]: syntax error: 'do' unexpected
dash22 Named file descriptor

stdout:
stderr: 
_tmp/spec-bin/dash: 1: exec: {myfd}: not found
mksh22 Named file descriptor

stdout:
stderr: 
_tmp/spec-bin/mksh: <stdin>[1]: {myfd}: not found
osh22 Named file descriptor

[osh stdout] Expected 'named-fd-contents\n', got ''
[osh status] Expected 0, got 127

stdout:
stderr: 
  exec {myfd}> $TMP/named-fd.txt
       ^
[ stdin ]:1: Can't execute '{myfd}': No such file or directory
osh_ALT22 Named file descriptor

[osh_ALT stdout] Expected 'named-fd-contents\n', got ''
[osh_ALT status] Expected 0, got 127

stdout:
stderr: 
  exec {myfd}> $TMP/named-fd.txt
       ^
[ stdin ]:1: Can't execute '{myfd}': No such file or directory
dash25 Redirect to empty string

stdout:
result=2
stderr:
_tmp/spec-bin/dash: 2: cannot create : Directory nonexistent
_tmp/spec-bin/dash: 5: cannot create : Directory nonexistent
dash26 Redirect to file descriptor that's not open

stdout:
stderr: 
_tmp/spec-bin/dash: 1: 9: Bad file descriptor
dash29 >| to clobber

stdout:
status=2
XX
ZZ
stderr:
_tmp/spec-bin/dash: 3: cannot create /home/andy/git/oilshell/oil/_tmp/spec-tmp/redirect.test.sh/c.txt: File exists
osh29 >| to clobber

[osh stdout] Expected u'status=1\nXX\nZZ\n', got 'status=0\nYY\nZZ\n'

stdout:
status=0
YY
ZZ
stderr:
osh_ALT29 >| to clobber

[osh_ALT stdout] Expected u'status=1\nXX\nZZ\n', got 'status=0\nYY\nZZ\n'

stdout:
status=0
YY
ZZ
stderr:
dash30 &> redirects stdout and stderr

stdout:
STDOUT
stderr:
STDERR
dash31 1>&2- to close file descriptor

stdout:
stderr: 
_tmp/spec-bin/dash: 2: Syntax error: Bad fd number
mksh31 1>&2- to close file descriptor

stdout:
stderr: 
_tmp/spec-bin/mksh: <stdin>[1]: >&2- : illegal file descriptor name
osh31 1>&2- to close file descriptor

[osh status] Expected 0, got 1

stdout:
stderr: 
  echo hi 1>&2-
             ^~
[ stdin ]:1: Redirect descriptor should look like an integer, got (value.Str s:2-)
osh_ALT31 1>&2- to close file descriptor

[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
  echo hi 1>&2-
             ^~
[ stdin ]:1: Redirect descriptor should look like an integer, got (value.Str s:2-)
osh32 <> for read/write

[osh stdout] Expected u'line=first\nCONTENTS\nfirst\nsecond\n', got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 865, in <module>
    main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 833, in main
    sys.exit(AppBundleMain(argv))
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 803, in AppBundleMain
    status = ShellMain('osh', argv0, main_argv, login_shell)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 616, in ShellMain
    status = main_loop.Batch(ex, c_parser, arena, nodes_out=nodes_out)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 162, in Batch
    is_control_flow, is_fatal = ex.ExecuteAndCatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1195, in ExecuteAndCatch
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1133, in _Execute
    if self.fd_state.Push(redirects, self.waiter):
  File "/home/andy/git/oilshell/oil/core/process.py", line 333, in Push
    if not self._ApplyRedirect(r, waiter):
  File "/home/andy/git/oilshell/oil/core/process.py", line 235, in _ApplyRedirect
    raise NotImplementedError(r.op_id)
NotImplementedError: <Id_t Redir_LessGreat 62>
osh_ALT32 <> for read/write

[osh_ALT stdout] Expected u'line=first\nCONTENTS\nfirst\nsecond\n', got ''
[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 852, in _cpython_main_hook
    main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 833, in main
    sys.exit(AppBundleMain(argv))
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 803, in AppBundleMain
    status = ShellMain('osh', argv0, main_argv, login_shell)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 616, in ShellMain
    status = main_loop.Batch(ex, c_parser, arena, nodes_out=nodes_out)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 168, in Batch
    return status
  File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1195, in ExecuteAndCatch
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1133, in _Execute
    if self.fd_state.Push(redirects, self.waiter):
  File "/home/andy/git/oilshell/oil/core/process.py", line 333, in Push
    if not self._ApplyRedirect(r, waiter):
  File "/home/andy/git/oilshell/oil/core/process.py", line 319, in _ApplyRedirect
    posix.close(write_fd)
NotImplementedError: <Id_t Redir_LessGreat 62>
FATAL: couldn't import from app bundle '_tmp/oil-tar-test/oil-0.6.0/_bin/osh' (1)
Stripping the oil.ovm binary may cause this error.
See https://github.com/oilshell/oil/issues/47
dash33 &>> appends stdout and stderr

stdout:
stderr: 
dash36 $(< $file) yields the contents of the file

stdout:
stderr: 
osh36 $(< $file) yields the contents of the file

[osh stdout] Expected 'FOO\n', got '\n'

stdout:
stderr: 
osh_ALT36 $(< $file) yields the contents of the file

[osh_ALT stdout] Expected 'FOO\n', got '\n'

stdout:
stderr: 
dash38 2&>1 (is it a redirect or is it like a&>1)

stdout:
status=0
stderr:
_tmp/spec-bin/dash: 2: 2: not found
mksh38 2&>1 (is it a redirect or is it like a&>1)

stdout:
status=0
stderr: