Results for here-doc.test.sh

statusdashbashmkshosh
pass 31333228
ok 0021
N-I 3000
BUG 0100
FAIL 0005
total34343434
casedashbashmkshoshdescription
0N-I pass pass pass Here string
details
1N-I pass pass pass Here string with $
details
2pass pass pass pass Here redirect with explicit descriptor
3pass pass pass pass Here doc from another input file descriptor
4pass pass pass pass Multiple here docs with different descriptors
5pass pass pass ok Here doc with bad var delimiter
details
6pass BUG ok pass Here doc with bad comsub delimiter
detailsdetails
7pass pass pass pass Here doc and < redirect -- last one wins
8pass pass pass pass < redirect and here doc -- last one wins
9pass pass pass FAIL Here doc with var sub, command sub, arith sub
details
10pass pass pass pass Here doc in middle. And redirects in the middle.
11pass pass pass pass Here doc line continuation
12pass pass pass pass Here doc with quote expansion in terminator
13pass pass pass pass Here doc with multiline double quoted string
14pass pass pass pass Two here docs -- first is ignored; second ones wins!
15pass pass ok pass Here doc with line continuation, then pipe. Syntax error.
details
16pass pass pass pass Here doc with pipe on first line
17pass pass pass pass Here doc with pipe continued on last line
18pass pass pass pass Here doc with builtin 'read'
19pass pass pass pass Compound command here doc
20pass pass pass pass Here doc in while condition and here doc in body
21pass pass pass pass Here doc in while condition and here doc in body on multiple lines
22pass pass pass pass Here doc in while loop split up more
23pass pass pass pass Mixing << and <<-
24pass pass pass pass Two compound commands with two here docs
25pass pass pass pass Function def and execution with here doc
26pass pass pass pass Here doc as command prefix
27pass pass pass pass Redirect after here doc
28pass pass pass pass here doc stripping tabs
29N-I pass pass FAIL Here doc within subshell with boolean
detailsdetails
30pass pass pass pass Here Doc in if condition
31pass pass pass FAIL Nested here docs which are indented
details
32pass pass pass FAIL Multiple here docs in pipeline
details
33pass pass pass FAIL Multiple here docs in pipeline on multiple lines
details
124 passed, 3 OK, 3 not implemented, 1 BUG, 5 failed, 0 timeouts, 0 cases skipped
5 failed under osh

Details on runs that didn't PASS

dash0 Here string

stdout:
stderr: 
dash: 1: Syntax error: redirection unexpected
dash1 Here string with $

stdout:
stderr: 
dash: 1: Syntax error: redirection unexpected
osh5 Here doc with bad var delimiter

stdout:
stderr: 
  cat <<${a}
        ^~
[ stdin ]:1: Invalid here doc delimiter
bash6 Here doc with bad comsub delimiter

stdout:
here
stderr:
mksh6 Here doc with bad comsub delimiter

stdout:
stderr: 
mksh: <stdin>[1]: syntax error: '(' unexpected
osh9 Here doc with var sub, command sub, arith sub

[osh stdout] Expected 'var: v\ncommand: hi\narith: 3\n', got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1266, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2285, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1985, in _Dispatch
    status = self._DoRedirect(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1718, in _DoRedirect
    redirects.append(self._EvalRedirect(redir))
  File "/home/uke/oil/osh/cmd_eval.py", line 725, in _EvalRedirect
    val = self.word_ev.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2097, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1875, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2623, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 693, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 621, in CaptureStdout
    fds = pyos.WaitForInputs([r, r2])
  File "/home/uke/oil/core/pyos.py", line 288, in WaitForInputs
    r, w, exc = select.select(fd, [], [fd])
TypeError: argument must be an int, or have a fileno() method
mksh15 Here doc with line continuation, then pipe. Syntax error.

stdout:
stderr: 
mksh: <stdin>[5]: cat: 1: No such file or directory
mksh: <stdin>[6]: syntax error: '|' unexpected
dash29 Here doc within subshell with boolean

stdout:
127
stderr:
dash: 1: [[: not found
osh29 Here doc within subshell with boolean

[osh stdout] Expected '0\n', got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1266, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2285, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1922, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2161, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1829, in _Dispatch
    status = self._Execute(node.child)
  File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1843, in _Dispatch
    result = self.bool_ev.EvalB(node.expr)
  File "/home/uke/oil/osh/sh_expr_eval.py", line 1231, in EvalB
    s1 = self._EvalCompoundWord(node.left)
  File "/home/uke/oil/osh/sh_expr_eval.py", line 1141, in _EvalCompoundWord
    val = self.word_ev.EvalWordToString(word, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 2097, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1875, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2623, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 693, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 621, in CaptureStdout
    fds = pyos.WaitForInputs([r, r2])
  File "/home/uke/oil/core/pyos.py", line 288, in WaitForInputs
    r, w, exc = select.select(fd, [], [fd])
TypeError: argument must be an int, or have a fileno() method
osh31 Nested here docs which are indented

[osh stdout] Expected 'outside\ninside\n', got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1266, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2285, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1985, in _Dispatch
    status = self._DoRedirect(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1718, in _DoRedirect
    redirects.append(self._EvalRedirect(redir))
  File "/home/uke/oil/osh/cmd_eval.py", line 725, in _EvalRedirect
    val = self.word_ev.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2097, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1875, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2623, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 693, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 621, in CaptureStdout
    fds = pyos.WaitForInputs([r, r2])
  File "/home/uke/oil/core/pyos.py", line 288, in WaitForInputs
    r, w, exc = select.select(fd, [], [fd])
TypeError: argument must be an int, or have a fileno() method
osh32 Multiple here docs in pipeline

[osh stdout] Expected '0: 3: fd3\n5: fd5\nok\n', got ''

stdout:
stderr: 
osh33 Multiple here docs in pipeline on multiple lines

[osh stdout] Expected '0: 3: fd3\n5: fd5\nok\n', got ''

stdout:
stderr: