def _TestGetCompletionType(buf): ev = test_lib.MakeTestEvaluator() arena = test_lib.MakeArena('<completion_test.py>') parse_ctx = parse_lib.ParseContext(arena, {}) w_parser, c_parser = parse_ctx.MakeParserForCompletion(buf, arena) print('---', buf) return completion._GetCompletionType(w_parser, c_parser, ev, debug_f)
def InitEvaluator(): word_ev = test_lib.MakeTestEvaluator() state.SetLocalString(word_ev.mem, 'x', '- -- ---') state.SetLocalString(word_ev.mem, 'y', 'y yy') state.SetLocalString(word_ev.mem, 'empty', '') state.SetLocalString(word_ev.mem, 'binding', 'spam=eggs') state.SetLocalString(word_ev.mem, 'binding_with_spaces', 'x=green eggs and ham') word_ev.mem.SetArgv(['x', 'foo', 'spam=eggs']) return word_ev
def _MakeRootCompleter(comp_state=None): comp_state = comp_state or completion.State() ev = test_lib.MakeTestEvaluator() pool = alloc.Pool() arena = pool.NewArena() arena.PushSource('<_MakeRootCompleter>') trail = parse_lib.Trail() parse_ctx = parse_lib.ParseContext(arena, {}, trail=trail) if 0: # enable for details debug_f = util.DebugFile(sys.stdout) else: debug_f = util.NullDebugFile() progress_f = ui.TestStatusLine() return completion.RootCompleter(ev, comp_state, mem, parse_ctx, progress_f, debug_f)
def testRootCompleter(self): comp_lookup = completion.CompletionLookup() comp_lookup.RegisterName('grep', C1) comp_lookup.RegisterName('__first', FIRST) ev = test_lib.MakeTestEvaluator() pool = alloc.Pool() arena = pool.NewArena() parse_ctx = parse_lib.ParseContext(arena, {}) var_comp = V1 r = completion.RootCompleter(ev, comp_lookup, var_comp, parse_ctx, progress_f, debug_f) comp = completion.CompletionApi(line='grep f') m = list(r.Matches(comp)) self.assertEqual(['foo.py', 'foo'], m) comp = completion.CompletionApi(line='grep g') m = list(r.Matches(comp)) self.assertEqual([], m) m = list(r.Matches(completion.CompletionApi(line='ls $v'))) self.assertEqual(['$var1', '$var2'], m) m = list(r.Matches(completion.CompletionApi(line='g'))) self.assertEqual(['grep'], m) # Empty completer m = list(r.Matches(completion.CompletionApi(''))) self.assertEqual(['grep', 'sed', 'test'], m) # Test compound commands. These PARSE m = list(r.Matches(completion.CompletionApi('echo hi || grep f'))) m = list(r.Matches(completion.CompletionApi('echo hi; grep f'))) # Brace -- does NOT parse m = list(r.Matches(completion.CompletionApi('{ echo hi; grep f'))) # TODO: Test if/for/while/case/etc. m = list(r.Matches(completion.CompletionApi('var=$v'))) m = list(r.Matches(completion.CompletionApi('local var=$v')))
def _MakeRootCompleter(parse_ctx=None, comp_lookup=None): #comp_state = comp_state or completion.State() compopt_state = completion.OptionState() comp_ui_state = comp_ui.State() comp_lookup = comp_lookup or completion.Lookup() ev = test_lib.MakeTestEvaluator() if not parse_ctx: arena = alloc.Arena() arena.PushSource(source.MainFile('<_MakeRootCompleter>')) parse_opts = parse_lib.OilParseOptions() parse_ctx = parse_lib.ParseContext(arena, parse_opts, {}, None) parse_ctx.Init_Trail(parse_lib.Trail()) parse_ctx.Init_OnePassParse(True) if 1: # enable for details debug_f = util.DebugFile(sys.stdout) else: debug_f = util.NullDebugFile() return completion.RootCompleter(ev, mem, comp_lookup, compopt_state, comp_ui_state, parse_ctx, debug_f)
def _MakeRootCompleter(parse_ctx=None, comp_lookup=None): #comp_state = comp_state or completion.State() compopt_state = completion.OptionState() comp_ui_state = comp_ui.State() comp_lookup = comp_lookup or completion.Lookup() ev = test_lib.MakeTestEvaluator() if not parse_ctx: pool = alloc.Pool() arena = pool.NewArena() arena.PushSource('<_MakeRootCompleter>') trail = parse_lib.Trail() parse_ctx = parse_lib.ParseContext(arena, {}, trail=trail, one_pass_parse=True) if 1: # enable for details debug_f = util.DebugFile(sys.stdout) else: debug_f = util.NullDebugFile() return completion.RootCompleter(ev, mem, comp_lookup, compopt_state, comp_ui_state, parse_ctx, debug_f)
def InitEvaluator(): word_ev = test_lib.MakeTestEvaluator() state.SetLocalString(word_ev.mem, 'x', '- -- ---') state.SetLocalString(word_ev.mem, 'y', 'y yy yyy') state.SetLocalString(word_ev.mem, 'empty', '') return word_ev