| case | dash | bash | mksh | osh | description |
| 0 | pass | pass | pass | pass | String length |
| 1 | pass | pass | pass | pass | Length of undefined variable |
| 2 | ok | pass | pass | pass | Length of undefined variable with nounset |
| details | |||||
| 3 | N-I | pass | pass | FAIL | Cannot take length of substring slice |
| details | details | ||||
| 4 | N-I | pass | pass | FAIL | Pattern replacement |
| details | details | ||||
| 5 | N-I | pass | pass | FAIL | String slice |
| details | details | ||||
| 6 | N-I | pass | pass | FAIL | Negative string slice |
| details | details | ||||
| 7 | N-I | pass | pass | FAIL | String slice with math |
| details | details |
21 passed, 1 ok, 5 known unimplemented, 0 known bugs, 5 failed, 0 skipped
| dash | 2 Length of undefined variable with nounset stdout: stderr: /bin/dash: 2: undef: parameter not set |
| dash | 3 Cannot take length of substring slice stdout: 5stderr: |
| osh | 3 Cannot take length of substring slice [osh status] Expected 1, got 2 stdout: stderr: Line 2 of '<stdin>'
echo ${#v:1:3}
^
Expected } after length expression, got (token id:VOp2_Colon val:":" span_id:8)
---
Line 2 of '<stdin>'
echo ${#v:1:3}
^
Error reading command word
---
Line 0 of '<unknown>'
<token had no position info>
NO COL
Error parsing AndOr in ParseCommandTerm
---
|
| dash | 4 Pattern replacement stdout: stderr: /bin/dash: 2: Bad substitution |
| osh | 4 Pattern replacement [osh stdout] Expected b'abXX\n', got b'' stdout: stderr: Traceback (most recent call last):
File "bin/osh", line 378, in <module>
sys.exit(main(sys.argv))
File "bin/osh", line 368, in main
return OshMain(main_argv)
File "bin/osh", line 327, in OshMain
status = ex.Execute(node)
File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 959, in Execute
status = self._Execute(node)
File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 824, in _Execute
status = self._Execute(child) # last status wins
File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 721, in _Execute
argv = self.ev.EvalWordSequence(words)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 1045, in EvalWordSequence
return self._EvalWordSequence(words)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 1028, in _EvalWordSequence
args = self._EvalWordAndReframe(w)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 989, in _EvalWordAndReframe
part_vals = self._EvalParts(word)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 882, in _EvalParts
for v in self.part_ev._EvalWordPart(p, quoted=quoted):
File "/home/andy/git/oil/bin/../core/word_eval.py", line 804, in _EvalWordPart
return self._EvalBracedVarSub(part, quoted)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 711, in _EvalBracedVarSub
if LookupKind(part.suffix_op.op_id) == Kind.VTest:
AttributeError: 'PatSub' object has no attribute 'op_id'
|
| dash | 5 String slice stdout: stderr: /bin/dash: 2: Bad substitution |
| osh | 5 String slice [osh stdout] Expected b'bcd\n', got b'' stdout: stderr: Traceback (most recent call last):
File "bin/osh", line 378, in <module>
sys.exit(main(sys.argv))
File "bin/osh", line 368, in main
return OshMain(main_argv)
File "bin/osh", line 327, in OshMain
status = ex.Execute(node)
File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 959, in Execute
status = self._Execute(node)
File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 824, in _Execute
status = self._Execute(child) # last status wins
File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 721, in _Execute
argv = self.ev.EvalWordSequence(words)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 1045, in EvalWordSequence
return self._EvalWordSequence(words)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 1028, in _EvalWordSequence
args = self._EvalWordAndReframe(w)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 989, in _EvalWordAndReframe
part_vals = self._EvalParts(word)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 882, in _EvalParts
for v in self.part_ev._EvalWordPart(p, quoted=quoted):
File "/home/andy/git/oil/bin/../core/word_eval.py", line 804, in _EvalWordPart
return self._EvalBracedVarSub(part, quoted)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 711, in _EvalBracedVarSub
if LookupKind(part.suffix_op.op_id) == Kind.VTest:
AttributeError: 'Slice' object has no attribute 'op_id'
|
| dash | 6 Negative string slice stdout: stderr: /bin/dash: 2: Bad substitution |
| osh | 6 Negative string slice [osh stdout] Expected b'def\n', got b'' stdout: stderr: Traceback (most recent call last):
File "bin/osh", line 378, in <module>
sys.exit(main(sys.argv))
File "bin/osh", line 368, in main
return OshMain(main_argv)
File "bin/osh", line 327, in OshMain
status = ex.Execute(node)
File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 959, in Execute
status = self._Execute(node)
File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 824, in _Execute
status = self._Execute(child) # last status wins
File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 721, in _Execute
argv = self.ev.EvalWordSequence(words)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 1045, in EvalWordSequence
return self._EvalWordSequence(words)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 1028, in _EvalWordSequence
args = self._EvalWordAndReframe(w)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 989, in _EvalWordAndReframe
part_vals = self._EvalParts(word)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 882, in _EvalParts
for v in self.part_ev._EvalWordPart(p, quoted=quoted):
File "/home/andy/git/oil/bin/../core/word_eval.py", line 804, in _EvalWordPart
return self._EvalBracedVarSub(part, quoted)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 711, in _EvalBracedVarSub
if LookupKind(part.suffix_op.op_id) == Kind.VTest:
AttributeError: 'Slice' object has no attribute 'op_id'
|
| dash | 7 String slice with math stdout: stderr: /bin/dash: 3: Bad substitution |
| osh | 7 String slice with math [osh stdout] Expected b'def\n', got b'' stdout: stderr: Traceback (most recent call last):
File "bin/osh", line 378, in <module>
sys.exit(main(sys.argv))
File "bin/osh", line 368, in main
return OshMain(main_argv)
File "bin/osh", line 327, in OshMain
status = ex.Execute(node)
File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 959, in Execute
status = self._Execute(node)
File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 824, in _Execute
status = self._Execute(child) # last status wins
File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 721, in _Execute
argv = self.ev.EvalWordSequence(words)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 1045, in EvalWordSequence
return self._EvalWordSequence(words)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 1028, in _EvalWordSequence
args = self._EvalWordAndReframe(w)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 989, in _EvalWordAndReframe
part_vals = self._EvalParts(word)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 882, in _EvalParts
for v in self.part_ev._EvalWordPart(p, quoted=quoted):
File "/home/andy/git/oil/bin/../core/word_eval.py", line 804, in _EvalWordPart
return self._EvalBracedVarSub(part, quoted)
File "/home/andy/git/oil/bin/../core/word_eval.py", line 711, in _EvalBracedVarSub
if LookupKind(part.suffix_op.op_id) == Kind.VTest:
AttributeError: 'Slice' object has no attribute 'op_id'
|