Skip to content

Commit

Permalink
Merge pull request #28 from astrofrog/enable-tests
Browse files Browse the repository at this point in the history
Make tests.py into proper unit test, and add Qt version info to pytest header
  • Loading branch information
ccordoba12 committed Jun 9, 2016
2 parents e34c12d + a29af9e commit c5dbd0b
Show file tree
Hide file tree
Showing 4 changed files with 129 additions and 12 deletions.
3 changes: 2 additions & 1 deletion .travis.yml
Expand Up @@ -64,8 +64,9 @@ install:
conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION qt pyside;
fi
- source activate test-environment
- conda install -q pytest
- python setup.py install
before_script:
- cd tests
script:
- python tests.py
- py.test
59 changes: 59 additions & 0 deletions tests/conftest.py
@@ -0,0 +1,59 @@
import os


def pytest_configure(config):
"""
This function gets run by py.test at the very start
"""

if 'USE_QT_API' in os.environ:
os.environ['QT_API'] = os.environ['USE_QT_API'].lower()

# We need to import qtpy here to make sure that the API versions get set
# straight away.
import qtpy


def pytest_report_header(config):
"""
This function is used by py.test to insert a customized header into the
test report.
"""

versions = os.linesep
versions += 'PyQt4: '

try:
from PyQt4 import Qt
versions += "PyQt: {0} - Qt: {1}".format(Qt.PYQT_VERSION_STR, Qt.QT_VERSION_STR)
except ImportError:
versions += 'not installed'
except AttributeError:
versions += 'unknown version'

versions += os.linesep
versions += 'PyQt5: '

try:
from PyQt5 import Qt
versions += "PyQt: {0} - Qt: {1}".format(Qt.PYQT_VERSION_STR, Qt.QT_VERSION_STR)
except ImportError:
versions += 'not installed'
except AttributeError:
versions += 'unknown version'

versions += os.linesep
versions += 'PySide: '

try:
import PySide
from PySide import QtCore
versions += "PySide: {0} - Qt: {1}".format(PySide.__version__, QtCore.__version__)
except ImportError:
versions += 'not installed'
except AttributeError:
versions += 'unknown version'

versions += os.linesep

return versions
68 changes: 68 additions & 0 deletions tests/test_main.py
@@ -0,0 +1,68 @@
import os

from qtpy import QtCore, QtGui, QtWidgets, QtWebEngineWidgets


def assert_pyside():
"""
Make sure that we are using PySide
"""
import PySide
assert QtCore.QEvent is PySide.QtCore.QEvent
assert QtGui.QPainter is PySide.QtGui.QPainter
assert QtWidgets.QWidget is PySide.QtGui.QWidget
assert QtWebEngineWidgets.QWebEnginePage is PySide.QtWebKit.QWebPage


def assert_pyqt4():
"""
Make sure that we are using PyQt4
"""
import PyQt4
assert QtCore.QEvent is PyQt4.QtCore.QEvent
assert QtGui.QPainter is PyQt4.QtGui.QPainter
assert QtWidgets.QWidget is PyQt4.QtGui.QWidget
assert QtWebEngineWidgets.QWebEnginePage is PyQt4.QtWebKit.QWebPage


def assert_pyqt5():
"""
Make sure that we are using PyQt5
"""
import PyQt5
assert QtCore.QEvent is PyQt5.QtCore.QEvent
assert QtGui.QPainter is PyQt5.QtGui.QPainter
assert QtWidgets.QWidget is PyQt5.QtWidgets.QWidget
assert QtWebEngineWidgets.QWebEnginePage is PyQt5.QtWebKitWidgets.QWebPage


def test_qt_api():
"""
If QT_API is specified, we check that the correct Qt wrapper was used
"""

QT_API = os.environ.get('QT_API')

if QT_API == 'pyside':
assert_pyside()
elif QT_API in ('pyqt', 'pyqt4'):
assert_pyqt4()
elif QT_API == 'pyqt5':
assert_pyqt5()
else:
# If the tests are run locally, USE_QT_API and QT_API may not be
# defined, but we still want to make sure qtpy is behaving sensibly.
# We should then be loading, in order of decreasing preference, PyQt5,
# PyQt4, and PySide.
try:
import PyQt5
except ImportError:
try:
import PyQt4
except ImportError:
import PySide
assert_pyside()
else:
assert_pyqt4()
else:
assert_pyqt5()
11 changes: 0 additions & 11 deletions tests/tests.py

This file was deleted.

0 comments on commit c5dbd0b

Please sign in to comment.