Example #1
0
    def test_console_hello(self):
        self.original_stdout = sys.stdout
        sys.stdout = pydevd_io.IOBuf()
        try:
            sys.stdout.encoding = sys.stdin.encoding
        except AttributeError:
            # In Python 3 encoding is not writable (whereas in Python 2 it doesn't exist).
            pass

        try:
            client_port, _server_port = self.get_free_addresses()
            client_thread = self.start_client_thread(
                client_port)  #@UnusedVariable
            import time
            time.sleep(.3)  #let's give it some time to start the threads

            from _pydev_bundle import pydev_localhost
            interpreter = pydevconsole.InterpreterInterface(
                pydev_localhost.get_localhost(), client_port,
                threading.currentThread())

            (result, ) = interpreter.hello("Hello pydevconsole")
            self.assertEqual(result, "Hello eclipse")
        finally:
            sys.stdout = self.original_stdout
Example #2
0
    def testConsoleRequests(self):
        client_port = 7992
        client_thread = self.startClientThread(client_port)  #@UnusedVariable
        import time
        time.sleep(.3)  #let's give it some time to start the threads

        interpreter = pydevconsole.InterpreterInterface(
            'localhost', client_port)
        interpreter.addExec('class Foo:')
        interpreter.addExec('   CONSTANT=1')
        interpreter.addExec('')
        interpreter.addExec('foo=Foo()')
        interpreter.addExec('foo.__doc__=None')
        interpreter.addExec('val = %s()' % (raw_input_name, ))
        interpreter.addExec('50')
        interpreter.addExec('print (val)')
        self.assertEqual(['50', 'input_request'],
                         sys.stdout.getvalue().split())

        comps = interpreter.getCompletions('foo.')
        self.assert_(('CONSTANT', '', '', '3') in comps
                     or ('CONSTANT', '', '', '4') in comps)

        comps = interpreter.getCompletions('"".')
        self.assert_(('__add__', 'x.__add__(y) <==> x+y', '', '3') in comps
                     or ('__add__', '', '', '4') in comps)

        self.assert_(('AssertionError', '', '',
                      '1') in interpreter.getCompletions(''))
        self.assert_(('RuntimeError', '', '',
                      '1') not in interpreter.getCompletions('Assert'))

        self.assert_(('__doc__', None, '',
                      '3') not in interpreter.getCompletions('foo.CO'))

        comps = interpreter.getCompletions('va')
        self.assert_(('val', '', '', '3') in comps
                     or ('val', '', '', '4') in comps)

        interpreter.addExec('s = "mystring"')

        desc = interpreter.getDescription('val')
        self.assert_(
            desc.find('str(object) -> string') >= 0
            or desc == "'input_request'"
            or desc.find('str(string[, encoding[, errors]]) -> str') >= 0,
            'Could not find what was needed in %s' % desc)

        desc = interpreter.getDescription('val.join')
        self.assert_(
            desc.find('S.join(sequence) -> string') >= 0
            or desc.find('S.join(sequence) -> str') >= 0
            or desc == "<builtin method 'join'>"
            or desc == "<built-in method join of str object>",
            "Could not recognize: %s" % (desc, ))
Example #3
0
    def testConsoleHello(self):
        client_port, _server_port = self.getFreeAddresses()
        client_thread = self.startClientThread(client_port)  #@UnusedVariable
        import time
        time.sleep(.3)  #let's give it some time to start the threads

        import pydev_localhost
        interpreter = pydevconsole.InterpreterInterface(
            pydev_localhost.get_localhost(), client_port, server=None)

        (result, ) = interpreter.hello("Hello pydevconsole")
        self.assertEqual(result, "Hello eclipse")
Example #4
0
    def test_console_hello(self):
        self.original_stdout = sys.stdout
        sys.stdout = StringIO()

        try:
            client_port, _server_port = self.get_free_addresses()
            client_thread = self.start_client_thread(
                client_port)  #@UnusedVariable
            import time
            time.sleep(.3)  #let's give it some time to start the threads

            from _pydev_bundle import pydev_localhost
            interpreter = pydevconsole.InterpreterInterface(
                pydev_localhost.get_localhost(), client_port,
                threading.currentThread())

            (result, ) = interpreter.hello("Hello pydevconsole")
            self.assertEqual(result, "Hello eclipse")
        finally:
            sys.stdout = self.original_stdout
