RUN asdl/examples/typed_arith_parse_test.py > _test/py-unit/asdl/examples/typed_arith_parse_test.py.log
OK
RUN asdl/format_test.py > _test/py-unit/asdl/format_test.py.log
OK
RUN asdl/front_end_test.py > _test/py-unit/asdl/front_end_test.py.log
OK
RUN asdl/gen_python_test.py > _test/py-unit/asdl/gen_python_test.py.log
OK
RUN benchmarks/uftrace_allocs_test.py > _test/py-unit/benchmarks/uftrace_allocs_test.py.log
OK
RUN build/dynamic_deps_test.py > _test/py-unit/build/dynamic_deps_test.py.log
OK
RUN build/ninja_lib_test.py > _test/py-unit/build/ninja_lib_test.py.log
OK
RUN builtin/bracket_osh_test.py > _test/py-unit/builtin/bracket_osh_test.py.log
OK
RUN builtin/completion_osh_test.py > _test/py-unit/builtin/completion_osh_test.py.log
OK
RUN builtin/func_misc_test.py > _test/py-unit/builtin/func_misc_test.py.log
OK
RUN builtin/misc_osh_test.py > _test/py-unit/builtin/misc_osh_test.py.log
OK
RUN builtin/read_osh_test.py > _test/py-unit/builtin/read_osh_test.py.log
OK
RUN builtin/readline_osh_test.py > _test/py-unit/builtin/readline_osh_test.py.log
OK
RUN core/alloc_test.py > _test/py-unit/core/alloc_test.py.log
OK
RUN core/comp_ui_test.py > _test/py-unit/core/comp_ui_test.py.log
OK
RUN core/completion_test.py > _test/py-unit/core/completion_test.py.log

=== /home/uke/oil/_test/py-unit/core/completion_test.py.log ===

.
-- PREFIX 'm'

-- PREFIX 'opy/doc'

-- PREFIX o

-- PREFIX nonexistent/

-- PREFIX README.

-- PREFIX core

-- PREFIX asdl/R

-- PREFIX opy/doc

-- PREFIX opy/doc/

-- PREFIX /bi

-- PREFIX /tmp/oil_comp_test/

-- PREFIX ./o

-- PREFIX i
..E..
--- Case 3: 'noflags foo:bar --color=auto\t' with flags []

