aboutsummaryrefslogtreecommitdiff
path: root/TESTING.md
blob: c5953d969078d24a40eb6c72baf14439f2396e7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# Vela Testing

## Tools

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):

* reorder-python-import (code formatter)
* black (code formatter)
* flake8 (code linter)

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
```

The remaining tools will all be installed automatically upon first use.

### Add pre-commit hook (Automatically running the tools)

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
```

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.

### Manually running the tools

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 pytest
...
$ pre-commit run pytest-cov --hook-stage push
...
```

Alternatively, all of the commit stage hooks can be run using the command:

```bash
$ pre-commit run --all-files
Reorder python imports...................................................Passed
black....................................................................Passed
flake8...................................................................Passed
pytest...................................................................Passed
```