doc: Update doc/contributing.rst
JIRA: RHELCMP-1773 Signed-off-by: Haibo Lin <hlin@redhat.com>
This commit is contained in:
parent
4dcb6dee0d
commit
c273350fe5
@ -7,64 +7,22 @@ Set up development environment
|
|||||||
==============================
|
==============================
|
||||||
|
|
||||||
In order to work on *Pungi*, you should install recent version of *Fedora*.
|
In order to work on *Pungi*, you should install recent version of *Fedora*.
|
||||||
These packages will have to installed:
|
|
||||||
|
|
||||||
* createrepo_c
|
Python2
|
||||||
* cvs
|
-------
|
||||||
* gcc
|
|
||||||
* genisoimage
|
|
||||||
* gettext
|
|
||||||
* git
|
|
||||||
* gobject-introspection
|
|
||||||
* isomd5sum
|
|
||||||
* jigdo
|
|
||||||
* kobo
|
|
||||||
* krb5-devel
|
|
||||||
* libcurl-devel
|
|
||||||
* libmodulemd
|
|
||||||
* libselinux-python
|
|
||||||
* lorax
|
|
||||||
* python-dogpile-cache
|
|
||||||
* python-jsonschema
|
|
||||||
* python-kickstart
|
|
||||||
* python-libcomps
|
|
||||||
* python-lockfile
|
|
||||||
* python-lxml
|
|
||||||
* python2-multilib
|
|
||||||
* python-productmd
|
|
||||||
* PyYAML
|
|
||||||
* repoview
|
|
||||||
* rpm-devel
|
|
||||||
* syslinux
|
|
||||||
* yum
|
|
||||||
* yum-utils
|
|
||||||
|
|
||||||
For running unit tests, these packages are recommended as well:
|
Fedora 29 is recommended because some packages are not available in newer Fedora release, e.g. python2-libcomps.
|
||||||
|
|
||||||
* python-mock
|
Install required packages ::
|
||||||
* python-pytest
|
|
||||||
* python-pytest-cov
|
|
||||||
* python-unittest2
|
|
||||||
* rpmdevtools
|
|
||||||
* python-parameterized
|
|
||||||
|
|
||||||
While being difficult, it is possible to work on *Pungi* using *virtualenv*.
|
$ sudo dnf install -y krb5-devel gcc make libcurl-devel python2-devel python2-createrepo_c kobo-rpmlib yum python2-libcomps python2-libselinx
|
||||||
Install *python-virtualenvwrapper* (after installation you have to add the command
|
|
||||||
to *source /usr/local/bin/virtualenvwrapper.sh* to your shell startup file,
|
|
||||||
depending on where it was installed by package manager) and use following steps.
|
|
||||||
It will link system libraries into the virtual environment and install all packages
|
|
||||||
preferably from PyPI or from tarball. You will still need to install all of the non-Python
|
|
||||||
packages above as they are used by calling an executable. ::
|
|
||||||
|
|
||||||
$ mkvirtualenv pungienv
|
Python3
|
||||||
$ for pkg in gi libcomps pykickstart rpmUtils selinux urlgrabber yum; do ln -vs "$(deactivate && python -c 'import os, '$pkg'; print(os.path.dirname('$pkg'.__file__))')" "$(virtualenvwrapper_get_site_packages_dir)"; done
|
-------
|
||||||
$ for pkg in _deltarpm krbV _selinux deltarpm sqlitecachec _sqlitecache; do ln -vs "$(deactivate && python -c 'import os, '$pkg'; print('$pkg'.__file__)')" "$(virtualenvwrapper_get_site_packages_dir)"; done
|
|
||||||
$ pip install -U pip
|
|
||||||
$ PYCURL_SSL_LIBRARY=nss pip install pycurl --no-binary :all:
|
|
||||||
$ pip install beanbag jsonschema 'kobo>=0.6.0' lockfile lxml mock pytest pytest-cov productmd pyopenssl python-multilib requests requests-kerberos setuptools sphinx ordered_set koji PyYAML dogpile.cache parameterized
|
|
||||||
|
|
||||||
Now you should be able to run all existing tests.
|
Install required packages ::
|
||||||
|
|
||||||
|
$ sudo dnf install -y krb5-devel gcc make libcurl-devel python3-devel python3-createrepo_c python3-libcomps
|
||||||
|
|
||||||
Developing
|
Developing
|
||||||
==========
|
==========
|
||||||
@ -121,7 +79,7 @@ Currently the development workflow for Pungi is on master branch:
|
|||||||
|
|
||||||
- you must sign-off on it. Use ``-s`` option when running ``git commit``.
|
- you must sign-off on it. Use ``-s`` option when running ``git commit``.
|
||||||
|
|
||||||
- The code must be well formatted via ``black`` and pass ``flake8`` checking. Run ``tox`` to do the check.
|
- The code must be well formatted via ``black`` and pass ``flake8`` checking. Run ``tox -e black,flake8`` to do the check.
|
||||||
|
|
||||||
- Create pull request in the pagure.io web UI
|
- Create pull request in the pagure.io web UI
|
||||||
|
|
||||||
@ -149,20 +107,42 @@ Testing
|
|||||||
You must write unit tests for any new code (except for trivial changes). Any
|
You must write unit tests for any new code (except for trivial changes). Any
|
||||||
code without sufficient test coverage may not be merged.
|
code without sufficient test coverage may not be merged.
|
||||||
|
|
||||||
To run all existing tests, suggested method is to use *pytest*. With
|
To run all existing tests, suggested method is to use *tox*. ::
|
||||||
additional options, it can generate code coverage. To make sure even tests from
|
|
||||||
executable files are run, don't forget to use the ``--exe`` option. ::
|
|
||||||
|
|
||||||
|
$ sudo dnf install python3-tox -y
|
||||||
|
|
||||||
|
$ tox -e py3
|
||||||
|
$ tox -e py27
|
||||||
|
|
||||||
|
Alternatively you could create a vitualenv, install deps and run tests
|
||||||
|
manually if you don't want to use tox. ::
|
||||||
|
|
||||||
|
$ sudo dnf install python3-virtualenvwrapper -y
|
||||||
|
$ mkvirtualenv --system-site-packages py3
|
||||||
|
$ workon py3
|
||||||
|
$ pip install -r requirements.txt -r test-requirements.txt
|
||||||
$ make test
|
$ make test
|
||||||
$ make test-cover
|
|
||||||
|
|
||||||
# Running single test file
|
# or with coverage
|
||||||
$ python tests/test_arch.py [TestCase...]
|
$ make test-coverage
|
||||||
|
|
||||||
|
If you need to run specified tests, *pytest* is recommended. ::
|
||||||
|
|
||||||
|
# Activate virtualenv first
|
||||||
|
|
||||||
|
# Run tests
|
||||||
|
$ pytest tests/test_config.py
|
||||||
|
$ pytest tests/test_config.py -k test_pkgset_mismatch_repos
|
||||||
|
|
||||||
In the ``tests/`` directory there is a shell script ``test_compose.sh`` that
|
In the ``tests/`` directory there is a shell script ``test_compose.sh`` that
|
||||||
you can use to try and create a miniature compose on dummy data. The actual
|
you can use to try and create a miniature compose on dummy data. The actual
|
||||||
data will be created by running ``make test-data`` in project root. ::
|
data will be created by running ``make test-data`` in project root. ::
|
||||||
|
|
||||||
|
$ sudo dnf -y install rpm-build createrepo_c isomd5sum genisoimage syslinux
|
||||||
|
|
||||||
|
# Activate virtualenv (the one created by tox could be used)
|
||||||
|
$ source .tox/py3/bin/activate
|
||||||
|
|
||||||
$ python setup.py develop
|
$ python setup.py develop
|
||||||
$ make test-data
|
$ make test-data
|
||||||
$ make test-compose
|
$ make test-compose
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
# Some packages must be installed via dnf/yum first, see doc/contributing.rst
|
||||||
dict.sorted
|
dict.sorted
|
||||||
dogpile.cache
|
dogpile.cache
|
||||||
fedmsg
|
fedmsg
|
||||||
|
Loading…
Reference in New Issue
Block a user