mirror of
https://blitiri.com.ar/repos/chasquid
synced 2026-10-28 15:02:28 +00:00
docs: Auto-format markdown documentation
This patch uses mdformat to auto-format markdown documentation. To support \ for line breaks (which is what mdformat uses), mkdocs now requires the pymdownx.escapeall extension. Because of incompatibilities between mdformat (which formats to CommonMark) and mkdocs (which expects Python-Markdown), there are now some limitations: no nested lists, multi-paragraph list items, or admonitions support. These limitations are acceptable for now, although some of the docs had to be adjusted to meet them.
This commit is contained in:
+21
-31
@@ -1,4 +1,3 @@
|
||||
|
||||
# Testing
|
||||
|
||||
## Go tests
|
||||
@@ -6,46 +5,43 @@
|
||||
All Go packages have their own test suite, which provides easy and portable
|
||||
tests with decent enough coverage.
|
||||
|
||||
|
||||
## Integration tests
|
||||
|
||||
In the `test/` directory there is a set of end to end integration tests,
|
||||
written usually in a combination of bash and Python 3.
|
||||
|
||||
They're not expected to be portable, as that gets impractical very quickly,
|
||||
but should be usable in most Linux environments.
|
||||
They're not expected to be portable, as that gets impractical very quickly, but
|
||||
should be usable in most Linux environments.
|
||||
|
||||
They provide critical coverage and integration tests for real life scenarios,
|
||||
as well as interactions with other software (like Exim or Dovecot).
|
||||
|
||||
|
||||
### Dependencies
|
||||
|
||||
The tests depend on the following things being installed on the system (listed
|
||||
as Debian package, for consistency):
|
||||
|
||||
- `msmtp`
|
||||
- `util-linux` (for `/usr/bin/setsid`)
|
||||
- `msmtp`
|
||||
- `util-linux` (for `/usr/bin/setsid`)
|
||||
|
||||
Some individual tests have additional dependencies, and the tests are skipped
|
||||
if the dependencies are not found:
|
||||
|
||||
- `t-02-exim` [Exim](https://www.exim.org/) interaction tests:
|
||||
- `gettext-base` (for `/usr/bin/envsubst`)
|
||||
- The `exim` binary available somewhere, but it doesn't have to be
|
||||
installed. There's a script `get-exim4-debian.sh` to get it from the
|
||||
archives.
|
||||
- `t-02-exim` [Exim](https://www.exim.org/) interaction tests: `gettext-base`
|
||||
(for `/usr/bin/envsubst`), and the `exim` binary available somewhere, but it
|
||||
doesn't have to be installed. There's a script `get-exim4-debian.sh` to get
|
||||
it from the archives.
|
||||
- `t-11-dovecot` [Dovecot](https://www.dovecot.org/) interaction tests:
|
||||
- `dovecot`
|
||||
- `t-15-driusan_dkim` DKIM integration tests:
|
||||
- The `dkimsign dkimverify dkimkeygen` binaries, from
|
||||
[driusan/dkim](https://github.com/driusan/dkim) (no Debian package yet).
|
||||
`dovecot`.
|
||||
- `t-15-driusan_dkim` DKIM integration tests: the
|
||||
`dkimsign dkimverify dkimkeygen` binaries, from
|
||||
[driusan/dkim](https://github.com/driusan/dkim) (no Debian package yet).
|
||||
- `t-18-haproxy` [HAProxy](https://www.haproxy.org/) integration tests:
|
||||
- `haproxy`
|
||||
`haproxy`.
|
||||
- `t-19-dkimpy`: [dkimpy](https://pypi.org/project/dkimpy/) integration tests:
|
||||
- `python3-dkim`
|
||||
`python3-dkim`.
|
||||
- `t-23-prometheus`: [Prometheus](https://prometheus.io/) integration tests:
|
||||
- `prometheus promtool`
|
||||
`prometheus promtool`.
|
||||
|
||||
For some tests, python >= 3.5 is required; they will be skipped if it's not
|
||||
available.
|
||||
@@ -56,7 +52,6 @@ environment variable being functional, and will be skipped if it isn't. This
|
||||
works by default in most Linux systems, but note that the use of
|
||||
`systemd-resolved` can prevent it from working properly.
|
||||
|
||||
|
||||
## Stress tests
|
||||
|
||||
Also in the `test/` directory there is a set of stress tests, which generate
|
||||
@@ -65,7 +60,6 @@ load against chasquid to measure performance and resource consumption.
|
||||
While they are not exhaustive, they are useful to catch regressions and track
|
||||
improvements on the main code paths.
|
||||
|
||||
|
||||
## Fuzz tests
|
||||
|
||||
Some Go packages also have instrumentation to run fuzz testing against them,
|
||||
@@ -74,13 +68,11 @@ using the [Go native fuzzing support](https://go.dev/security/fuzz/).
|
||||
This is critical for packages that handle sensitive user input, such as
|
||||
authentication encoding, aliases files, or username normalization.
|
||||
|
||||
|
||||
## Command-line tool tests
|
||||
|
||||
Each command-line tool has their own set of tests, see the `test.sh` file on
|
||||
their corresponding directories.
|
||||
|
||||
|
||||
## Docker
|
||||
|
||||
The `test/Dockerfile` can be used to set up a suitable isolated environment to
|
||||
@@ -89,20 +81,18 @@ run the integration and stress tests.
|
||||
This is very useful for automated tests, or running the integration tests in
|
||||
constrained or non supported environments.
|
||||
|
||||
|
||||
## Automated tests
|
||||
|
||||
There are two sets of automated tests which are run on every commit to
|
||||
upstream, and also weekly:
|
||||
|
||||
* [Github Actions](https://github.com/albertito/chasquid/actions),
|
||||
configured in the `.github` directory, runs the Go tests, the integration
|
||||
tests, checks for vulnerabilities, and finally
|
||||
also builds the [public Docker images](docker.md).
|
||||
|
||||
* [Cirrus CI](https://cirrus-ci.com/github/albertito/chasquid),
|
||||
configured in the `.cirrus.yml` file, runs Go tests on FreeBSD.
|
||||
- [Github Actions](https://github.com/albertito/chasquid/actions), configured
|
||||
in the `.github` directory, runs the Go tests, the integration tests, checks
|
||||
for vulnerabilities, and finally also builds the
|
||||
[public Docker images](docker.md).
|
||||
|
||||
- [Cirrus CI](https://cirrus-ci.com/github/albertito/chasquid), configured in
|
||||
the `.cirrus.yml` file, runs Go tests on FreeBSD.
|
||||
|
||||
## Coverage
|
||||
|
||||
|
||||
Reference in New Issue
Block a user