Skip to content

Latest commit

 

History

History
145 lines (92 loc) · 4.7 KB

CONTRIBUTING.rst

File metadata and controls

145 lines (92 loc) · 4.7 KB

Contribution

Contributions are highly welcomed and appreciated.

Feature requests

We'd also like to hear about your thoughts and suggestions. Feel free to submit them as issues and:

  • Explain in detail how they should work.
  • Keep the scope as narrow as possible. It will make it easier to implement.

Bug reports

Report bugs for the client in the issue tracker.

If you are reporting a new bug, please include:

  • Your operating system name and version.
  • Python interpreter version, installed libraries, and reportportal-client version.
  • Detailed steps to reproduce the bug.

Bug fixes

Look through the GitHub issues for bugs.

If you are gonna fix any of existing bugs, assign that bug to yourself and specify preliminary milestones. Talk to contributors in case you need a consultancy regarding implementation.

Implement features

Look through the GitHub issues for enhancements.

Talk to contributors in case you need a consultancy regarding implementation.

Preparing Pull Requests

What is a "pull request"? It informs the project's core developers about the changes you want to review and merge. Pull requests are stored on GitHub servers. Once you send a pull request, we can discuss its potential modifications and even add more commits to it later on. There's an excellent tutorial on how Pull Requests work in the GitHub Help Center.

Here is a simple overview below:

  1. Fork the reportportal-client GitHub repository.

  2. Clone your fork locally using git and create a branch:

    $ git clone git@github.com:YOUR_GITHUB_USERNAME/client-Python.git
    $ cd client-Python
    # now, create your own branch off the "master":
    
        $ git checkout -b your-bugfix-branch-name
    

    If you need some help with Git, follow this quick start guide: https://git.wiki.kernel.org/index.php/QuickStart

  3. Install pre-commit and its hook on the client-Python repo:

    Note: pre-commit must be installed as admin, as it will not function otherwise:

    $ pip install --user pre-commit
    $ pre-commit install
    

    Afterwards pre-commit will run whenever you commit.

    https://pre-commit.com/ is a framework for managing and maintaining multi-language pre-commit hooks to ensure code-style and code formatting is consistent.

  4. Install tox

    Tox is used to run all the tests and will automatically setup virtualenvs to run the tests in. (will implicitly use http://www.virtualenv.org/en/latest/):

    $ pip install tox
    
  5. Run all the tests

    You need to have Python 3.6 available in your system. Now running tests is as simple as issuing this command:

    $ tox -e pep,py36
    

    This command will run tests via the "tox" tool against Python 3.6 and also perform code style checks.

  6. You can now edit your local working copy and run the tests again as necessary. Please follow PEP-8 recommendations.

    You can pass different options to tox. For example, to run tests on Python 3.6 and pass options to pytest (e.g. enter pdb on failure) to pytest you can do:

    $ tox -e py36 -- --pdb
    

    Or to only run tests in a particular test module on Python 3.6:

    $ tox -e py36 -- tests/test_service.py
    

    When committing, pre-commit will re-format the files if necessary.

  7. If instead of using tox you prefer to run the tests directly, then we suggest to create a virtual environment and use an editable install with the testing extra:

    $ python3 -m venv .venv
    $ source .venv/bin/activate  # Linux
    $ .venv/Scripts/activate.bat  # Windows
    $ pip install -e ".[testing]"
    

    Afterwards, you can edit the files and run pytest normally:

    $ pytest tests/test_service.py
    
  8. Commit and push once your tests pass and you are happy with your change(s):

    $ git commit -m "<commit message>"
    $ git push -u
    
  9. Finally, submit a pull request through the GitHub website using this data:

    head-fork: YOUR_GITHUB_USERNAME/client-Python
    compare: your-branch-name
    
    base-fork: reportportal/client-Python
    base: master