httpie-cli/CONTRIBUTING.rst

224 lines
6.1 KiB
ReStructuredText
Raw Normal View History

######################
2014-04-24 18:20:23 +02:00
Contributing to HTTPie
######################
Bug reports and code and documentation patches are welcome. You can
help this project also by using the development version of HTTPie
and by reporting any bugs you might encounter.
2014-04-24 18:20:23 +02:00
1. Reporting bugs
=================
2014-04-24 18:20:23 +02:00
2014-05-09 13:48:34 +02:00
**It's important that you provide the full command argument list
as well as the output of the failing command.**
2014-05-09 13:46:33 +02:00
Use the ``--debug`` flag and copy&paste both the command and its output
to your bug report, e.g.:
2014-04-24 18:20:23 +02:00
.. code-block:: bash
$ http --debug [COMPLETE ARGUMENT LIST THAT TRIGGERS THE ERROR]
[COMPLETE OUTPUT]
2014-04-24 18:20:23 +02:00
2. Contributing Code and Docs
=============================
2014-04-24 18:20:23 +02:00
Before working on a new feature or a bug, please browse `existing issues`_
to see whether it has been previously discussed. If the change in question
2018-10-31 19:17:44 +01:00
is a bigger one, it's always good to discuss before you start working on
2014-04-24 18:20:23 +02:00
it.
Development Environment
--------------------------------
Getting the code
****************
2017-03-10 11:27:38 +01:00
Go to https://github.com/jakubroztocil/httpie and fork the project repository.
2014-04-24 18:20:23 +02:00
.. code-block:: bash
# Clone your fork
git clone git@github.com:<YOU>/httpie.git
2014-04-24 18:20:23 +02:00
# Enter the project directory
2014-04-24 18:20:23 +02:00
cd httpie
# Create a branch for your changes
2014-04-24 18:20:23 +02:00
git checkout -b my_topical_branch
Setup
*****
The `Makefile`_ contains a bunch of tasks to get you started. Just run
2019-12-04 18:34:26 +01:00
the following command, which:
2019-12-04 18:34:26 +01:00
* Creates an isolated Python virtual environment inside ``./venv``
(via the standard library `venv`_ tool);
* installs all dependencies and also installs HTTPie
(in editable mode so that the ``http`` command will point to your
working copy).
* and runs tests (It is the same as running ``make install test``).
2019-12-04 18:34:26 +01:00
.. code-block:: bash
make
Python virtual environment
**************************
Activate the Python virtual environment—created via the ``make install``
task during `setup`_—for your active shell session using the following command:
.. code-block:: bash
source venv/bin/activate
(If you use ``virtualenvwrapper``, you can also use ``workon httpie`` to
2019-12-04 18:48:39 +01:00
activate the environment — we have created a symlink for you. Its a bit of
a hack but it works™.)
You should now see ``(httpie)`` next to your shell prompt, and
the ``http`` should point to you development copy:
.. code-block::
(httpie) ~/Code/httpie $ which http
/Users/jakub/Code/httpie/venv/bin/http
(httpie) ~/Code/httpie $ http --version
2.0.0-dev
(Btw, you dont need to activate the virtual environment if you just want
run some of the ``make`` tasks. You can also invoke the development
version of HTTPie directly with ``./venv/bin/http`` without having to activate
the environment first. The same goes for ``./venv/bin/py.test``, etc.).
2014-04-24 18:20:23 +02:00
If you are on a Windows machine and not able to run ``make``, follow the next steps
***********************************************************************************
Create a virtual environment and activate it:
.. code-block:: powershell
python -m venv --prompt httpie venv
venv\Scripts\activate
Install HTTPie in editable mode with all the dependencies:
.. code-block:: powershell
pip install --upgrade -e . -r requirements-dev.txt
You should now see ``(httpie)`` next to your shell prompt, and
the ``http`` should point to your development copy:
.. code-block:: powershell
# In PowerShell:
(httpie) PS C:\Users\ovezovs\httpie> Get-Command http
CommandType Name Version Source
----------- ---- ------- ------
Application http.exe 0.0.0.0 C:\Users\ovezovs\httpie\venv\Scripts\http.exe
.. code-block:: bash
# In CMD:
(httpie) C:\Users\ovezovs\httpie> where http
C:\Users\ovezovs\httpie\venv\Scripts\http.exe
C:\Users\ovezovs\AppData\Local\Programs\Python\Python38-32\Scripts\http.exe
(httpie) C:\Users\ovezovs\httpie> http --version
2.3.0-dev
Use ``pytest`` to run tests locally with an active virtual environment:
.. code-block:: bash
# Run all tests
py.test
.. code-block:: bash
# Run specific tests
py.test tests\test_uploads.py
py.test tests\test_uploads.py::TestMultipartFormDataFileUpload
py.test tests\test_uploads.py::TestMultipartFormDataFileUpload::test_upload_ok
2014-04-24 18:20:23 +02:00
Making Changes
--------------
Please make sure your changes conform to `Style Guide for Python Code`_ (PEP8)
and that ``make pycodestyle`` passes.
2014-04-24 18:20:23 +02:00
Testing & CI
------------
2014-04-24 18:20:23 +02:00
Please add tests for any new features and bug fixes.
2014-04-24 18:20:23 +02:00
When you open a pull request,
2020-04-20 17:45:51 +02:00
`GitHub Actions <https://github.com/jakubroztocil/httpie/actions>`_
will automatically run HTTPies `test suite`_ against your code
so please make sure all checks pass.
2014-04-24 18:20:23 +02:00
Running tests locally
*********************
HTTPie uses the `pytest`_ runner.
.. code-block:: bash
2014-04-24 21:36:03 +02:00
# Run tests on the current Python interpreter with coverage.
make test
# Run tests with coverage
make test-cover
# Test PEP8 compliance
make pycodestyle
# Run extended tests — for code as well as .rst files syntax, packaging, etc.
make test-all
2014-04-24 21:36:03 +02:00
Running specific tests
**********************
After you have activated your virtual environment (see `setup`_), you
can run specific tests from the terminal:
.. code-block:: bash
# Run specific tests on the current Python
py.test tests/test_uploads.py
py.test tests/test_uploads.py::TestMultipartFormDataFileUpload
py.test tests/test_uploads.py::TestMultipartFormDataFileUpload::test_upload_ok
2014-04-24 18:20:23 +02:00
-----
2014-04-24 18:20:23 +02:00
2016-01-02 18:28:46 +01:00
See `Makefile`_ for additional development utilities.
Finally, don't forget to add yourself to `AUTHORS`_!
2014-04-24 18:20:23 +02:00
2017-03-10 11:27:38 +01:00
.. _existing issues: https://github.com/jakubroztocil/httpie/issues?state=open
.. _AUTHORS: https://github.com/jakubroztocil/httpie/blob/master/AUTHORS.rst
.. _Makefile: https://github.com/jakubroztocil/httpie/blob/master/Makefile
.. _venv: https://docs.python.org/3/library/venv.html
2019-08-30 10:07:01 +02:00
.. _pytest: https://pytest.org/
.. _Style Guide for Python Code: https://python.org/dev/peps/pep-0008/
2017-03-10 11:27:38 +01:00
.. _test suite: https://github.com/jakubroztocil/httpie/tree/master/tests