The Ceph command line and ceph-disk helper are python scripts for which there are integration tests (ceph-disk.sh and test.sh). It would be useful to add unit tests and pep8 checks.
It can be done by creating a python module instead of an isolated file (see for instance ceph-detect-init) with a tox.ini file including pep8, python2 and python3 test environments.
Since Ceph relies on autotools, the setup.py can be used with -local targets. For instance:
all-local:: python setup.py build clean-local:: python setup.py clean install-data-local:: python setup.py install --root=$(DESTDIR) --install-layout=deb
Note the double : meaning it appends to an existing rule instead of overriding it. The –root=$(DESTDIR) will install the module files in the appropriate directory when building packages.
tox uses pip to fetch dependencies required to run tests from PyPI, but tests sometime run without network access. The depedencies can be collected by wheel with something like:
pip wheel -r requirements.txt
It will create a wheelhouse directory which can later be used with
pip install --no-index --use-wheel --find-links=wheelhouse \ -r requirements.txt