diff options
Diffstat (limited to 'TESTING.md')
-rw-r--r-- | TESTING.md | 71 |
1 files changed, 36 insertions, 35 deletions
@@ -1,64 +1,67 @@ # Vela Testing -## Sanity checks and tests +## Tools -The Python codebase is PEP8 compliant with the exception of a 120 character line -length. We run reorder-python-import, black and flake8 against the code base -excluding "ethosu/vela/tflite/" and "ethosu/vela/ethos\_u55\_regs" directories -because they are auto-generated by third party tools. Those tools are run using -[pre-commit framework](https://pre-commit.com/). The configuration file is -.pre-commit-config.yaml +Vela's Python codebase is PEP8 compliant with the exception of a 120 character +line length. The following code formatting and linting tools are run on all the +Python files (excluding the directories `ethosu/vela/tflite/` and +`ethosu/vela/ethos_u55_regs` because they contain auto-generated code): -### Install tools +* reorder-python-import (code formatter) +* black (code formatter) +* flake8 (code linter) -To install pre-commit, run the following: +These tools are run using the [pre-commit](https://pre-commit.com/) framework. +This is also used to run the following test and coverage tools: + +* pytest (testing framework) +* pytest-cov (code coverage plugin for pytest) + +### Installation + +To install pre-commit, pytest and pytest-cov in the pipenv virtual environment +use the following command: ```bash pipenv install -e . --dev ``` -After the installation, pre-commit is available in the virtual environment. -Besides pre-commit, we install also: +The remaining tools will all be installed automatically upon first use. -* pytest: testing framework -* pytest-cov: code coverage plugin for pytest +### Add pre-commit hook (Automatically running the tools) -### Install the pre-commit hook - -To ease the development, we can run those sanity checks before committing the -code. To install the git hook, run: +To support code development all the above tools can be configured to run +automatically on `git commit` (except pytest-cov which is run on `git push`) by +using the command: ```bash $ pre-commit install pre-commit installed at .git/hooks/pre-commit ``` -The checks will be run before the commit: if one of them fails, you need to fix -the code to make the checks pass. +When committing (or pushing) if any of the tools result in a failure (meaning an +issue was found) then it will need to be resolved and the git operation +repeated. -### Run the tests +### Manually running the tools -Tests and test coverage can be run using pre-commit framework. - -```bash -$ pre-commit run pytest -... -$ pre-commit run pytest-cov -``` - -### Run the sanity checks - -Those checks can be run manually. This can be achieved running the following +All of the tools can be run individually by invoking them using the following +pre-commit framework commands: ```bash $ pre-commit run reorder-python-imports --all-files ... +$ pre-commit run black --all-files +... $ pre-commit run flake8 --all-files ... -$ pre-commit run black --all-files +$ pre-commit run pytest +... +$ pre-commit run pytest-cov --hook-stage push +... ``` -If you don't specify anything after run, it will execute all the checks. +Alternatively, all of the commit stage hooks can be run using the command: ```bash $ pre-commit run --all-files @@ -66,6 +69,4 @@ Reorder python imports...................................................Passed black....................................................................Passed flake8...................................................................Passed pytest...................................................................Passed -... -... ``` |