Example #5
0
    def testConsoleRequests(self):
        client_port, _server_port = self.getFreeAddresses()
        client_thread = self.startClientThread(client_port)  #@UnusedVariable
        import time
        time.sleep(.3)  #let's give it some time to start the threads

        import pydev_localhost
        interpreter = pydevconsole.InterpreterInterface(
            pydev_localhost.get_localhost(), client_port, server=None)
        interpreter.addExec('class Foo:')
        interpreter.addExec('   CONSTANT=1')
        interpreter.addExec('')
        interpreter.addExec('foo=Foo()')
        interpreter.addExec('foo.__doc__=None')
        interpreter.addExec('val = %s()' % (raw_input_name, ))
        interpreter.addExec('50')
        interpreter.addExec('print (val)')
        found = sys.stdout.getvalue().split()
        try:
            self.assertEqual(['50', 'input_request'], found)
        except:
            self.assertEqual(['input_request'], found)  #IPython

        comps = interpreter.getCompletions('foo.', 'foo.')
        self.assert_(
            ('CONSTANT', '', '', '3') in comps or ('CONSTANT', '', '', '4') in comps, \
            'Found: %s' % comps
        )

        comps = interpreter.getCompletions('"".', '"".')
        self.assert_(
            ('__add__', 'x.__add__(y) <==> x+y', '', '3') in comps
            or ('__add__', '', '', '4') in comps
            or ('__add__', 'x.__add__(y) <==> x+y\r\nx.__add__(y) <==> x+y',
                '()', '2') in comps
            or ('__add__', 'x.\n__add__(y) <==> x+yx.\n__add__(y) <==> x+y',
                '()', '2'), 'Did not find __add__ in : %s' % (comps, ))

        completions = interpreter.getCompletions('', '')
        for c in completions:
            if c[0] == 'AssertionError':
                break
        else:
            self.fail('Could not find AssertionError')

        completions = interpreter.getCompletions('Assert', 'Assert')
        for c in completions:
            if c[0] == 'RuntimeError':
                self.fail('Did not expect to find RuntimeError there')

        self.assert_(('__doc__', None, '',
                      '3') not in interpreter.getCompletions('foo.CO', 'foo.'))

        comps = interpreter.getCompletions('va', 'va')
        self.assert_(('val', '', '', '3') in comps
                     or ('val', '', '', '4') in comps)

        interpreter.addExec('s = "mystring"')

        desc = interpreter.getDescription('val')
        self.assert_(
            desc.find('str(object) -> string') >= 0
            or desc == "'input_request'"
            or desc.find('str(string[, encoding[, errors]]) -> str') >= 0
            or desc.find('str(Char* value)') >= 0
            or desc.find('str(value: Char*)') >= 0,
            'Could not find what was needed in %s' % desc)

        desc = interpreter.getDescription('val.join')
        self.assert_(
            desc.find('S.join(sequence) -> string') >= 0
            or desc.find('S.join(sequence) -> str') >= 0
            or desc.find('S.join(iterable) -> string') >= 0
            or desc == "<builtin method 'join'>"
            or desc == "<built-in method join of str object>"
            or desc.find('str join(str self, list sequence)') >= 0
            or desc.find('S.join(iterable) -> str') >= 0
            or desc.find('join(self: str, sequence: list) -> str') >= 0,
            "Could not recognize: %s" % (desc, ))
    def test_console_requests(self):
        self.original_stdout = sys.stdout
        sys.stdout = pydevd_io.IOBuf()

        try:
            rpc_client = self.start_client_thread()  #@UnusedVariable
            import time
            time.sleep(.3)  #let's give it some time to start the threads

            from _pydev_bundle import pydev_localhost
            from _pydev_bundle.pydev_console_types import CodeFragment

            interpreter = pydevconsole.InterpreterInterface(threading.current_thread(), rpc_client=rpc_client)
            sys.stdout = pydevd_io.IOBuf()
            interpreter.add_exec(CodeFragment('class Foo:\n    CONSTANT=1\n'))
            interpreter.add_exec(CodeFragment('foo=Foo()'))
            interpreter.add_exec(CodeFragment('foo.__doc__=None'))
            interpreter.add_exec(CodeFragment('val = %s()' % (raw_input_name,)))
            interpreter.add_exec(CodeFragment('50'))
            interpreter.add_exec(CodeFragment('print (val)'))
            found = sys.stdout.getvalue().split()
            try:
                self.assertEqual(['50', 'input_request'], found)
            except:
                try:
                    self.assertEqual(['input_request'], found)  #IPython
                except:
                    self.assertEqual([u'50', u'input_request'], found[1:]) # IPython 5.1
                    self.assertTrue(found[0].startswith(u'Out'))

            comps = interpreter.do_get_completions('foo.', 'foo.')
            self.assertTrue(
                ('CONSTANT', '', '', '3') in comps or ('CONSTANT', '', '', '4') in comps, \
                'Found: %s' % comps
            )

            comps = interpreter.do_get_completions('"".', '"".')
            self.assertTrue(
                ('__add__', 'x.__add__(y) <==> x+y', '', '3') in comps or
                ('__add__', '', '', '4') in comps or
                ('__add__', 'x.__add__(y) <==> x+y\r\nx.__add__(y) <==> x+y', '()', '2') in comps or
                ('__add__', 'x.\n__add__(y) <==> x+yx.\n__add__(y) <==> x+y', '()', '2'),
                'Did not find __add__ in : %s' % (comps,)
            )


            completions = interpreter.do_get_completions('', '')
            for c in completions:
                if c[0] == 'AssertionError':
                    break
            else:
                self.fail('Could not find AssertionError')

            completions = interpreter.do_get_completions('Assert', 'Assert')
            for c in completions:
                if c[0] == 'RuntimeError':
                    self.fail('Did not expect to find RuntimeError there')

            self.assertTrue(('__doc__', None, '', '3') not in interpreter.do_get_completions('foo.CO', 'foo.'))

            comps = interpreter.do_get_completions('va', 'va')
            self.assertTrue(('val', '', '', '3') in comps or ('vars', '', '', '4') in comps)

            interpreter.add_exec(CodeFragment('s = "mystring"'))

            desc = interpreter.getDescription('val')
            self.assertTrue(desc.find('str(object) -> string') >= 0 or
                         desc == "'input_request'" or
                         desc.find('str(string[, encoding[, errors]]) -> str') >= 0 or
                         desc.find('str(Char* value)') >= 0 or
                         desc.find('str(object=\'\') -> string') >= 0 or
                         desc.find('str(value: Char*)') >= 0 or
                         desc.find('str(object=\'\') -> str') >= 0 or
                         desc.find('unicode(object=\'\') -> unicode object') >= 0 or
                         desc.find('The most base type') >= 0 # Jython 2.7 is providing this :P
                         ,
                         'Could not find what was needed in %s' % desc)

            desc = interpreter.getDescription('val.join')
            self.assertTrue(desc.find('S.join(sequence) -> string') >= 0 or
                         desc.find('S.join(sequence) -> str') >= 0 or
                         desc.find('S.join(iterable) -> string') >= 0 or
                         desc == "<builtin method 'join'>"  or
                         desc == "<built-in method join of str object>" or
                         desc.find('str join(str self, list sequence)') >= 0 or
                         desc.find('S.join(iterable) -> str') >= 0 or
                         desc.find('S.join(iterable) -> unicode') >= 0 or
                         desc.find('join(self: str, sequence: list) -> str') >= 0 or
                         desc.find('Concatenate any number of strings.') >= 0,
                         "Could not recognize: %s" % (desc,))
        finally:
            sys.stdout = self.original_stdout