Results for glob.test.sh

statusoshosh-cpp
pass 3133
FAIL 86
total3939
caseoshosh-cppdescription
0pass pass glob double quote escape
1pass pass glob single quote escape
2pass pass glob backslash escape
3pass pass 1 char glob
4pass pass 0 char glob -- does NOT work
5pass pass looks like glob at the start, but isn't
6pass pass looks like glob plus negation at the start, but isn't
7pass pass glob can expand to command and arg
8pass pass glob after var expansion
9pass pass quoted var expansion with glob meta characters
10pass pass glob after "$@" expansion
11pass pass glob after $@ expansion
12pass pass no glob after ~ expansion
13pass pass store literal globs in array then expand
14pass pass glob inside array
15pass pass glob with escaped - in char class
16pass pass glob with char class expression
17pass pass glob double quotes
18pass pass glob escaped
19pass pass : escaped
20pass pass Glob after var manipulation
21pass pass Glob after part joining
22pass pass Glob flags on file system
23pass pass set -o noglob
24pass pass set -o noglob (bug #698)
25pass pass shopt -s nullglob
26FAIL FAIL shopt -s failglob in command context
detailsdetails
27FAIL FAIL shopt -s failglob in loop context
detailsdetails
28FAIL FAIL shopt -s failglob in array literal context
detailsdetails
29FAIL pass shopt -s failglob exits properly in command context with set -e
details
30FAIL pass shopt -s failglob exits properly in loop context with set -e
details
31FAIL FAIL shopt -s failglob behavior on single line with semicolon
detailsdetails
32pass pass Splitting/Globbing doesn't happen on local assignment
33pass pass Glob of unescaped [[] and []]
34pass pass Glob of negated unescaped [[] and []]
35FAIL FAIL PatSub of unescaped [[] and []]
detailsdetails
36FAIL FAIL PatSub of negated unescaped [[] and []]
detailsdetails
37pass pass Glob unicode char
38pass pass dotglob (bash option that dashglob is roughly consistent with)
64 passed, 0 OK, 0 not implemented, 0 BUG, 8 failed, 0 timeouts, 0 cases skipped
8 failed under osh

Details on runs that didn't PASS

osh26 shopt -s failglob in command context

[osh stdout] Expected "['*.ZZ']\nstatus=1\n", got "['*.ZZ']\n"
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
['*.ZZ']
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 1253, 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 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2603, in EvalWordSequence2
    self._EvalWordFrame(frame, strs)
  File "/home/uke/oil/osh/word_eval.py", line 2308, in _EvalWordFrame
    raise error.FailGlob('Pattern %r matched no files' % a,
UnboundLocalError: local variable 'a' referenced before assignment
osh-cpp26 shopt -s failglob in command context

[osh-cpp stdout] Expected "['*.ZZ']\nstatus=1\n", got "['*.ZZ']\n"
[osh-cpp status] Expected 0, got 1

stdout:
['*.ZZ']
stderr:
AddressSanitizer:DEADLYSIGNAL
=================================================================
==16912==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x55dc6f6a4904 bp 0x7ffc92093080 sp 0x7ffc92092bf0 T0)
==16912==The signal is caused by a READ memory access.
==16912==Hint: address points to the zero page.
    #0 0x55dc6f6a4903 in _StrFormat mycpp/gc_str.cc:585
    #1 0x55dc6f6a541d in StrFormat(char const*, ...) mycpp/gc_str.cc:634
    #2 0x55dc6f3cfb6b in word_eval::AbstractWordEvaluator::_EvalWordFrame(List<runtime_asdl::Piece*>*, List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:49161
    #3 0x55dc6f3d50fe in word_eval::AbstractWordEvaluator::EvalWordSequence2(List<syntax_asdl::CompoundWord*>*, bool, bool) _gen/bin/oils_for_unix.mycpp.cc:49487
    #4 0x55dc6f347905 in cmd_eval::CommandEvaluator::_DoSimple(syntax_asdl::command__Simple*, runtime_asdl::CommandStatus*) _gen/bin/oils_for_unix.mycpp.cc:38023
    #5 0x55dc6f353b1d in cmd_eval::CommandEvaluator::_Dispatch(syntax_asdl::command_t*, runtime_asdl::CommandStatus*) _gen/bin/oils_for_unix.mycpp.cc:38921
    #6 0x55dc6f356946 in cmd_eval::CommandEvaluator::_Execute(syntax_asdl::command_t*) _gen/bin/oils_for_unix.mycpp.cc:39201
    #7 0x55dc6f35869a in cmd_eval::CommandEvaluator::ExecuteAndCatch(syntax_asdl::command_t*, int) _gen/bin/oils_for_unix.mycpp.cc:39372
    #8 0x55dc6f2a156e in main_loop::Batch2(cmd_eval::CommandEvaluator*, cmd_parse::CommandParser*, ui::ErrorFormatter*, int) _gen/bin/oils_for_unix.mycpp.cc:25526
    #9 0x55dc6f2a0f2e in main_loop::Batch(cmd_eval::CommandEvaluator*, cmd_parse::CommandParser*, ui::ErrorFormatter*, int) _gen/bin/oils_for_unix.mycpp.cc:25480
    #10 0x55dc6f46adae in shell::Main(BigStr*, args::Reader*, Dict<BigStr*, BigStr*>*, bool, pyutil::_ResourceLoader*, py_readline::Readline*) _gen/bin/oils_for_unix.mycpp.cc:60428
    #11 0x55dc6f1cd081 in oils_for_unix::AppBundleMain(List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:11139
    #12 0x55dc6f1cd5cd in oils_for_unix::main(List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:11171
    #13 0x55dc6f46d4d7 in main _gen/bin/oils_for_unix.mycpp.cc:60453
    #14 0x7fbf83a5a09a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
    #15 0x55dc6f1a8fd9 in _start (/home/uke/oil/_bin/cxx-asan/oils-for-unix+0x13dfd9)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV mycpp/gc_str.cc:585 in _StrFormat
==16912==ABORTING
osh27 shopt -s failglob in loop context

[osh stdout] Expected '*.ZZ\nstatus=0\nstatus=1\n', got '*.ZZ\nstatus=0\n'
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
*.ZZ
status=0
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 1253, 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 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1861, in _Dispatch
    status = self._DoForEach(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1261, in _DoForEach
    iter_list = self.word_ev.EvalWordSequence(words)
  File "/home/uke/oil/osh/word_eval.py", line 2624, in EvalWordSequence
    cmd_val = self.EvalWordSequence2(words, False)
  File "/home/uke/oil/osh/word_eval.py", line 2603, in EvalWordSequence2
    self._EvalWordFrame(frame, strs)
  File "/home/uke/oil/osh/word_eval.py", line 2308, in _EvalWordFrame
    raise error.FailGlob('Pattern %r matched no files' % a,
UnboundLocalError: local variable 'a' referenced before assignment
osh-cpp27 shopt -s failglob in loop context

[osh-cpp stdout] Expected '*.ZZ\nstatus=0\nstatus=1\n', got '*.ZZ\nstatus=0\n'
[osh-cpp status] Expected 0, got 1

stdout:
*.ZZ
status=0
stderr:
AddressSanitizer:DEADLYSIGNAL
=================================================================
==16952==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x563d0064d904 bp 0x7ffe2fd5b660 sp 0x7ffe2fd5b1d0 T0)
==16952==The signal is caused by a READ memory access.
==16952==Hint: address points to the zero page.
    #0 0x563d0064d903 in _StrFormat mycpp/gc_str.cc:585
    #1 0x563d0064e41d in StrFormat(char const*, ...) mycpp/gc_str.cc:634
    #2 0x563d00378b6b in word_eval::AbstractWordEvaluator::_EvalWordFrame(List<runtime_asdl::Piece*>*, List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:49161
    #3 0x563d0037e0fe in word_eval::AbstractWordEvaluator::EvalWordSequence2(List<syntax_asdl::CompoundWord*>*, bool, bool) _gen/bin/oils_for_unix.mycpp.cc:49487
    #4 0x563d0037e7c2 in word_eval::AbstractWordEvaluator::EvalWordSequence(List<syntax_asdl::CompoundWord*>*) _gen/bin/oils_for_unix.mycpp.cc:49503
    #5 0x563d002f5ff3 in cmd_eval::CommandEvaluator::_DoForEach(syntax_asdl::command__ForEach*) _gen/bin/oils_for_unix.mycpp.cc:38412
    #6 0x563d002fddcb in cmd_eval::CommandEvaluator::_Dispatch(syntax_asdl::command_t*, runtime_asdl::CommandStatus*) _gen/bin/oils_for_unix.mycpp.cc:39056
    #7 0x563d002ff946 in cmd_eval::CommandEvaluator::_Execute(syntax_asdl::command_t*) _gen/bin/oils_for_unix.mycpp.cc:39201
    #8 0x563d0030169a in cmd_eval::CommandEvaluator::ExecuteAndCatch(syntax_asdl::command_t*, int) _gen/bin/oils_for_unix.mycpp.cc:39372
    #9 0x563d0024a56e in main_loop::Batch2(cmd_eval::CommandEvaluator*, cmd_parse::CommandParser*, ui::ErrorFormatter*, int) _gen/bin/oils_for_unix.mycpp.cc:25526
    #10 0x563d00249f2e in main_loop::Batch(cmd_eval::CommandEvaluator*, cmd_parse::CommandParser*, ui::ErrorFormatter*, int) _gen/bin/oils_for_unix.mycpp.cc:25480
    #11 0x563d00413dae in shell::Main(BigStr*, args::Reader*, Dict<BigStr*, BigStr*>*, bool, pyutil::_ResourceLoader*, py_readline::Readline*) _gen/bin/oils_for_unix.mycpp.cc:60428
    #12 0x563d00176081 in oils_for_unix::AppBundleMain(List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:11139
    #13 0x563d001765cd in oils_for_unix::main(List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:11171
    #14 0x563d004164d7 in main _gen/bin/oils_for_unix.mycpp.cc:60453
    #15 0x7f7c7474e09a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
    #16 0x563d00151fd9 in _start (/home/uke/oil/_bin/cxx-asan/oils-for-unix+0x13dfd9)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV mycpp/gc_str.cc:585 in _StrFormat
==16952==ABORTING
osh28 shopt -s failglob in array literal context

[osh stdout] Expected '*.ZZ\nstatus=1\n', got '*.ZZ\n'
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
*.ZZ
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 1253, 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 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1711, in _Dispatch
    status = self._DoShAssignment(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1028, in _DoShAssignment
    rhs = self.word_ev.EvalRhsWord(pair.rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2239, in EvalRhsWord
    for v in self.EvalWordSequence(words):
  File "/home/uke/oil/osh/word_eval.py", line 2624, in EvalWordSequence
    cmd_val = self.EvalWordSequence2(words, False)
  File "/home/uke/oil/osh/word_eval.py", line 2603, in EvalWordSequence2
    self._EvalWordFrame(frame, strs)
  File "/home/uke/oil/osh/word_eval.py", line 2308, in _EvalWordFrame
    raise error.FailGlob('Pattern %r matched no files' % a,
UnboundLocalError: local variable 'a' referenced before assignment
osh-cpp28 shopt -s failglob in array literal context

[osh-cpp stdout] Expected '*.ZZ\nstatus=1\n', got '*.ZZ\n'
[osh-cpp status] Expected 0, got 1

stdout:
*.ZZ
stderr:
AddressSanitizer:DEADLYSIGNAL
=================================================================
==16986==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x5600a9308904 bp 0x7ffdf00645e0 sp 0x7ffdf0064150 T0)
==16986==The signal is caused by a READ memory access.
==16986==Hint: address points to the zero page.
    #0 0x5600a9308903 in _StrFormat mycpp/gc_str.cc:585
    #1 0x5600a930941d in StrFormat(char const*, ...) mycpp/gc_str.cc:634
    #2 0x5600a9033b6b in word_eval::AbstractWordEvaluator::_EvalWordFrame(List<runtime_asdl::Piece*>*, List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:49161
    #3 0x5600a90390fe in word_eval::AbstractWordEvaluator::EvalWordSequence2(List<syntax_asdl::CompoundWord*>*, bool, bool) _gen/bin/oils_for_unix.mycpp.cc:49487
    #4 0x5600a90397c2 in word_eval::AbstractWordEvaluator::EvalWordSequence(List<syntax_asdl::CompoundWord*>*) _gen/bin/oils_for_unix.mycpp.cc:49503
    #5 0x5600a90328df in word_eval::AbstractWordEvaluator::EvalRhsWord(syntax_asdl::rhs_word_t*) _gen/bin/oils_for_unix.mycpp.cc:49081
    #6 0x5600a8fad832 in cmd_eval::CommandEvaluator::_DoShAssignment(syntax_asdl::command__ShAssignment*, runtime_asdl::CommandStatus*) _gen/bin/oils_for_unix.mycpp.cc:38158
    #7 0x5600a8fb7c36 in cmd_eval::CommandEvaluator::_Dispatch(syntax_asdl::command_t*, runtime_asdl::CommandStatus*) _gen/bin/oils_for_unix.mycpp.cc:38929
    #8 0x5600a8fba946 in cmd_eval::CommandEvaluator::_Execute(syntax_asdl::command_t*) _gen/bin/oils_for_unix.mycpp.cc:39201
    #9 0x5600a8fbc69a in cmd_eval::CommandEvaluator::ExecuteAndCatch(syntax_asdl::command_t*, int) _gen/bin/oils_for_unix.mycpp.cc:39372
    #10 0x5600a8f0556e in main_loop::Batch2(cmd_eval::CommandEvaluator*, cmd_parse::CommandParser*, ui::ErrorFormatter*, int) _gen/bin/oils_for_unix.mycpp.cc:25526
    #11 0x5600a8f04f2e in main_loop::Batch(cmd_eval::CommandEvaluator*, cmd_parse::CommandParser*, ui::ErrorFormatter*, int) _gen/bin/oils_for_unix.mycpp.cc:25480
    #12 0x5600a90cedae in shell::Main(BigStr*, args::Reader*, Dict<BigStr*, BigStr*>*, bool, pyutil::_ResourceLoader*, py_readline::Readline*) _gen/bin/oils_for_unix.mycpp.cc:60428
    #13 0x5600a8e31081 in oils_for_unix::AppBundleMain(List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:11139
    #14 0x5600a8e315cd in oils_for_unix::main(List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:11171
    #15 0x5600a90d14d7 in main _gen/bin/oils_for_unix.mycpp.cc:60453
    #16 0x7fea2b85f09a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
    #17 0x5600a8e0cfd9 in _start (/home/uke/oil/_bin/cxx-asan/oils-for-unix+0x13dfd9)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV mycpp/gc_str.cc:585 in _StrFormat
==16986==ABORTING
osh29 shopt -s failglob exits properly in command context with set -e

[osh stderr] Found 'Traceback (most recent'

stdout:
['*.ZZ']
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 1253, 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 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2603, in EvalWordSequence2
    self._EvalWordFrame(frame, strs)
  File "/home/uke/oil/osh/word_eval.py", line 2308, in _EvalWordFrame
    raise error.FailGlob('Pattern %r matched no files' % a,
UnboundLocalError: local variable 'a' referenced before assignment
osh30 shopt -s failglob exits properly in loop context with set -e

[osh stderr] Found 'Traceback (most recent'

stdout:
*.ZZ
status=0
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 1253, 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 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1861, in _Dispatch
    status = self._DoForEach(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1261, in _DoForEach
    iter_list = self.word_ev.EvalWordSequence(words)
  File "/home/uke/oil/osh/word_eval.py", line 2624, in EvalWordSequence
    cmd_val = self.EvalWordSequence2(words, False)
  File "/home/uke/oil/osh/word_eval.py", line 2603, in EvalWordSequence2
    self._EvalWordFrame(frame, strs)
  File "/home/uke/oil/osh/word_eval.py", line 2308, in _EvalWordFrame
    raise error.FailGlob('Pattern %r matched no files' % a,
UnboundLocalError: local variable 'a' referenced before assignment
osh31 shopt -s failglob behavior on single line with semicolon

[osh stdout] Expected 'status=1\nstatus=1\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 1253, 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 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1812, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1719, in _Dispatch
    status = self._Execute(node.child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2603, in EvalWordSequence2
    self._EvalWordFrame(frame, strs)
  File "/home/uke/oil/osh/word_eval.py", line 2308, in _EvalWordFrame
    raise error.FailGlob('Pattern %r matched no files' % a,
UnboundLocalError: local variable 'a' referenced before assignment
osh-cpp31 shopt -s failglob behavior on single line with semicolon

[osh-cpp stdout] Expected 'status=1\nstatus=1\n', got ''
[osh-cpp status] Expected 0, got 1

stdout:
stderr: 
AddressSanitizer:DEADLYSIGNAL
=================================================================
==17088==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x5569e3842904 bp 0x7ffdc03a19f0 sp 0x7ffdc03a1560 T0)
==17088==The signal is caused by a READ memory access.
==17088==Hint: address points to the zero page.
    #0 0x5569e3842903 in _StrFormat mycpp/gc_str.cc:585
    #1 0x5569e384341d in StrFormat(char const*, ...) mycpp/gc_str.cc:634
    #2 0x5569e356db6b in word_eval::AbstractWordEvaluator::_EvalWordFrame(List<runtime_asdl::Piece*>*, List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:49161
    #3 0x5569e35730fe in word_eval::AbstractWordEvaluator::EvalWordSequence2(List<syntax_asdl::CompoundWord*>*, bool, bool) _gen/bin/oils_for_unix.mycpp.cc:49487
    #4 0x5569e34e5905 in cmd_eval::CommandEvaluator::_DoSimple(syntax_asdl::command__Simple*, runtime_asdl::CommandStatus*) _gen/bin/oils_for_unix.mycpp.cc:38023
    #5 0x5569e34f1b1d in cmd_eval::CommandEvaluator::_Dispatch(syntax_asdl::command_t*, runtime_asdl::CommandStatus*) _gen/bin/oils_for_unix.mycpp.cc:38921
    #6 0x5569e34f4946 in cmd_eval::CommandEvaluator::_Execute(syntax_asdl::command_t*) _gen/bin/oils_for_unix.mycpp.cc:39201
    #7 0x5569e34f1d31 in cmd_eval::CommandEvaluator::_Dispatch(syntax_asdl::command_t*, runtime_asdl::CommandStatus*) _gen/bin/oils_for_unix.mycpp.cc:38936
    #8 0x5569e34f4946 in cmd_eval::CommandEvaluator::_Execute(syntax_asdl::command_t*) _gen/bin/oils_for_unix.mycpp.cc:39201
    #9 0x5569e34f5704 in cmd_eval::CommandEvaluator::_ExecuteList(List<syntax_asdl::command_t*>*) _gen/bin/oils_for_unix.mycpp.cc:39266
    #10 0x5569e34f29a4 in cmd_eval::CommandEvaluator::_Dispatch(syntax_asdl::command_t*, runtime_asdl::CommandStatus*) _gen/bin/oils_for_unix.mycpp.cc:39015
    #11 0x5569e34f4946 in cmd_eval::CommandEvaluator::_Execute(syntax_asdl::command_t*) _gen/bin/oils_for_unix.mycpp.cc:39201
    #12 0x5569e34f669a in cmd_eval::CommandEvaluator::ExecuteAndCatch(syntax_asdl::command_t*, int) _gen/bin/oils_for_unix.mycpp.cc:39372
    #13 0x5569e343f56e in main_loop::Batch2(cmd_eval::CommandEvaluator*, cmd_parse::CommandParser*, ui::ErrorFormatter*, int) _gen/bin/oils_for_unix.mycpp.cc:25526
    #14 0x5569e343ef2e in main_loop::Batch(cmd_eval::CommandEvaluator*, cmd_parse::CommandParser*, ui::ErrorFormatter*, int) _gen/bin/oils_for_unix.mycpp.cc:25480
    #15 0x5569e3608dae in shell::Main(BigStr*, args::Reader*, Dict<BigStr*, BigStr*>*, bool, pyutil::_ResourceLoader*, py_readline::Readline*) _gen/bin/oils_for_unix.mycpp.cc:60428
    #16 0x5569e336b081 in oils_for_unix::AppBundleMain(List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:11139
    #17 0x5569e336b5cd in oils_for_unix::main(List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:11171
    #18 0x5569e360b4d7 in main _gen/bin/oils_for_unix.mycpp.cc:60453
    #19 0x7f1ed05b109a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
    #20 0x5569e3346fd9 in _start (/home/uke/oil/_bin/cxx-asan/oils-for-unix+0x13dfd9)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV mycpp/gc_str.cc:585 in _StrFormat
==17088==ABORTING
osh35 PatSub of unescaped [[] and []]

[osh stdout] Expected '<foo]\n[foo>\n<foo]\n[foo>\n', got '<foo]\n[foo>\n[foo]\n[foo>\n'

stdout:
<foo]
[foo>
[foo]
[foo>
stderr:
osh-cpp35 PatSub of unescaped [[] and []]

[osh-cpp stdout] Expected '<foo]\n[foo>\n<foo]\n[foo>\n', got '<foo]\n[foo>\n[foo]\n[foo>\n'

stdout:
<foo]
[foo>
[foo]
[foo>
stderr:
osh36 PatSub of negated unescaped [[] and []]

[osh stdout] Expected '[<<<<\n>>>>]\n[<<<<\n', got '[<<<<\n>>>>]\n[foo]\n'

stdout:
[<<<<
>>>>]
[foo]
stderr:
osh-cpp36 PatSub of negated unescaped [[] and []]

[osh-cpp stdout] Expected '[<<<<\n>>>>]\n[<<<<\n', got '[<<<<\n>>>>]\n[foo]\n'

stdout:
[<<<<
>>>>]
[foo]
stderr: