mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Introduced `get|post` `/passreset` routes. These routes mimic the behavior of the existing PHP implementation, with the exception of HTTP status code returns. Routes added: GET /passreset POST /passreset Routers added: aurweb.routers.accounts * On an unknown user or mismatched resetkey (where resetkey must == user.resetkey), return HTTP status NOT_FOUND (404). * On another error in the request, return HTTP status BAD_REQUEST (400). Both `get|post` routes requires that the current user is **not** authenticated, hence `@auth_required(False, redirect="/")`. + Added auth_required decorator to aurweb.auth. + Added some more utility to aurweb.models.user.User. + Added `partials/error.html` template. + Added `passreset.html` template. + Added aurweb.db.ConnectionExecutor functor for paramstyle logic. Decoupling the executor logic from the database connection logic is needed for us to easily use the same logic with a fastapi database session, when we need to use aurweb.scripts modules. At this point, notification configuration is now required to complete tests involved with notifications properly, like passreset. `conf/config.dev` has been modified to include [notifications] sendmail, sender and reply-to overrides. Dockerfile and .gitlab-ci.yml have been updated to setup /etc/hosts and start postfix before running tests. * setup.cfg: ignore E741, C901 in aurweb.routers.accounts These two warnings (shown in the commit) are not dangerous and a bi-product of maintaining compatibility with our current code flow. Signed-off-by: Kevin Morris <kevr@0cost.org>
87 lines
2.9 KiB
Markdown
87 lines
2.9 KiB
Markdown
Running tests
|
|
-------------
|
|
|
|
To run all tests, you may run `make check` under `test/` (alternative targets:
|
|
`make pytest`, `make sh`).
|
|
|
|
For more control, you may use the `prove` or `pytest` command, which receives a
|
|
directory or a list of files to run, and produces a report.
|
|
|
|
Each test script is standalone, so you may run them individually. Some tests
|
|
may receive command-line options to help debugging. See for example sharness's
|
|
documentation for shell test scripts:
|
|
https://github.com/chriscool/sharness/blob/master/README.git
|
|
|
|
### Dependencies
|
|
|
|
For all the test to run, the following Arch packages should be installed:
|
|
|
|
- pyalpm
|
|
- python-alembic
|
|
- python-bleach
|
|
- python-markdown
|
|
- python-pygit2
|
|
- python-sqlalchemy
|
|
- python-srcinfo
|
|
- python-coverage
|
|
- python-pytest
|
|
- python-pytest-cov
|
|
- python-pytest-asyncio
|
|
- postfix
|
|
|
|
Running tests
|
|
-------------
|
|
|
|
Recommended method of running tests: `make check`.
|
|
|
|
First, setup the test configuration:
|
|
|
|
$ sed -r 's;YOUR_AUR_ROOT;$(pwd);g' conf/config.dev > conf/config
|
|
|
|
You'll need to make sure that emails can be sent out by aurweb.scripts.notify.
|
|
If you don't have anything setup, just install postfix and start it before
|
|
running tests.
|
|
|
|
With those installed, one can run Python tests manually with any AUR config
|
|
specified by `AUR_CONFIG`:
|
|
|
|
$ AUR_CONFIG=conf/config coverage run --append /usr/bin/pytest test/
|
|
|
|
After tests are run (particularly, with `coverage run` included), one can
|
|
produce coverage reports.
|
|
|
|
# Print out a CLI coverage report.
|
|
$ coverage report
|
|
# Produce an HTML-based coverage report.
|
|
$ coverage html
|
|
|
|
When running `make -C test`, all tests ran will produce coverage data via
|
|
`coverage run --append`. After running `make -C test`, one can continue with
|
|
coverage reporting steps above. Running tests through `make` will test and
|
|
cover code ran by both aurweb scripts and our pytest collection.
|
|
|
|
Writing tests
|
|
-------------
|
|
|
|
Shell test scripts must follow the Test Anything Protocol specification:
|
|
http://testanything.org/tap-specification.html
|
|
|
|
Python tests must be compatible with `pytest` and included in `pytest test/`
|
|
execution after setting up a configuration.
|
|
|
|
Tests must support being run from any directory. They may use $0 to determine
|
|
their location. Python scripts should expect aurweb to be installed and
|
|
importable without toying with os.path or PYTHONPATH.
|
|
|
|
Tests written in shell should use sharness. In general, new tests should be
|
|
consistent with existing tests unless they have a good reason not to.
|
|
|
|
Debugging tests
|
|
---------------
|
|
|
|
By default, `make -C test` is quiet and does not print out verbose information
|
|
about tests being run. If a test is failing, one can look into verbose details
|
|
of sharness tests by executing them with the `--verbose` flag. Example:
|
|
`./t1100_git_auth.t --verbose`. This is particularly useful when tests happen
|
|
to fail in a remote continuous integration environment, where the reader does
|
|
not have complete access to the runner.
|