diff --git a/.travis.yml b/.travis.yml index a1a314d9..a8e2fa86 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,5 +18,5 @@ install: - export PYTHONWARNINGS=all script: - python checkdeps.py - - xvfb-run src/bitmessagemain.py -t + - python src/bitmessagemain.py -t - python -bm tests diff --git a/requirements.txt b/requirements.txt index f9972a7e..2fea8888 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,4 @@ coverage python_prctl psutil pycrypto +xvfbwrapper;platform_system=="Linux" diff --git a/src/bitmessageqt/tests/main.py b/src/bitmessageqt/tests/main.py index b3aa67fa..cbe809f3 100644 --- a/src/bitmessageqt/tests/main.py +++ b/src/bitmessageqt/tests/main.py @@ -2,6 +2,7 @@ import Queue import sys +import os import unittest from PyQt4 import QtCore, QtGui @@ -23,6 +24,22 @@ class TestBase(unittest.TestCase): self.window = bitmessageqt.MyForm() self.window.appIndicatorInit(self.app) + def take_screenshot(self, window=None): + """Take a screenshot of the *window* or main window if not set""" + def save_screenshot(): + """Save screenshot and quit app clause""" + screenshot = QtGui.QPixmap.grabWindow( + self.app.desktop().winId()) + screenshot.save(os.path.join( + bitmessageqt.state.appdata, '%s.png' % self.id())) + self.app.quit() + + timer = QtCore.QTimer() + timer.timeout.connect(save_screenshot) + timer.start(200) + (window or self.window).show() + self.app.exec_() + def tearDown(self): # self.app.deleteLater() while True: @@ -55,6 +72,4 @@ class TestUISignaler(TestBase): _translate("test", "Testing updateStatusBar..."), 1) )) - QtCore.QTimer.singleShot(60, self.app.quit) - self.app.exec_() - # self.app.processEvents(QtCore.QEventLoop.AllEvents, 60) + self.take_screenshot() diff --git a/src/bitmessageqt/tests/support.py b/src/bitmessageqt/tests/support.py index ba28b73a..fcce6a4c 100644 --- a/src/bitmessageqt/tests/support.py +++ b/src/bitmessageqt/tests/support.py @@ -31,3 +31,5 @@ class TestSupport(TestBase): ui.lineEditSubject.text(), self.SUPPORT_SUBJECT) self.assertIn( sys.version, ui.textEditMessage.toPlainText()) + + self.take_screenshot() diff --git a/src/tests/core.py b/src/tests/core.py index 172ae219..c90397a0 100644 --- a/src/tests/core.py +++ b/src/tests/core.py @@ -3,6 +3,7 @@ Tests for core and those that do not work outside (because of import error for example) """ +import atexit import os import pickle # nosec import Queue @@ -398,8 +399,9 @@ def run(): suite = loader.loadTestsFromTestCase(TestCore) try: import bitmessageqt.tests + from xvfbwrapper import Xvfb except ImportError: - pass + Xvfb = None else: qt_tests = loader.loadTestsFromModule(bitmessageqt.tests) suite.addTests(qt_tests) @@ -410,4 +412,8 @@ def run(): sys.excepthook = keep_exc + if Xvfb: + vdisplay = Xvfb(width=1024, height=768) + vdisplay.start() + atexit.register(vdisplay.stop) return unittest.TextTestRunner(verbosity=2).run(suite)