mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-17 07:20:53 +07:00
1. Delete Jython tests 2. Rewrite ndarray repr test 3. Small fixes Merge-request: IJ-MR-154111 Merged-by: Egor Eliseev <Egor.Eliseev@jetbrains.com> GitOrigin-RevId: 4cfa66070046db45bcfbb27b70e9d17ab24db8cb
174 lines
5.7 KiB
Python
174 lines
5.7 KiB
Python
'''
|
|
@author Fabio Zadrozny
|
|
'''
|
|
import sys
|
|
import pytest
|
|
from _pydev_imps._pydev_saved_modules import thread
|
|
from _pydevd_bundle.pydevd_constants import IS_PY39_OR_GREATER
|
|
|
|
start_new_thread = thread.start_new_thread
|
|
|
|
|
|
IS_PYTHON_3_ONWARDS = sys.version_info[0] >= 3
|
|
IS_JYTHON = sys.platform.find('java') != -1
|
|
|
|
try:
|
|
import __builtin__ #@UnusedImport
|
|
BUILTIN_MOD = '__builtin__'
|
|
except ImportError:
|
|
BUILTIN_MOD = 'builtins'
|
|
|
|
|
|
if not IS_JYTHON:
|
|
import pycompletionserver
|
|
import socket
|
|
if not IS_PYTHON_3_ONWARDS:
|
|
from urllib import quote_plus, unquote_plus
|
|
def send(s, msg):
|
|
s.send(msg)
|
|
else:
|
|
from urllib.parse import quote_plus, unquote_plus #Python 3.0
|
|
def send(s, msg):
|
|
s.send(bytearray(msg, 'utf-8'))
|
|
|
|
import unittest
|
|
|
|
@pytest.mark.skipif(IS_JYTHON, reason='Not applicable to Jython')
|
|
class TestCPython(unittest.TestCase):
|
|
|
|
def test_message(self):
|
|
t = pycompletionserver.CompletionServer(0)
|
|
|
|
l = []
|
|
l.append(('Def', 'description' , 'args'))
|
|
l.append(('Def1', 'description1', 'args1'))
|
|
l.append(('Def2', 'description2', 'args2'))
|
|
|
|
msg = t.processor.format_completion_message(None, l)
|
|
|
|
self.assertEqual('@@COMPLETIONS(None,(Def,description,args),(Def1,description1,args1),(Def2,description2,args2))END@@', msg)
|
|
l = []
|
|
l.append(('Def', 'desc,,r,,i()ption', ''))
|
|
l.append(('Def(1', 'descriptio(n1', ''))
|
|
l.append(('De,f)2', 'de,s,c,ription2', ''))
|
|
msg = t.processor.format_completion_message(None, l)
|
|
self.assertEqual('@@COMPLETIONS(None,(Def,desc%2C%2Cr%2C%2Ci%28%29ption, ),(Def%281,descriptio%28n1, ),(De%2Cf%292,de%2Cs%2Cc%2Cription2, ))END@@', msg)
|
|
|
|
def create_connections(self):
|
|
'''
|
|
Creates the connections needed for testing.
|
|
'''
|
|
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
|
server.bind((pycompletionserver.HOST, 0))
|
|
server.listen(1) #socket to receive messages.
|
|
|
|
t = pycompletionserver.CompletionServer(server.getsockname()[1])
|
|
t.exit_process_on_kill = False
|
|
start_new_thread(t.run, ())
|
|
|
|
s, _addr = server.accept()
|
|
|
|
return t, s
|
|
|
|
|
|
def read_msg(self):
|
|
finish = False
|
|
msg = ''
|
|
while finish == False:
|
|
m = self.socket.recv(1024 * 4)
|
|
if IS_PYTHON_3_ONWARDS:
|
|
m = m.decode('utf-8')
|
|
if m.startswith('@@PROCESSING'):
|
|
sys.stdout.write('Status msg: %s\n' % (msg,))
|
|
else:
|
|
msg += m
|
|
|
|
if msg.find('END@@') != -1:
|
|
finish = True
|
|
|
|
return msg
|
|
|
|
def test_completion_sockets_and_messages(self):
|
|
t, socket = self.create_connections()
|
|
self.socket = socket
|
|
|
|
try:
|
|
#now that we have the connections all set up, check the code completion messages.
|
|
msg = quote_plus('math')
|
|
send(socket, '@@IMPORTS:%sEND@@' % msg) #math completions
|
|
completions = self.read_msg()
|
|
#print_ unquote_plus(completions)
|
|
|
|
#math is a builtin and because of that, it starts with None as a file
|
|
start = '@@COMPLETIONS(None,(__doc__,'
|
|
start_2 = '@@COMPLETIONS(None,(__name__,'
|
|
if ('/math.so,' in completions or
|
|
'/math.cpython-33m.so,' in completions or
|
|
'/math.cpython-34m.so,' in completions or
|
|
'math.cpython' in completions
|
|
):
|
|
return
|
|
self.assertTrue(completions.startswith(start) or completions.startswith(start_2), '%s DOESNT START WITH %s' % (completions, (start, start_2)))
|
|
|
|
self.assertTrue('@@COMPLETIONS' in completions)
|
|
self.assertTrue('END@@' in completions)
|
|
|
|
|
|
#now, test i
|
|
msg = quote_plus('%s.list' % BUILTIN_MOD)
|
|
send(socket, "@@IMPORTS:%s\nEND@@" % msg)
|
|
found = self.read_msg()
|
|
self.assertTrue('sort' in found, 'Could not find sort in: %s' % (found,))
|
|
|
|
#now, test search
|
|
msg = quote_plus('inspect.ismodule')
|
|
send(socket, '@@SEARCH%sEND@@' % msg) #math completions
|
|
found = self.read_msg()
|
|
self.assertTrue('inspect.py' in found)
|
|
for i in range(33, 100):
|
|
if str(i) in found:
|
|
break
|
|
else:
|
|
self.fail('Could not find the ismodule line in %s' % (found,))
|
|
|
|
#now, test search
|
|
msg = quote_plus('inspect.CO_NEWLOCALS')
|
|
send(socket, '@@SEARCH%sEND@@' % msg) #math completions
|
|
found = self.read_msg()
|
|
self.assertTrue('inspect.py' in found)
|
|
self.assertTrue('CO_NEWLOCALS' in found)
|
|
|
|
#now, test search
|
|
msg = quote_plus('inspect.BlockFinder.tokeneater')
|
|
send(socket, '@@SEARCH%sEND@@' % msg)
|
|
found = self.read_msg()
|
|
self.assertTrue('inspect.py' in found)
|
|
# self.assertTrue('CO_NEWLOCALS' in found)
|
|
|
|
#reload modules test
|
|
# send(socket, '@@RELOAD_MODULES_END@@')
|
|
# ok = self.read_msg()
|
|
# self.assertEqual('@@MSG_OK_END@@' , ok)
|
|
# this test is not executed because it breaks our current enviroment.
|
|
|
|
finally:
|
|
try:
|
|
sys.stdout.write('succedded...sending kill msg\n')
|
|
self.send_kill_msg(socket)
|
|
|
|
|
|
# while not hasattr(t, 'ended'):
|
|
# pass #wait until it receives the message and quits.
|
|
|
|
|
|
socket.close()
|
|
self.socket.close()
|
|
except:
|
|
pass
|
|
|
|
def send_kill_msg(self, socket):
|
|
socket.send(pycompletionserver.MSG_KILL_SERVER)
|
|
|
|
|