def test_style(editor): panel = get_panel(editor) panel.request_search('import') QTest.qWait(1000) panel.background = QtGui.QColor('green') panel.foreground = QtGui.QColor('red') QTest.qWait(1000)
def test_json_code_edit(): editor = JSONCodeEdit() editor.file.open('test/files/example.json') QTest.qWait(1000) assert editor.backend.running editor.close() assert not editor.backend.running
def test_json_code_edit(): editor = RstCodeEdit() editor.file.open('test/files/demo_ko.rst') QTest.qWait(1000) assert editor.backend.running editor.close() assert not editor.backend.running
def test_add_marker(editor): panel = get_panel(editor) marker = panels.Marker(1, icon=':/pyqode-icons/rc/edit-undo.png', description='Marker description') panel.add_marker(marker) QTest.qWait(500) assert panel.marker_for_line(1)[0] is not None
def editor(request): import gettext gettext.NullTranslations().install() global _app, _widget from pyqode.core import modes from pyqode.cobol.widgets import CobolCodeEdit from pyqode.qt.QtTest import QTest logging.info('################ setup session editor ################') _widget = CobolCodeEdit() _widget.resize(800, 600) _widget.show() _app.setActiveWindow(_widget) while not _widget.backend.connected: QTest.qWait(100) _widget.modes.get(modes.FileWatcherMode).file_watcher_auto_reload = True _widget.save_on_focus_out = False def fin(): global _widget logging.info('################ teardown session editor ###############' '#') _widget.backend.stop() while _widget.backend.connected: QTest.qWait(100) del _widget request.addfinalizer(fin) return _widget
def editor(request): global _app, _widget from pyqode.core import modes from pyqode.json.widgets import JSONCodeEdit from pyqode.qt.QtTest import QTest logging.info('################ setup session editor ################') _widget = JSONCodeEdit() _widget.resize(800, 600) _app.setActiveWindow(_widget) while not _widget.backend.connected: QTest.qWait(100) _widget.modes.get(modes.FileWatcherMode).file_watcher_auto_reload = True _widget.save_on_focus_out = False def fin(): global _widget _widget.close() while _widget.backend.connected: QTest.qWait(100) del _widget request.addfinalizer(fin) return _widget
def test_selected_text(editor): helper = TextHelper(editor) helper.goto_line(2, 1, move=True) QTest.qWait(100) assert helper.word_under_cursor().selectedText() == 'T' assert helper.word_under_cursor( select_whole_word=True).selectedText() == 'This'
def test_line_nbr_from_position(editor): editor.repaint() sys.stderr.write(str(editor.visible_blocks)) assert TextHelper(editor).line_nbr_from_position( TextHelper(editor).line_pos_from_number(0)) is not None assert TextHelper(editor).line_nbr_from_position(-1) == -1 QTest.qWait(100)
def editor(request): global _app, _widget from pyqode.core import modes, cache from pyqode.python.widgets.code_edit import PyCodeEdit from pyqode.python.panels import SymbolBrowserPanel from pyqode.qt.QtTest import QTest cache.Cache().clear() _widget = PyCodeEdit() _widget.panels.append(SymbolBrowserPanel(), SymbolBrowserPanel.Position.TOP) _widget.resize(800, 600) while not _widget.backend.connected: QTest.qWait(100) _widget.modes.get(modes.FileWatcherMode).file_watcher_auto_reload = True _widget.save_on_focus_out = False def fin(): global _widget _widget.close() del _widget request.addfinalizer(fin) return _widget
def test_line_nbr_from_position(editor): editor.repaint() sys.stderr.write(str(editor.visible_blocks)) assert TextHelper(editor).line_nbr_from_position( TextHelper(editor).line_pos_from_number(0)) is not None assert TextHelper(editor).line_nbr_from_position(-1) == 0 QTest.qWait(100)
def editor(request): global _app, _widget from pyqode.core import modes from pyqode.rst.widgets import RstCodeEdit from pyqode.qt.QtTest import QTest logging.info('################ setup session editor ################') _widget = RstCodeEdit() _widget.resize(800, 600) _app.setActiveWindow(_widget) while not _widget.backend.connected: QTest.qWait(100) _widget.modes.get(modes.FileWatcherMode).file_watcher_auto_reload = True _widget.save_on_focus_out = False def fin(): global _widget _widget.close() while _widget.backend.connected: QTest.qWait(100) del _widget request.addfinalizer(fin) return _widget
def test_request_search(editor): QTest.qWait(1000) assert editor.backend.running panel = get_panel(editor) panel.request_search('import') QTest.qWait(2000) assert panel.cpt_occurences > 1
def test_mouse_press(editor): panel = get_panel(editor) y_pos = TextHelper(editor).line_pos_from_number(0) QTest.mousePress(panel, QtCore.Qt.RightButton, QtCore.Qt.NoModifier, QtCore.QPoint(1000, 1000)) QTest.mousePress(panel, QtCore.Qt.RightButton, QtCore.Qt.NoModifier, QtCore.QPoint(3, y_pos))
def test_goto_definition(editor): editor.show() QTest.qWait(1000) panel = get_panel(editor) line = TextHelper(editor).current_line_nbr() panel._on_definition_activated(len(panel._definitions) - 2) assert TextHelper(editor).current_line_nbr() != line
def reject_mbox(): print('reject') widgets = QtWidgets.QApplication.instance().topLevelWidgets() for w in widgets: print(w) if isinstance(w, QtWidgets.QDialog): QTest.keyPress(w, QtCore.Qt.Key_Escape)
def test_key_pressed(editor): editor.free_format = False editor.comment_indicator = '*> ' editor.setPlainText('123456DISPLAY "Hello".', '', '') QTest.keyPress(editor, QtCore.Qt.Key_Slash, QtCore.Qt.ControlModifier) assert editor.toPlainText() == '123456*> DISPLAY "Hello".' QTest.keyPress(editor, QtCore.Qt.Key_Slash, QtCore.Qt.ControlModifier) assert editor.toPlainText() == '123456DISPLAY "Hello".'
def test_close(editor): panel = get_panel(editor) panel.on_actionSearch_triggered() assert panel.isVisible() panel.on_toolButtonClose_clicked() assert not panel.isVisible() QTest.qWait(100) panel.on_actionSearch_triggered()
def test_action_search_triggered2(editor): panel = get_panel(editor) # second search with the same text tc = TextHelper(editor).word_under_mouse_cursor() editor.setTextCursor(tc) panel.on_actionSearch_triggered() assert panel.isVisible() QTest.qWait(1000)
def test_delete(editor): mode = get_mode(editor) mode.auto_reload = False os.remove(file_path) QTest.qWait(1000) with open(file_path, 'w') as f: f.write("test file initial") editor.file.open(file_path)
def test_cancel_operations(app): app.file.open_file(path_interactive) QTest.qWait(500) app.cobol.run() QTest.qWait(500) assert not app.win.ui.actionCompile.isEnabled() app.cobol.cancel() assert app.win.ui.actionCompile.isEnabled()
def test_encodings(editor): with pytest.raises(UnicodeDecodeError): editor.file.open(PATH, encoding="utf-8", use_cached_encoding=False) editor.panels.append(panels.EncodingPanel(), panels.EncodingPanel.Position.TOP) editor.file.open(pth, encoding="utf-8", use_cached_encoding=False) editor.show() QTest.qWait(1000) assert editor.panels.get(panels.EncodingPanel).isVisible() is True
def test_select_lines(editor): TextHelper(editor).select_lines(0, 4) QTest.qWait(100) QTest.qWait(1000) assert TextHelper(editor).selection_range() == (0, 4) TextHelper(editor).select_lines(-1, 10) assert TextHelper(editor).selection_range() == (0, 10) editor.decorations.clear()
def fin(): global _widget logging.info('################ teardown session editor ###############' '#') _widget.backend.stop() while _widget.backend.connected: QTest.qWait(100) del _widget
def test_fs_treeview(): tv = FileSystemTreeView() tv.set_context_menu(FileSystemContextMenu()) tv.set_root_path(__file__) tv.show() QTest.qWait(500) tv.close() del tv
def test_goto_variable(editor): editor.clear() code = "a = 15\nprint(a)" editor.setPlainText(code) mode = get_mode(editor) TextHelper(editor).goto_line(2, len('print(a)') - 2) mode.request_goto() QTest.qWait(5000)
def test_modif_autoreload(editor): mode = get_mode(editor) mode.auto_reload = False mode = get_mode(editor) mode.auto_reload = True with open(file_path, 'r') as f: with open(file_path, 'w') as f2: f2.write("test file %s" % datetime.datetime.now()) QTest.qWait(1000)
def test_successive_requests(editor): mode = get_mode(editor) QTest.qWait(1000) TextHelper(editor).goto_line(3) # only the first request should be accepted ret1 = mode.request_completion() ret2 = mode.request_completion() assert ret1 is True assert ret2 is True
def test_delay_job_runner(): print('test delay job runner') global editor editor = CodeEdit() job_runner = utils.DelayJobRunner() job_runner.request_job(job) QTest.qWait(1000) job_runner.request_job(job) QTest.qWait(1000)
def test_comment_selection(editor): editor.clear() editor.setPlainText('import os;\n \ndef foo():\n print("bar")') QTest.qWait(100) mode = get_mode(editor) editor.selectAll() mode.comment() QTest.qWait(100) assert editor.toPlainText() == '# import os;\n \n# def foo():\n# print("bar")'
def test_occurrences(editor, underlined): editor.file.open(__file__) mode = get_mode(editor) mode.underlined = underlined assert len(mode._decorations) == 0 assert mode.delay == 1000 TextHelper(editor).goto_line(16, 7) QTest.qWait(2000) assert len(mode._decorations) == 22
def test_successive_requests(editor): mode = get_mode(editor) QTest.qWait(1000) TextHelper(editor).goto_line(3) # only the first request should be accepted ret1 = mode.request_completion() ret2 = mode.request_completion() assert ret1 is True assert ret2 is False
def test_close(editor): panel = get_panel(editor) panel.on_search() editor.show() QTest.qWait(1000) assert panel.isVisible() panel.on_close() assert not panel.isVisible() QTest.qWait(100) panel.on_search()
def test_duplicate_line(editor): QTest.qWait(1000) TextHelper(editor).goto_line(0) editor.duplicate_line() assert editor.toPlainText().startswith(get_first_line(editor) + '\n' + get_first_line(editor)) editor.setPlainText('foo', '', 'utf-8') editor.duplicate_line() assert editor.toPlainText() == 'foo\nfoo' assert editor.textCursor().position() == 7
def test_do_home_key(editor): QTest.qWait(2000) helper = TextHelper(editor) helper.goto_line(336, 29) assert editor.textCursor().positionInBlock() == 29 assert TextHelper(editor).line_indent() == 4 editor._do_home_key() assert editor.textCursor().positionInBlock() == 4 editor._do_home_key() assert editor.textCursor().positionInBlock() == 0
def test_goto_line_dlg(editor): if os.environ['QT_API'] != 'pyqt5': # accept_mbox/reject_mbox crash with pyqt5. I still don't understand # why but this looks like a bug in pyqt5 QtCore.QTimer.singleShot(1500, accept_mbox) editor.goto_line() QTest.qWait(1000) QtCore.QTimer.singleShot(1500, reject_mbox) editor.goto_line() QTest.qWait(1000)
def test_add_messages(editor): mode = get_mode(editor) mode.clear_messages() status = [modes.CheckerMessages.ERROR, modes.CheckerMessages.WARNING, modes.CheckerMessages.INFO] mode.add_messages([modes.CheckerMessage('desc', random.choice(status), 10 + i) for i in range(500)]) assert len(mode._messages) < 500 QTest.qWait(500)
def test_occurrences(editor): for underlined in [True, False]: editor.file.open(__file__) assert editor.backend.running is True mode = get_mode(editor) mode.underlined = underlined assert len(mode._decorations) == 0 assert mode.delay == 1000 TextHelper(editor).goto_line(16, 7) QTest.qWait(2000) assert len(mode._decorations) > 0