summaryrefslogtreecommitdiffstats
path: root/tox.ini
diff options
context:
space:
mode:
authorChristian Heimes <cheimes@redhat.com>2015-07-01 13:15:30 +0200
committerChristian Heimes <cheimes@redhat.com>2015-07-10 10:35:54 +0200
commit597bf54f3e999867a3e42686b3063b169b52018c (patch)
tree30556ee484a2ff3eb931c92d0f0fad130f35aa72 /tox.ini
parentfa302897b3e97d78b925e8ee763c822a1169f07a (diff)
downloadpki-597bf54f3e999867a3e42686b3063b169b52018c.tar.gz
pki-597bf54f3e999867a3e42686b3063b169b52018c.tar.xz
pki-597bf54f3e999867a3e42686b3063b169b52018c.zip
In-tree tests and linting with tox
Before the patch it wasn't possible to run pylint outside a RPM build. The Python sources were split into common and server files in two separate trees. With setup.py and tox the pki package can now be installed and tested in a virtual env. Tox enables developers to automate installation and testing in Python virtual environment. The new tox.ini performs several tasks with one command: * It creates and installs a source distribution of pki packages and its command line scripts * It verifies that all CLI scripts can be execute (using its --help argument). * It runs pylint on all Python files and CLI scripts. * It can run flake8 on all Python and CLI files (disabled for now). * Finally it builds Sphinx autodocs. I had to delay the root check in pkispawn and pkidestroy and modify two files to get rid of Sphinx warnings. https://fedorahosted.org/pki/ticket/696 http://tox.readthedocs.org
Diffstat (limited to 'tox.ini')
-rw-r--r--tox.ini80
1 files changed, 80 insertions, 0 deletions
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 000000000..8b0c619c8
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,80 @@
+# Authors:
+# Christian Heimes <cheimes@redhat.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Copyright (C) 2015 Red Hat, Inc.
+# All rights reserved.
+#
+
+[tox]
+envlist = py27,lint,docs
+
+[testenv]
+# force installation of sphinx and lint in virtual env, otherwise
+# the command pick up the `pki` package from the system's site packages.
+install_command = pip install {opts} --force-reinstall --upgrade {packages}
+
+[testenv:py27]
+sitepackages = True
+commands =
+ python2.7 {envbindir}/pkidestroy --help
+ python2.7 {envbindir}/pkispawn --help
+ python2.7 {envbindir}/pki-server --help
+ python2.7 {envbindir}/pki-server-upgrade --help
+ python2.7 {envbindir}/pki-upgrade --help
+
+[testenv:lint]
+basepython = python2.7
+sitepackages = True
+deps =
+ pylint
+commands =
+ pylint \
+ {envsitepackagesdir}/pki \
+ {envbindir}/pkidestroy \
+ {envbindir}/pkispawn \
+ {envbindir}/pki-server \
+ {envbindir}/pki-server-upgrade \
+ {envbindir}/pki-upgrade \
+ {envbindir}/pki \
+ --rcfile={toxinidir}/dogtag.pylintrc \
+ {posargs}
+
+[testenv:pep8]
+basepython = python2.7
+sitepackages = False
+deps =
+ flake8
+ # flake8-import-order
+ pep8-naming
+commands =
+ flake8 {posargs}
+
+[testenv:docs]
+basepython = python2.7
+sitepackages = True
+changedir = base/common/python
+deps =
+ sphinx < 1.3.0
+commands =
+ sphinx-build -v -W -b html -d {envtmpdir}/doctrees . {envtmpdir}/html
+
+[flake8]
+exclude = .tox,*.egg,dist,build,conf.py,tests/*
+include = *.py,pki-upgrade,pkidestroy,pki-server,pki-server-upgrade,pkispawn,pki
+show-source = true
+max-line-length = 99
+application-import-names = pki
+