CONTRIBUTING.rst 3.41 KB
Newer Older
louiz’'s avatar
louiz’ committed
1 2 3 4 5
Contributing to biboumi
=======================

Biboumi’s main workplace is at https://lab.louiz.org/louiz/biboumi

6 7
The repository is also mirrored on other websites, for example on github,
but that’s mainly for the convenience of users.
louiz’'s avatar
louiz’ committed
8 9 10 11

Before doing anything, you can come on the `XMPP chatroom`_ to discuss your
changes, issues or ideas.

12

louiz’'s avatar
louiz’ committed
13 14
Bug reports, feature requests
-----------------------------
15 16 17

To open a bug report, or a feature request, please do so on `our gitlab’s
bug tracker`_.
louiz’'s avatar
louiz’ committed
18

19 20 21 22
If the bug you’re reporting is about a bad behaviour of biboumi when some XMPP
or IRC events occur, please try to reproduce the issue with a biboumi running
in log_level=0, and include the relevant logs in your bug report.

louiz’'s avatar
louiz’ committed
23 24 25 26 27 28
If the issue you’re reporting may have security implications, please select
the “confidential” flag in your bug report.


Code
----
29

louiz’'s avatar
louiz’ committed
30
To contribute code, you can do so using git: commit your changes on any
31 32 33
publicly available git repository and communicate us its address.  This can
be done with a `gitlab merge request`_, or a `github pull request`_ or just
by sending a message into the `XMPP chatroom`_.
louiz’'s avatar
louiz’ committed
34

35 36
It is suggested that you use gitlab’s merge requests: this will
automatically run our continuous integration tests.
37

38
It is also recommended to add some unit or end-to-end tests for the proposed
39 40
changes.

louiz’'s avatar
louiz’ committed
41

42 43 44 45 46 47 48 49 50 51 52 53 54
Tests
-----

There are two test suites for biboumi:

- unit tests that can be run simply using `make check`.
  These tests use the Catch test framework, are written in pure C++
  and they should always succeed, in all possible build configuration.

- a more complex end-to-end test suite. This test suite is written in python3,
  uses a specific IRC server (`charybdis`_), and only tests the most complete
  biboumi configuration (when all dependencies are used). To run it, you need
  to install various dependencies: refer to fedora’s `Dockerfile.base`_ and
55 56
  `Dockerfile`_ to see how to install charybdis, slixmpp, botan, a ssl
  certificate, etc.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77

  Once all the dependencies are correctly installed, the tests are run with

  `make e2e`

  To run one or more specific tests, you can do something like this:

  `make biboumi && python3 ../tests/end_to_end  self_ping  basic_handshake_success`

  This will run two tests, self_ping and basic_handshake_success.

  To write additional tests, you need to add a Scenario
  into `the __main__.py file`_. If you have problem running this end-to-end
  test suite, or if you struggle with this weird code (that would be
  completely normal…), don’t hesitate to ask for help.


All these tests automatically run with various configurations, on various
platforms, using gitlab CI.


louiz’'s avatar
louiz’ committed
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
Coding style
------------
Please try to follow the existing style:

- Use only spaces, not tabs.
- Curly brackets are on their own lines.
- Use this-> everywhere it’s possible.
- Don’t start class attributes with “m_” or similar.
- Type names are in PascalCase.
- Everything else is in snake_case.


.. _our gitlab’s bug tracker: https://lab.louiz.org/louiz/biboumi/issues/new
.. _gitlab merge request: https://lab.louiz.org/louiz/biboumi/merge_requests/new
.. _github pull request: https://github.com/louiz/biboumi/pulls
.. _XMPP chatroom: xmpp:biboumi@muc.poez.io
94 95 96
.. _Dockerfile.base: docker/biboumi-test/fedora/Dockerfile.base
.. _Dockerfile: docker/biboumi-test/fedora/Dockerfile
.. _charybdis: https://github.com/charybdis-ircd/charybdis
97
.. _the __main__.py file: tests/end_to_end/__main__.py