mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2024-01-19 02:48:50 +00:00
2cd534a1ab
These updates support running tests that have been relocated into `serial` and `parallel/set*` directories. - `make tests` now calls the two make targets beneath it. The only difference is that `serial` continues the "1 test at a time" approach used prior to this PR, while the `parallel` target increases the `--jobs` arg to run multiple tests concurrently (_configured by `PARALLEL_JOBS`_). - The `test/%` target leverages Bash syntax magic to ease running single tests without providing the exact path. - This syntax also supports providing multiple test names (eg: `make test/clamav,template`) to run. - `**` (globstar) allows for future improvements that can group multiple test files into sub-directories by their scope (eg: anti-spam, ssl, etc). --- chore: Add `shopt -s globstar` to other targets I realized that other targets should have this as well in case it is not set. It is better to be more explicit here than to have weird errors due to `**` not expanding properly. --- fix(Makefile): Add back `.PHONY` targets I encountered `make` telling me the target was already up-to-date, which of course is nonsense. I therefore added back the `.PHONY` targets to ensure tests are always run. --- docs: Added instructions for running a single test See https://github.com/docker-mailserver/docker-mailserver/pull/2857/files#r1008582760
44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
---
|
|
title: 'Contributing | General Information'
|
|
---
|
|
|
|
## Coding Style
|
|
|
|
When refactoring, writing or altering scripts or other files, adhere to these rules:
|
|
|
|
1. **Adjust your style of coding to the style that is already present**! Even if you do not like it, this is due to consistency. There was a lot of work involved in making all scripts consistent.
|
|
2. **Use `shellcheck` to check your scripts**! Your contributions are checked by GitHub Actions too, so you will need to do this. You can **lint your work with `make lint`** to check against all targets.
|
|
3. **Use the provided `.editorconfig`** file.
|
|
4. Use `/bin/bash` instead of `/bin/sh` in scripts
|
|
|
|
## Tests
|
|
|
|
To run the test suite, you will need to
|
|
|
|
1. [Install Docker]
|
|
2. Install `jq` (under Ubuntu, use `sudo apt-get -y install jq`)
|
|
3. Execute `git submodule update --init --recursive` if you haven't already initialized the git submodules
|
|
4. Execute `make clean all`
|
|
|
|
!!! info "Can I use MacOS?"
|
|
|
|
We do not support running linting, tests, etc on macOS at this time. Please use a linux VM.
|
|
|
|
??? tip "Running a Specific Test"
|
|
|
|
To run a specific test, use `make build generate-accounts test/<TEST NAME>`, where `<TEST NAME>` is the file name of the test (_for more precision use a relative path: `test/test/<PATH>`_) excluding the `.bats` suffix.
|
|
|
|
To run only the tests in `template.bats`, use `make test/template` (or `make test/parallel/set2/template`).
|
|
|
|
[Install Docker]: https://docs.docker.com/get-docker/
|
|
|
|
## Documentation
|
|
|
|
You will need to have Docker installed. Navigate into the `docs/` directory. Then run:
|
|
|
|
```sh
|
|
docker run --rm -it -p 8000:8000 -v "${PWD}:/docs" squidfunk/mkdocs-material
|
|
```
|
|
|
|
This serves the documentation on your local machine on port `8000`. Each change will be hot-reloaded onto the page you view, just edit, save and look at the result.
|