spec test index / oilshell.org
| status | ysh | ysh-cpp | |
| pass | 9 | 9 | |
| FAIL | 4 | 4 | |
| total | 13 | 13 | |
| case | ysh | ysh-cpp | description |
| 0 | pass | pass | fastlex: NUL byte not allowed inside char literal #' ' |
| 1 | pass | pass | fastlex: NUL byte inside shebang line |
| 2 | pass | pass | Tea keywords don't interfere with YSH expressions |
| 3 | pass | pass | Catch AttributeError |
| 4 | pass | pass | Command sub paren parsing bug (#1387) |
| 5 | pass | pass | More Command sub paren parsing |
| 6 | pass | pass | don't execute empty command |
| 7 | FAIL | FAIL | Do && || with YSH constructs make sense/ |
| details | details | ||
| 8 | pass | pass | shvar then replace - bug #1986 context manager crash |
| 9 | pass | pass | Parsing crash - bug #2003 |
| 10 | FAIL | FAIL | proc with IFS= read -r line - dynamic scope - issue #2012 |
| details | details | ||
| 11 | FAIL | FAIL | func call inside proc call - error message attribution |
| details | details | ||
| 12 | FAIL | FAIL | Crash in parsing case - issue #2037 |
| details | details |
18 passed, 0 OK, 0 not implemented, 0 BUG, 4 failed, 0 timeouts, 0 cases skipped 4 failed under osh
| ysh | 7 Do && || with YSH constructs make sense/ [ysh stdout] Expected '', got '(List) [42]\n(Int) 42\n(Int) 42\n' stdout: (List) [42] (Int) 42 (Int) 42stderr: |
| ysh-cpp | 7 Do && || with YSH constructs make sense/ [ysh-cpp stdout] Expected '', got '(List) [42]\n(Int) 42\n(Int) 42\n' stdout: (List) [42] (Int) 42 (Int) 42stderr: |
| ysh | 10 proc with IFS= read -r line - dynamic scope - issue #2012 [ysh stdout] Expected 'zz\nyy\n', got 'zz\n' [ysh status] Expected 0, got 1 stdout: zzstderr: write $line
^~~~~
[ stdin ]:8: fatal: Undefined variable 'line'
echo yy | p-ifs
^~~~~
[ stdin ]:14: errexit PID 25694: command.Pipeline failed with status 1
|
| ysh-cpp | 10 proc with IFS= read -r line - dynamic scope - issue #2012 [ysh-cpp stdout] Expected 'zz\nyy\n', got 'zz\n' [ysh-cpp status] Expected 0, got 1 stdout: zzstderr: write $line
^~~~~
[ stdin ]:8: fatal: Undefined variable 'line'
echo yy | p-ifs
^~~~~
[ stdin ]:14: errexit PID 25709: command.Pipeline failed with status 1
|
| ysh | 11 func call inside proc call - error message attribution [ysh stdout] Expected '', got ' eval (ident([1,2,3]))\n ^\n[ -c flag ]:11: fatal: Arg 1 should be a Command, got List\n' stdout: eval (ident([1,2,3]))
^
[ -c flag ]:11: fatal: Arg 1 should be a Command, got List
stderr: |
| ysh-cpp | 11 func call inside proc call - error message attribution [ysh-cpp stdout] Expected '', got ' eval (ident([1,2,3]))\n ^\n[ -c flag ]:11: fatal: Arg 1 should be a Command, got List\n' stdout: eval (ident([1,2,3]))
^
[ -c flag ]:11: fatal: Arg 1 should be a Command, got List
stderr: |
| ysh | 12 Crash in parsing case - issue #2037 [ysh status] Expected 0, got 1 [ysh stderr] Found 'Traceback (most recent' stdout: stderr: Traceback (most recent call last):
File "/home/uke/oil/bin/oils_for_unix.py", line 198, in <module>
sys.exit(main(sys.argv))
File "/home/uke/oil/bin/oils_for_unix.py", line 170, in main
return AppBundleMain(argv)
File "/home/uke/oil/bin/oils_for_unix.py", line 137, in AppBundleMain
return shell.Main('ysh', arg_r, environ, login_shell, loader, readline)
File "/home/uke/oil/core/shell.py", line 1138, in Main
cmd_flags=cmd_eval.IsMainProgram)
File "/home/uke/oil/core/main_loop.py", line 340, in Batch
node = c_parser.ParseLogicalLine() # can raise ParseError
File "/home/uke/oil/osh/cmd_parse.py", line 2774, in ParseLogicalLine
node = self._ParseCommandLine()
File "/home/uke/oil/osh/cmd_parse.py", line 2633, in _ParseCommandLine
child = self.ParseAndOr()
File "/home/uke/oil/osh/cmd_parse.py", line 2557, in ParseAndOr
return self._ParseAndOr()
File "/home/uke/oil/osh/cmd_parse.py", line 2568, in _ParseAndOr
child = self.ParsePipeline()
File "/home/uke/oil/osh/cmd_parse.py", line 2516, in ParsePipeline
child = self.ParseCommand()
File "/home/uke/oil/osh/cmd_parse.py", line 2434, in ParseCommand
return self.ParseCompoundCommand()
File "/home/uke/oil/osh/cmd_parse.py", line 2063, in ParseCompoundCommand
n5 = self.ParseCase()
File "/home/uke/oil/osh/cmd_parse.py", line 1854, in ParseCase
return self.ParseYshCase(case_kw)
File "/home/uke/oil/osh/cmd_parse.py", line 1779, in ParseYshCase
discriminant = self.w_parser.NewlineOkForYshCase()
File "/home/uke/oil/osh/word_parse.py", line 1422, in NewlineOkForYshCase
next_id = self.lexer.LookAheadOne(lex_mode_e.Expr)
File "/home/uke/oil/frontend/lexer.py", line 337, in LookAheadOne
return self.line_lexer.LookAheadOne(lex_mode)
File "/home/uke/oil/frontend/lexer.py", line 178, in LookAheadOne
line_str = self.src_line.content
AttributeError: 'NoneType' object has no attribute 'content'
|
| ysh-cpp | 12 Crash in parsing case - issue #2037 [ysh-cpp status] Expected 0, got 1 stdout: stderr: AddressSanitizer:DEADLYSIGNAL
=================================================================
==25781==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x556f8aecf141 bp 0x7ffe3a245470 sp 0x7ffe3a245340 T0)
==25781==The signal is caused by a READ memory access.
==25781==Hint: address points to the zero page.
#0 0x556f8aecf140 in lexer::LineLexer::LookAheadOne(types_asdl::lex_mode_e) _gen/bin/oils_for_unix.mycpp.cc:31637
#1 0x556f8aed02c9 in lexer::Lexer::LookAheadOne(types_asdl::lex_mode_e) _gen/bin/oils_for_unix.mycpp.cc:31759
#2 0x556f8af941ab in word_parse::WordParser::NewlineOkForYshCase() _gen/bin/oils_for_unix.mycpp.cc:47610
#3 0x556f8af22103 in cmd_parse::CommandParser::ParseYshCase(syntax_asdl::Token*) _gen/bin/oils_for_unix.mycpp.cc:38402
#4 0x556f8af231c2 in cmd_parse::CommandParser::ParseCase() _gen/bin/oils_for_unix.mycpp.cc:38475
#5 0x556f8af26911 in cmd_parse::CommandParser::ParseCompoundCommand() _gen/bin/oils_for_unix.mycpp.cc:38690
#6 0x556f8af2cdf3 in cmd_parse::CommandParser::ParseCommand() _gen/bin/oils_for_unix.mycpp.cc:39078
#7 0x556f8af2de12 in cmd_parse::CommandParser::ParsePipeline() _gen/bin/oils_for_unix.mycpp.cc:39138
#8 0x556f8af2e880 in cmd_parse::CommandParser::_ParseAndOr() _gen/bin/oils_for_unix.mycpp.cc:39187
#9 0x556f8af2e602 in cmd_parse::CommandParser::ParseAndOr() _gen/bin/oils_for_unix.mycpp.cc:39176
#10 0x556f8af2f03c in cmd_parse::CommandParser::_ParseCommandLine() _gen/bin/oils_for_unix.mycpp.cc:39223
#11 0x556f8af303d9 in cmd_parse::CommandParser::ParseLogicalLine() _gen/bin/oils_for_unix.mycpp.cc:39333
#12 0x556f8ae6cfb3 in main_loop::Batch(cmd_eval::CommandEvaluator*, cmd_parse::CommandParser*, ui::ErrorFormatter*, int) _gen/bin/oils_for_unix.mycpp.cc:24172
#13 0x556f8b012afc in shell::Main(BigStr*, args::Reader*, Dict<BigStr*, BigStr*>*, bool, pyutil::_ResourceLoader*, py_readline::Readline*) _gen/bin/oils_for_unix.mycpp.cc:56914
#14 0x556f8adc0235 in oils_for_unix::AppBundleMain(List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:12265
#15 0x556f8adc0897 in oils_for_unix::main(List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:12301
#16 0x556f8b014aad in main _gen/bin/oils_for_unix.mycpp.cc:56936
#17 0x7fe966c8409a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
#18 0x556f8ad99fc9 in _start (/home/uke/oil/_bin/cxx-asan/oils-for-unix+0x19afc9)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV _gen/bin/oils_for_unix.mycpp.cc:31637 in lexer::LineLexer::LookAheadOne(types_asdl::lex_mode_e)
==25781==ABORTING
|