EE[]
['../oil/']
py <core.completion.UserSpec object at 0x7f57166569d0>
rb (None, None)
  words:
{<Id.Lit_Chars gre> <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars gre><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'gre'
rl_slice from byte 0 to 3: 'gre'
Completing words
partial_argv: [gre]
alias_words: [[]]
** DISPLAY_POS = 0
Completing 'gre' ... (Ctrl-C to cancel)
Found 1 match for 'gre' in 0 ms
  words:
{<Id.Lit_Chars gre> <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Left_DollarParen "$("><Id.Lit_Chars gre><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo $(gre'
rl_slice from byte 0 to 10: 'echo $(gre'
Completing words
partial_argv: [gre]
alias_words: [[]]
** DISPLAY_POS = 7
Completing 'echo $(gre' ... (Ctrl-C to cancel)
Found 1 match for 'echo $(gre' in 0 ms
  words:
{<Id.Lit_Chars gre> <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Left_Backtick "`"><Id.Lit_Chars gre><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo `gre'
rl_slice from byte 0 to 9: 'echo `gre'
Completing words
partial_argv: [gre]
alias_words: [[]]
** DISPLAY_POS = 6
Completing 'echo `gre' ... (Ctrl-C to cancel)
Found 1 match for 'echo `gre' in 0 ms
  words:
{<Id.Lit_Chars grep>}{<Id.Lit_Chars f> <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Left_Backtick "`"><Id.Lit_Chars grep><Id.WS_Space " "><Id.Lit_Chars f><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo `grep f'
rl_slice from byte 0 to 12: 'echo `grep f'
Completing words
partial_argv: [grep,f]
alias_words: [[]]
words[-1]: [(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 1
      col: 11
      line: (SourceLine line_num:1 content:"echo `grep f" src:(source.MainFile path:"<test_lib>"))
      tval: f
    )
    (Token id:Id.Lit_CompDummy length:0 col:12 line:...0x7f57165dbaa0 tval:"")
  ]
)]
display_pos 11
Completing 'echo `grep f' ... (Ctrl-C to cancel)
Found 2 matches for 'echo `grep f' in 0 ms
.<Api 'echo ~r' 0-7>
  words:
{<Id.Lit_Chars echo>}{<Id.Lit_Tilde "~"> <Id.Lit_Chars r> <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Lit_Tilde "~"><Id.Lit_Chars r><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo ~r'
rl_slice from byte 0 to 7: 'echo ~r'
<Api 'echo ~' 0-6>
  words:
{<Id.Lit_Chars echo>}{<Id.Lit_Tilde "~"> <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Lit_Tilde "~"><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo ~'
rl_slice from byte 0 to 6: 'echo ~'
  words:
{<Id.Lit_Chars echo>}{<Id.Lit_Chars a> <Id.Lit_Tilde "~"> <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Lit_Chars a><Id.Lit_Tilde "~"><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo a~'
rl_slice from byte 0 to 7: 'echo a~'
Completing words
partial_argv: [echo,a~]
alias_words: [[]]
words[-1]: [(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 1
      col: 5
      line: (SourceLine line_num:1 content:"echo a~" src:(source.MainFile path:"<test_lib>"))
      tval: a
    )
    (Token id:Id.Lit_Tilde length:1 col:6 line:...0x7f57165dbba8 tval:"~")
    (Token id:Id.Lit_CompDummy length:0 col:7 line:...0x7f57165dbba8 tval:"")
  ]
)]
display_pos 5
Completing 'echo a~' ... (Ctrl-C to cancel)
Found 0 matches for 'echo a~' in 0 ms
.  words:
{<Id.Lit_Chars cat>}
  redirects:
(Redir op:<Id.Redir_Less "<"> loc:(redir_loc.Fd fd:0) arg:{<Id.Lit_Chars b> <Id.Lit_CompDummy "">})
  tokens:
<Id.Lit_Chars cat><Id.WS_Space " "><Id.Redir_Less "<"><Id.WS_Space " "><Id.Lit_Chars b><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'cat < b'
rl_slice from byte 0 to 7: 'cat < b'
Completing redirect arg
  words:
{<Id.Lit_Chars echo>}
  redirects:
(Redir op:<Id.Redir_GreatAnd ">&"> loc:(redir_loc.Fd fd:1) arg:{<Id.Lit_CompDummy "">})
  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Redir_GreatAnd ">&"><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo >&'
rl_slice from byte 0 to 7: 'echo >&'
Didn't find anything to complete
..<Api 'echo $' 0-6>
  words:
{<Id.Lit_Chars echo>}{<Id.Lit_Dollar "$"> <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Lit_Dollar "$"><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo $'
rl_slice from byte 0 to 6: 'echo $'
<Api 'echo $P' 0-7>
  words:
{<Id.Lit_Chars echo>}{($ P) <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.VSub_DollarName "$P"><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo $P'
rl_slice from byte 0 to 7: 'echo $P'
<Api 'echo _${' 0-8>
  words:

  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Lit_Chars _><Id.Left_DollarBrace "${"><Id.Lit_CompDummy "">
  alias_words:

line: 'echo _${'
rl_slice from byte 0 to 8: 'echo _${'
<Api 'echo ${P' 0-8>
  words:

  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Left_DollarBrace "${"><Id.VSub_Name P><Id.Lit_CompDummy "">
  alias_words:

line: 'echo ${P'
rl_slice from byte 0 to 8: 'echo ${P'
<Api 'echo ${undef:-$P' 0-16>
  words:

  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Left_DollarBrace "${"><Id.VSub_Name undef><Id.VTest_ColonHyphen ":-"><Id.VSub_DollarName "$P"><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo ${undef:-$P'
rl_slice from byte 0 to 16: 'echo ${undef:-$P'
<Api 'echo ${undef:-$' 0-15>
  words:

  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Left_DollarBrace "${"><Id.VSub_Name undef><Id.VTest_ColonHyphen ":-"><Id.Lit_Dollar "$"><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo ${undef:-$'
rl_slice from byte 0 to 15: 'echo ${undef:-$'
<Api 'echo "$' 0-7>
  words:

  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Left_DoubleQuote "\""><Id.Lit_Dollar "$"><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo "$'
rl_slice from byte 0 to 7: 'echo "$'
<Api 'echo "$P' 0-8>
  words:

  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Left_DoubleQuote "\""><Id.VSub_DollarName "$P"><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo "$P'
rl_slice from byte 0 to 8: 'echo "$P'
<Api 'echo "${#P' 0-10>
  words:

  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Left_DoubleQuote "\""><Id.Left_DollarBrace "${"><Id.VSub_Pound "#"><Id.VSub_Name P><Id.Lit_CompDummy "">
  alias_words:

line: 'echo "${#P'
rl_slice from byte 0 to 10: 'echo "${#P'
<Api 'echo "$((PWD +P' 0-15>
  words:

  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Left_DoubleQuote "\""><Id.Left_DollarDParen "$(("><Id.Lit_ArithVarLike PWD><Id.Ignored_Space " "><Id.Arith_Plus "+"><Id.Lit_ArithVarLike P><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo "$((PWD +P'
rl_slice from byte 0 to 15: 'echo "$((PWD +P'
<Api 'echo "$(( $P' 0-12>
  words:

  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Left_DoubleQuote "\""><Id.Left_DollarDParen "$(("><Id.Ignored_Space " "><Id.VSub_DollarName "$P"><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo "$(( $P'
rl_slice from byte 0 to 12: 'echo "$(( $P'
.  words:
{<Id.Lit_Chars grep>}{<Id.Lit_Chars f> <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars grep><Id.WS_Space " "><Id.Lit_Chars f><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'grep f'
rl_slice from byte 0 to 6: 'grep f'
Completing words
partial_argv: [grep,f]
alias_words: [[]]
words[-1]: [(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 1
      col: 5
      line: (SourceLine line_num:1 content:"grep f" src:(source.MainFile path:"<test_lib>"))
      tval: f
    )
    (Token id:Id.Lit_CompDummy length:0 col:6 line:...0x7f57165dba48 tval:"")
  ]
)]
display_pos 5
Completing 'grep f' ... (Ctrl-C to cancel)
Found 2 matches for 'grep f' in 0 ms
  words:
{<Id.Lit_Chars grep>}{<Id.Lit_Chars g> <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars grep><Id.WS_Space " "><Id.Lit_Chars g><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'grep g'
rl_slice from byte 0 to 6: 'grep g'
Completing words
partial_argv: [grep,g]
alias_words: [[]]
words[-1]: [(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 1
      col: 5
      line: (SourceLine line_num:1 content:"grep g" src:(source.MainFile path:"<test_lib>"))
      tval: g
    )
    (Token id:Id.Lit_CompDummy length:0 col:6 line:...0x7f57165db9f0 tval:"")
  ]
)]
display_pos 5
Completing 'grep g' ... (Ctrl-C to cancel)
Found 0 matches for 'grep g' in 0 ms
  words:
{<Id.Lit_Chars g> <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars g><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'g'
rl_slice from byte 0 to 1: 'g'
Completing words
partial_argv: [g]
alias_words: [[]]
** DISPLAY_POS = 0
Completing 'g' ... (Ctrl-C to cancel)
Found 1 match for 'g' in 0 ms
  words:
{<Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: ''
rl_slice from byte 0 to 0: ''
Completing words
partial_argv: []
alias_words: [[]]
** DISPLAY_POS = 0
Completing '' ... (Ctrl-C to cancel)
Found 3 matches for '' in 0 ms
  words:
{<Id.Lit_Chars grep>}{<Id.Lit_Chars f> <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Lit_Chars hi><Id.WS_Space " "><Id.Op_DPipe "||"><Id.WS_Space " "><Id.Lit_Chars grep><Id.WS_Space " "><Id.Lit_Chars f><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo hi || grep f'
rl_slice from byte 0 to 17: 'echo hi || grep f'
Completing words
partial_argv: [grep,f]
alias_words: [[]]
words[-1]: [(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 1
      col: 16
      line: 
        (SourceLine
          line_num: 1
          content: "echo hi || grep f"
          src: (source.MainFile path:"<test_lib>")
        )
      tval: f
    )
    (Token id:Id.Lit_CompDummy length:0 col:17 line:...0x7f57165dbf18 tval:"")
  ]
)]
display_pos 16
Completing 'echo hi || grep f' ... (Ctrl-C to cancel)
Found 2 matches for 'echo hi || grep f' in 0 ms
  words:
{<Id.Lit_Chars grep>}{<Id.Lit_Chars f> <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars echo><Id.WS_Space " "><Id.Lit_Chars hi><Id.Op_Semi ";"><Id.WS_Space " "><Id.Lit_Chars grep><Id.WS_Space " "><Id.Lit_Chars f><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'echo hi; grep f'
rl_slice from byte 0 to 15: 'echo hi; grep f'
Completing words
partial_argv: [grep,f]
alias_words: [[]]
words[-1]: [(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 1
      col: 14
      line: (SourceLine line_num:1 content:"echo hi; grep f" src:(source.MainFile path:"<test_lib>"))
      tval: f
    )
    (Token id:Id.Lit_CompDummy length:0 col:15 line:...0x7f57165dbf70 tval:"")
  ]
)]
display_pos 14
Completing 'echo hi; grep f' ... (Ctrl-C to cancel)
Found 2 matches for 'echo hi; grep f' in 0 ms
  words:
{<Id.Lit_Chars grep>}{<Id.Lit_Chars f> <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_LBrace "{"><Id.WS_Space " "><Id.Lit_Chars echo><Id.WS_Space " "><Id.Lit_Chars hi><Id.Op_Semi ";"><Id.WS_Space " "><Id.Lit_Chars grep><Id.WS_Space " "><Id.Lit_Chars f><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: '{ echo hi; grep f'
rl_slice from byte 0 to 17: '{ echo hi; grep f'
Completing words
partial_argv: [grep,f]
alias_words: [[]]
words[-1]: [(CompoundWord
  parts: [
    (Token
      id: Id.Lit_Chars
      length: 1
      col: 16
      line: 
        (SourceLine
          line_num: 1
          content: "{ echo hi; grep f"
          src: (source.MainFile path:"<test_lib>")
        )
      tval: f
    )
    (Token id:Id.Lit_CompDummy length:0 col:17 line:...0x7f57165dbfc8 tval:"")
  ]
)]
display_pos 16
Completing '{ echo hi; grep f' ... (Ctrl-C to cancel)
Found 2 matches for '{ echo hi; grep f' in 0 ms
  words:

  redirects:

  tokens:
<Id.Lit_VarLike "var="><Id.VSub_DollarName "$v"><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'var=$v'
rl_slice from byte 0 to 6: 'var=$v'
  words:
{<Id.Lit_Chars local>}{<Id.Lit_VarLike "var="> ($ v) <Id.Lit_CompDummy "">}
  redirects:

  tokens:
<Id.Lit_Chars local><Id.WS_Space " "><Id.Lit_VarLike "var="><Id.VSub_DollarName "$v"><Id.Lit_CompDummy ""><Id.Eof_Real "">
  alias_words:

line: 'local var=$v'
rl_slice from byte 0 to 12: 'local var=$v'
.EE
======================================================================
ERROR: testShellFuncExecution (__main__.CompletionTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/uke/oil/core/completion_test.py", line 209, in testShellFuncExecution
    cmd_ev = test_lib.InitCommandEvaluator(arena=arena)
  File "/home/uke/oil/core/test_lib.py", line 295, in InitCommandEvaluator
    global_io = value.IO(None)
AttributeError: type object 'value' has no attribute 'IO'

======================================================================
ERROR: testMatchesOracle (__main__.InitCompletionTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/uke/oil/core/completion_test.py", line 779, in testMatchesOracle
    mem=mem)
  File "/home/uke/oil/core/test_lib.py", line 336, in EvalCode
    aliases=aliases)
  File "/home/uke/oil/core/test_lib.py", line 295, in InitCommandEvaluator
    global_io = value.IO(None)
AttributeError: type object 'value' has no attribute 'IO'

======================================================================
ERROR: testCompletesAliases (__main__.RootCompleterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/uke/oil/core/completion_test.py", line 514, in testCompletesAliases
    aliases=aliases)
  File "/home/uke/oil/core/test_lib.py", line 336, in EvalCode
    aliases=aliases)
  File "/home/uke/oil/core/test_lib.py", line 295, in InitCommandEvaluator
    global_io = value.IO(None)
AttributeError: type object 'value' has no attribute 'IO'

======================================================================
ERROR: testNoInfiniteLoop (__main__.RootCompleterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/uke/oil/core/completion_test.py", line 550, in testNoInfiniteLoop
    comp_lookup=comp_lookup)
  File "/home/uke/oil/core/test_lib.py", line 336, in EvalCode
    aliases=aliases)
  File "/home/uke/oil/core/test_lib.py", line 295, in InitCommandEvaluator
    global_io = value.IO(None)
AttributeError: type object 'value' has no attribute 'IO'

======================================================================
ERROR: testRunsUserDefinedFunctions (__main__.RootCompleterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/uke/oil/core/completion_test.py", line 444, in testRunsUserDefinedFunctions
    comp_lookup=comp_lookup)
  File "/home/uke/oil/core/test_lib.py", line 336, in EvalCode
    aliases=aliases)
  File "/home/uke/oil/core/test_lib.py", line 295, in InitCommandEvaluator
    global_io = value.IO(None)
AttributeError: type object 'value' has no attribute 'IO'

----------------------------------------------------------------------
Ran 16 tests in 0.030s

FAILED (errors=5)

FAIL: core/completion_test.py with code 1