def UsageString(component, trace=None, verbose=False): """Returns a string showing how to use the component as a Fire command.""" if trace: command = trace.GetCommand() else: command = None if command: command += ' ' else: command = '' if inspect.isroutine(component) or inspect.isclass(component): spec = inspectutils.GetFullArgSpec(component) return _UsageStringFromFullArgSpec(command, spec) if isinstance(component, (list, tuple)): length = len(component) if length == 0: return command if length == 1: return command + '[0]' return command + '[0..{cap}]'.format(cap=length - 1) completions = completion.Completions(component, verbose) if command: completions = [''] + completions return '\n'.join(command + end for end in completions)
def testFnCompletions(self): def example(one, two, three): return one, two, three completions = completion.Completions(example) self.assertIn('--one', completions) self.assertIn('--two', completions) self.assertIn('--three', completions)
def testGeneratorCompletions(self): def generator(): x = 0 while True: yield x x += 1 completions = completion.Completions(generator()) self.assertEqual(completions, [])
def testNonStringDictCompletions(self): completions = completion.Completions({ 10: 'green', 3.14: 'yellow', ('t1', 't2'): 'pink', }) self.assertIn('10', completions) self.assertIn('3.14', completions) self.assertIn("('t1', 't2')", completions) self.assertNotIn('green', completions) self.assertNotIn('yellow', completions) self.assertNotIn('pink', completions)
def testNonStringDictCompletions(self): completions = completion.Completions({ 10: "green", 3.14: "yellow", ("t1", "t2"): "pink", }) self.assertIn("10", completions) self.assertIn("3.14", completions) self.assertIn("('t1', 't2')", completions) self.assertNotIn("green", completions) self.assertNotIn("yellow", completions) self.assertNotIn("pink", completions)
def testDictCompletionsVerbose(self): colors = { 'red': 'green', 'blue': 'yellow', '_rainbow': True, } completions = completion.Completions(colors, verbose=True) self.assertIn('red', completions) self.assertIn('blue', completions) self.assertNotIn('green', completions) self.assertNotIn('yellow', completions) self.assertIn('_rainbow', completions) self.assertNotIn('True', completions) self.assertNotIn(True, completions)
def testDictCompletionsVerbose(self): colors = { "red": "green", "blue": "yellow", "_rainbow": True, } completions = completion.Completions(colors, verbose=True) self.assertIn("red", completions) self.assertIn("blue", completions) self.assertNotIn("green", completions) self.assertNotIn("yellow", completions) self.assertIn("_rainbow", completions) self.assertNotIn("True", completions) self.assertNotIn(True, completions)
def UsageString(component, trace=None, verbose=False): """Returns a string showing how to use the component as a Fire command.""" command = trace.GetCommand() + ' ' if trace else '' if inspect.isroutine(component) or inspect.isclass(component): args, varargs, keywords, defaults = inspectutils.GetArgSpec(component) return _UsageStringFromFnDetails(command, args, varargs, keywords, defaults) elif isinstance(component, (list, tuple)): length = len(component) if length == 0: return command elif length == 1: return command + '[0]' else: return command + '[0..{cap}]'.format(cap=length - 1) else: completions = completion.Completions(component, verbose) if command: completions = [''] + completions return '\n'.join(command + end for end in completions)
def testDeepDictCompletions(self): deepdict = {'level1': {'level2': {'level3': {'level4': {}}}}} completions = completion.Completions(deepdict) self.assertIn('level1', completions) self.assertNotIn('level2', completions)
def testListCompletions(self): completions = completion.Completions(['red', 'green', 'blue']) self.assertIn('0', completions) self.assertIn('1', completions) self.assertIn('2', completions) self.assertNotIn('3', completions)
def testMethodCompletions(self): completions = completion.Completions(tc.NoDefaults().double) self.assertNotIn('--self', completions) self.assertIn('--count', completions)
def testObjectCompletions(self): completions = completion.Completions(tc.NoDefaults()) self.assertIn('double', completions) self.assertIn('triple', completions)
def testClassCompletions(self): completions = completion.Completions(tc.NoDefaults) self.assertEqual(completions, [])
def testListCompletions(self): completions = completion.Completions(["red", "green", "blue"]) self.assertIn("0", completions) self.assertIn("1", completions) self.assertIn("2", completions) self.assertNotIn("3", completions)
def testDeepDictCompletions(self): deepdict = {"level1": {"level2": {"level3": {"level4": {}}}}} completions = completion.Completions(deepdict) self.assertIn("level1", completions) self.assertNotIn("level2", completions)