From 487f078256962597e8bb6b8bbde7792f272f8654 Mon Sep 17 00:00:00 2001 From: tholok97 <thomas.lokkeborg@mimer.no> Date: Mon, 24 Feb 2020 15:17:00 +0100 Subject: [PATCH] #4 test passerer lint, tillater lang URL --- .gitlab-ci.yml | 4 ++-- scripts/.flake8 | 5 +++++ scripts/.pylintrc | 2 +- test/test_main.py | 49 +++++++++++++++++++++++++++++++++++------------ 4 files changed, 45 insertions(+), 15 deletions(-) create mode 100644 scripts/.flake8 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 57d6080..6cb7ecd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,14 +8,14 @@ job_lint_flake8: image: morkolai/soitool-ci script: - flake8 --version - - flake8 soitool + - flake8 --config scripts/.flake8 soitool test job_lint_pylint: stage: lint image: morkolai/soitool-ci script: - pylint --version - - pylint --rcfile=scripts/.pylintrc soitool + - pylint --rcfile=scripts/.pylintrc soitool test job_lint_bandit: stage: lint diff --git a/scripts/.flake8 b/scripts/.flake8 new file mode 100644 index 0000000..b67c079 --- /dev/null +++ b/scripts/.flake8 @@ -0,0 +1,5 @@ +[flake8] +# ignorerer sjekk for lange linjer, ettersom dette gjøres i pylint +# vi vil tillate lange linjer som avsluttes med link, og dette er mulig i +# pylint, men såvidt vi vet ikke mulig i flake8 +ignore = E501 diff --git a/scripts/.pylintrc b/scripts/.pylintrc index 7e9ef2c..43b2b9b 100644 --- a/scripts/.pylintrc +++ b/scripts/.pylintrc @@ -275,7 +275,7 @@ redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io expected-line-ending-format= # Regexp for a line that is allowed to be longer than the limit. -ignore-long-lines=^\s*(# )?<?https?://\S+>?$ +ignore-long-lines=^.*<?https?://\S+>?$ # Number of spaces of indent required inside a hanging or continued line. indent-after-paren=4 diff --git a/test/test_main.py b/test/test_main.py index df0dbd7..89b4b90 100644 --- a/test/test_main.py +++ b/test/test_main.py @@ -1,7 +1,10 @@ +"""Test CoolWidget""" + import unittest import sys +from datetime import datetime as datetime_, timedelta +from PySide2 import QtWidgets, QtTest, QtCore from soitool import main -from PySide2 import QtGui, QtWidgets, QtTest, QtCore # references: # * findChild: https://srinikom.github.io/pyside-docs/PySide/QtCore/QObject.html#PySide.QtCore.PySide.QtCore.QObject.findChild @@ -18,48 +21,69 @@ from PySide2 import QtGui, QtWidgets, QtTest, QtCore # moved here from setUp to avoid annoying startup messages app = QtWidgets.QApplication(sys.argv) + def wait(msec): - QtTest.QTest.qWait(msec) + """Venter msec millisekunder + + Bruker https://stackoverflow.com/a/34745326/3545896 + + Parameter + ----- + msec : number + msec to wait + """ + + end = datetime_.now() + timedelta(milliseconds=msec) + while datetime_.now() < end: + app.processEvents() + class TestMain(unittest.TestCase): + """TestCase for main""" def setUp(self): + """Forbereder widget for testing""" self.test_text1 = "A bad boy" self.test_text2 = "Hei Anders!" self.widget = main.CoolWidget(self.test_text1) self.widget.show() def test_starts_up(self): + """Test at widget kan starte opp""" self.assertEqual( - self.widget.qlabel.text(), - self.test_text1, + self.widget.qlabel.text(), + self.test_text1, ) self.assertTrue(self.widget.isVisible()) - + def test_change_text_ok(self): + """Test at endring av tekst funker""" def change_text_and_ok(): - active_widget = app.activeModalWidget() - - child_line_edit = active_widget.findChild(QtWidgets.QLineEdit) + while self.widget.dlg_input is None: + app.processEvents() + child_line_edit = self.widget.dlg_input.findChild(QtWidgets.QLineEdit) QtTest.QTest.keyClicks(child_line_edit, self.test_text2) QtTest.QTest.keyClick(child_line_edit, QtCore.Qt.Key_Enter) - QtCore.QTimer.singleShot(0, change_text_and_ok) + QtCore.QTimer.singleShot(100, change_text_and_ok) QtTest.QTest.mouseClick(self.widget.button, QtCore.Qt.LeftButton) self.assertEqual( self.widget.qlabel.text(), self.test_text2, ) - + def test_change_text_not_ok(self): + """Test at avbrytelse av endring av tekster ikke endrer tekst""" def accept_popup(): QtTest.QTest.keyClick(app.activeModalWidget(), QtCore.Qt.Key_Enter) def change_text_and_not_ok(): - # in PySide2 we need to store a reference to this. If we don't the widget is garbage collected somehow before we get to use child_line_edit (a child of the active widget) + # in PySide2 we need to store a reference to this. If we don't the + # widget is garbage collected somehow before we get to use + # child_line_edit (a child of the active widget) active_widget = app.activeModalWidget() child_line_edit = active_widget.findChild(QtWidgets.QLineEdit) @@ -70,11 +94,12 @@ class TestMain(unittest.TestCase): QtCore.QTimer.singleShot(0, change_text_and_not_ok) QtTest.QTest.mouseClick(self.widget.button, QtCore.Qt.LeftButton) - + self.assertNotEqual( self.widget.qlabel.text(), self.test_text2, ) + if __name__ == '__main__': unittest.main() -- GitLab