Exemplo n.º 1
0
 def testOneLineResult(self):
     self.assertEqual(
         core._OneLineResult(1), "1"
     )  # pylint: disable=protected-access
     self.assertEqual(
         core._OneLineResult("hello"), "hello"
     )  # pylint: disable=protected-access
     self.assertEqual(
         core._OneLineResult({}), "{}"
     )  # pylint: disable=protected-access
     self.assertEqual(
         core._OneLineResult({"x": "y"}), '{"x": "y"}'
     )  # pylint: disable=protected-access
Exemplo n.º 2
0
 def testOneLineResultCircularRef(self):
     circular_reference = tc.CircularReference()
     self.assertEqual(
         core._OneLineResult(
             circular_reference.create()
         ),  # pylint: disable=protected-access
         "{'y': {...}}",
     )
Exemplo n.º 3
0
 def testOneLineResult(self):
     self.assertEqual(core._OneLineResult(1), '1')  # pylint: disable=protected-access
     self.assertEqual(core._OneLineResult('hello'), 'hello')  # pylint: disable=protected-access
     self.assertEqual(core._OneLineResult({}), '{}')  # pylint: disable=protected-access
     self.assertEqual(core._OneLineResult({'x': 'y'}), '{"x": "y"}')  # pylint: disable=protected-access
Exemplo n.º 4
0
 def testOneLineResult(self):
     self.assertEqual(core._OneLineResult(1), '1')
     self.assertEqual(core._OneLineResult('hello'), 'hello')
     self.assertEqual(core._OneLineResult({}), '{}')
     self.assertEqual(core._OneLineResult({'x': 'y'}), '{"x": "y"}')
Exemplo n.º 5
0
    def task(self, component, message, **kwargs):
        command = message.data[self.in_key] if self.in_key in message.data else ' '

        if command is None:
            return {}

        if isinstance(command, six.string_types):
            args = shlex.split(command)
        elif isinstance(command, (list, tuple)):
            args = command
        else:
            raise ValueError('The command argument must be a string or a sequence of arguments.')

        caller = inspect.stack()[1]
        caller_frame = caller[0]
        caller_globals = caller_frame.f_globals
        caller_locals = caller_frame.f_locals
        context = {}
        context.update(caller_globals)
        context.update(caller_locals)

        temp_out = io.BytesIO()
        with stdout_redirector(temp_out):
            try:
                component_trace = _Fire(component, args, context, '.')
            except:
                return {'text': '\n'.join([i for i in traceback.format_exc().split('\n') if i])}

            if component_trace.HasError():
                for help_flag in ['-h', '--help']:
                    if help_flag in component_trace.elements[-1].args:
                        command = '{cmd} -- --help'.format(cmd=component_trace.GetCommand())
                        print(('WARNING: The proper way to show help is {cmd}.\n'
                               'Showing help anyway.\n').format(cmd=pipes.quote(command)))
                print(f'Fire trace:\n{component_trace}\n')
                result = component_trace.GetResult()
                print(helputils.HelpString(result, component_trace, component_trace.verbose))

            elif component_trace.show_trace and component_trace.show_help:
                print('Fire trace:\n{trace}\n'.format(trace=component_trace))
                result = component_trace.GetResult()
                print(helputils.HelpString(result, component_trace, component_trace.verbose))

            elif component_trace.show_trace:
                print('Fire trace:\n{trace}'.format(trace=component_trace))

            elif component_trace.show_help:
                result = component_trace.GetResult()
                print(helputils.HelpString(result, component_trace, component_trace.verbose))

            else:
                result = component_trace.GetResult()
                if isinstance(result, (list, set, types.GeneratorType)):
                    for i in result:
                        print(_OneLineResult(i))
                elif inspect.isgeneratorfunction(result):
                    raise NotImplementedError
                elif isinstance(result, dict):
                    print(_DictAsString(result, component_trace.verbose))
                elif isinstance(result, tuple):
                    print(_OneLineResult(result))
                elif isinstance(result, (bool, six.string_types, six.integer_types, float, complex)):
                    print(str(result))
                elif result is not None:
                    print(helputils.HelpString(result, component_trace, component_trace.verbose))

        s = temp_out.getvalue().decode('utf-8')
        r = {self.out_key: s}
        return r
Exemplo n.º 6
0
 def testOneLineResultCircularRef(self):
   circular_reference = tc.CircularReference()
   self.assertEqual(core._OneLineResult(circular_reference.create()),  # pylint: disable=protected-access
                    "{'y': {...}}")
Exemplo n.º 7
0
 def testOneLineResult(self):
   self.assertEqual(core._OneLineResult(1), '1')  # pylint: disable=protected-access
   self.assertEqual(core._OneLineResult('hello'), 'hello')  # pylint: disable=protected-access
   self.assertEqual(core._OneLineResult({}), '{}')  # pylint: disable=protected-access
   self.assertEqual(core._OneLineResult({'x': 'y'}), '{"x": "y"}')  # pylint: disable=protected-access