tests(CI): Adjust Makefile & GHA workflow to support new test layout

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
This commit is contained in:
Brennan Kinney 2022-11-26 10:58:16 +13:00
parent 59127e2b25
commit 2cd534a1ab
3 changed files with 39 additions and 11 deletions

View file

@ -24,6 +24,12 @@ To run the test suite, you will need to
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