Development¶
Tests¶
Software Testing is necessary because we all make mistakes. Some of those mistakes are unimportant, but some of them are expensive or dangerous. To avoid that we write tests.
Package Building/Testing¶
Package building/testing is what Travis CI does. It would be better and easier to have your own travis for your fork. But if you want to almost simulate what it does locally here is steps:
$ # change master to the branch you want to test, also don't forget to change the username
$ git clone --depth=50 --branch=master git://github.com/username/mongokit.git
$ make setup
$ make test
Note
It’s quite important to have appropriate Python environment. If your python version on your system or virtual environment is 2.7 it doesn’t tests for other versions of python and you should create different enthronement your self to run the tests.
Tox Automated Test¶
Another way to run tests is to use Tox. The advantage of using tox is its automation of
creating different virtual environment for python versions that are described in tox.ini
.
For MongoKit we have Python 2.7, Python 3.3, and Python 3.4.
Make sure you have installed Tox. And if you haven’t:
pip install tox
To run all the tests in all defined environments simply run:
$ tox
and to run test in a specified environment use:
$ tox -e py34
Note
py34 is defined in tox.ini
. Other options are py33 and py27.
Nose Test¶
But if you ant run tests partially or run a single test Nose is the way to go.`Nose`_ extends unittest to make testing easier. To run all the tests use:
$ nosetests
and if you wanted to run test for specific feature/file use:
$ nosetests test/test_api.py
Note
For further instructions please view selecting test.
Documentation¶
As a developer, it’s always important to have reliable documentation to guide your work. Here is brief overview of how to create local documentation server:
Local Documentation Server¶
While you are writing documentation or you have slow internet connection it would be nice to have local documentation server.
To create local documentation server clone the repo:
$ git clone https://github.com/namlook/mongokit.git
$ cd mongokit
or you can download the zip file:
$ wget https://github.com/namlook/mongokit/archive/master.zip
$ unzip master.zip
and to compile:
$ cd mongokit/docs
$ make html
sphinx-build -b html -d build/doctrees source build/html
Making output directory...
...
build succeeded, 51 warnings.
Sphinx would create a build/html directory, go into it:
$ cd build/html
Run python http server
$ # Python 3
$ python -m http.server
Serving HTTP on 0.0.0.0 port 8000 ...
$ # Python 2
$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
Open your browser and go to http://localhost:8000 or http://127.0.0.1:8000 .
Note
It would be better to open a new terminal as documentation http server, that way you can see changes simultaneously each time html directory was updated.
If some unwanted results was produced, the quick fix would be deleting the cached build and remaking it:
$ cd ../.. && pwd
/home/user/mongokit/docs
$ make clean
rm -rf build/*
$ make html
sphinx-build -b html -d build/doctrees source build/html
Making output directory...
...
build succeeded, 51 warnings.
See also
It worth mentioning a very nice package called sphinx-autobuild which automates all the steps described. What it does is that it watches a Sphinx directory and rebuild the documentation when a change is detected. Also includes a livereload enabled web server.