.. Copyright (C) 2018 Branko Majic This file is part of Gimmecert documentation. This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. Development =========== This section provides information on development process for the project, including instructions on how to set-up a development environment or run the tests locally. Preparing development environment --------------------------------- There is a number of different ways a development environment can be set-up. The process outlined here is centered around `virtualenvwrapper `_. Instructions have been tailored for a GNU/Linux system. Before proceeding, ensure you have the following system-wide packages installed: - `Python, version 3.4+ `_. - `virtualenvwrapper `_. With those in place, do the following: 1. Clone the git repository:: git clone https://code.majic.rs/gimmecert/ 2. Change directory:: cd gimmecert/ 3. Create Python virtual environment: .. warning:: Make sure to specify Python 3 as interpreter. :: mkvirtualenv -a . -p /usr/bin/python3 gimmecert 4. Install development requirements:: pip install -e .[devel] 5. At this point, any time you want to run tests etc, you can easily switch to correct environment (this will also put you in project root directory) with:: workon gimmecert Testing ------- Project includes both unit tests (within ``tests/`` directory) , and functional tests (within ``functional_tests/`` directory). Running the tests will also generate coverage report in HTML format, stored within directory ``coverage/``. Tests can be run in a number of different ways, depending on what you want to test and how. To run the unit tests via setup script, run the following command from repository root:: python setup.py test To run the unit tests directly, run the following command from repository root:: pytest Functional tests must be run explicitly (since they tend to take more time), with:: pytest functional_tests/ Linting checks are performed as part of testing. Linting checks can easily be run with command:: flake8 Tests can also be run using `tox `_: .. note:: When running tests via ``tox``, functional tests are included as well. :: # Run full suite of tests on all supported Python versions. tox # List available tox environments. tox -l # Run tests against specific Python version. tox -e py35 # Run documentation and linting tests only. tox -e doc,lint Building documentation ---------------------- Documentation is written in `reStructuredText `_ and built via `Sphinx `_. To build documentation, run:: cd docs/ make html Resulting documentation will be stored in HTML format in directory ``docs/_build/html/``.