python: add avocado-framework and tests
Try using avocado to manage our various tests; even though right now they're only invoking shell scripts and not really running any python-native code. Create tests/, and add shell scripts which call out to mypy, flake8, pylint and isort to enforce the standards in this directory. Add avocado-framework to the setup.cfg development dependencies, and add avocado.cfg to store some preferences for how we'd like the test output to look. Finally, add avocado-framework to the Pipfile environment and lock the new dependencies. We are using avocado >= 87.0 here to take advantage of some features that Cleber has helpfully added to make the test output here *very* friendly and easy to read for developers that might chance upon the output in Gitlab CI. [Note: ALL of the dependencies get updated to the most modern versions that exist at the time of this writing. No way around it that I have seen. Not ideal, but so it goes.] Provided you have the right development dependencies (mypy, flake8, isort, pylint, and now avocado-framework) You should be able to run "avocado --config avocado.cfg run tests/" from the python folder to run all of these linters with the correct arguments. (A forthcoming commit adds the much easier 'make check'.) Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Cleber Rosa <crosa@redhat.com> Tested-by: Cleber Rosa <crosa@redhat.com> Message-id: 20210527211715.394144-28-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
parent
dbe75f5566
commit
31622b2a8a
8
python/Pipfile.lock
generated
8
python/Pipfile.lock
generated
@ -30,6 +30,14 @@
|
|||||||
"markers": "python_version ~= '3.6'",
|
"markers": "python_version ~= '3.6'",
|
||||||
"version": "==2.5.6"
|
"version": "==2.5.6"
|
||||||
},
|
},
|
||||||
|
"avocado-framework": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:42aa7962df98d6b78d4efd9afa2177226dc630f3d83a2a7d5baf7a0a7da7fa1b",
|
||||||
|
"sha256:d96ae343abf890e1ef3b3a6af5ce49e35f6bded0715770c4acb325bca555c515"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.6'",
|
||||||
|
"version": "==88.1"
|
||||||
|
},
|
||||||
"flake8": {
|
"flake8": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b",
|
"sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b",
|
||||||
|
@ -37,6 +37,8 @@ Files in this directory
|
|||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
- ``qemu/`` Python package source directory.
|
- ``qemu/`` Python package source directory.
|
||||||
|
- ``tests/`` Python package tests directory.
|
||||||
|
- ``avocado.cfg`` Configuration for the Avocado test-runner.
|
||||||
- ``MANIFEST.in`` is read by python setuptools, it specifies additional files
|
- ``MANIFEST.in`` is read by python setuptools, it specifies additional files
|
||||||
that should be included by a source distribution.
|
that should be included by a source distribution.
|
||||||
- ``PACKAGE.rst`` is used as the README file that is visible on PyPI.org.
|
- ``PACKAGE.rst`` is used as the README file that is visible on PyPI.org.
|
||||||
|
10
python/avocado.cfg
Normal file
10
python/avocado.cfg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[simpletests]
|
||||||
|
# Don't show stdout/stderr in the test *summary*
|
||||||
|
status.failure_fields = ['status']
|
||||||
|
|
||||||
|
[job]
|
||||||
|
# Don't show the full debug.log output; only select stdout/stderr.
|
||||||
|
output.testlogs.logfiles = ['stdout', 'stderr']
|
||||||
|
|
||||||
|
# Show full stdout/stderr only on tests that FAIL
|
||||||
|
output.testlogs.statuses = ['FAIL']
|
@ -25,6 +25,7 @@ packages =
|
|||||||
[options.extras_require]
|
[options.extras_require]
|
||||||
# Run `pipenv lock --dev` when changing these requirements.
|
# Run `pipenv lock --dev` when changing these requirements.
|
||||||
devel =
|
devel =
|
||||||
|
avocado-framework >= 87.0
|
||||||
flake8 >= 3.6.0
|
flake8 >= 3.6.0
|
||||||
isort >= 5.1.2
|
isort >= 5.1.2
|
||||||
mypy >= 0.770
|
mypy >= 0.770
|
||||||
|
2
python/tests/flake8.sh
Executable file
2
python/tests/flake8.sh
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
python3 -m flake8
|
2
python/tests/isort.sh
Executable file
2
python/tests/isort.sh
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
python3 -m isort -c qemu/
|
2
python/tests/mypy.sh
Executable file
2
python/tests/mypy.sh
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
python3 -m mypy -p qemu
|
2
python/tests/pylint.sh
Executable file
2
python/tests/pylint.sh
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
python3 -m pylint qemu/
|
Loading…
Reference in New Issue
Block a user