mirror of
https://github.com/freedomofpress/dangerzone.git
synced 2025-04-28 18:02:38 +02:00
Run tests sequentially
Run tests sequentially, because in subsequent commits we will add Qt tests that do not play nice when `pytest` creates new processes [1]. Also, remove the pytest wrapper, whose main task was to decide if tests can run in parallel [2]. [1]: https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-2393 [2]: https://github.com/freedomofpress/dangerzone/issues/217
This commit is contained in:
parent
a1bbcdf2b6
commit
f58e31efe6
2 changed files with 2 additions and 62 deletions
3
Makefile
3
Makefile
|
@ -37,7 +37,8 @@ lint-apply: lint-black-apply lint-isort-apply ## apply all the linter's suggesti
|
||||||
|
|
||||||
.PHONY: test
|
.PHONY: test
|
||||||
test:
|
test:
|
||||||
python ./dev_scripts/pytest-wrapper.py -v --cov --ignore dev_scripts
|
pytest -v --cov --ignore dev_scripts
|
||||||
|
|
||||||
|
|
||||||
# Makefile self-help borrowed from the securedrop-client project
|
# Makefile self-help borrowed from the securedrop-client project
|
||||||
# Explaination of the below shell command should it ever break.
|
# Explaination of the below shell command should it ever break.
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
# PyTest Wrapper script - temporary solution to tests failing non-deterministically [1]
|
|
||||||
# This is only fixed in podman v4.3.0. The wrapper essentially runs the tests in sequence
|
|
||||||
# when the podman version is lower.
|
|
||||||
#
|
|
||||||
# [1]: https://github.com/freedomofpress/dangerzone/issues/217
|
|
||||||
|
|
||||||
# FIXME this whole script should be removed and the respective Makefile calling line
|
|
||||||
# replaced once all supported platforms have a podman version >= v4.3.0.
|
|
||||||
|
|
||||||
import re
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from pkg_resources import parse_version
|
|
||||||
|
|
||||||
from dangerzone.isolation_provider.container import Container
|
|
||||||
|
|
||||||
PODMAN_MIN_VERSION = "4.3.0"
|
|
||||||
|
|
||||||
|
|
||||||
def get_podman_version():
|
|
||||||
result = subprocess.run(
|
|
||||||
["podman", "version", "--format", "'{{.Client.Version}}'"], capture_output=True
|
|
||||||
)
|
|
||||||
version = result.stdout.decode()[:-1] # trim trailing \n
|
|
||||||
return version.split("-dev")[0] # exclude "-dev" suffix from version
|
|
||||||
|
|
||||||
|
|
||||||
def run_tests(pytest_args):
|
|
||||||
cmd = ["pytest"] + pytest_args
|
|
||||||
try:
|
|
||||||
subprocess.run(cmd, check=True)
|
|
||||||
except subprocess.CalledProcessError:
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
def run_tests_in_parallel(pytest_args):
|
|
||||||
print("running tests in parallel")
|
|
||||||
run_tests(pytest_args + ["-n", "4"])
|
|
||||||
|
|
||||||
|
|
||||||
def run_tests_in_sequence(pytest_args):
|
|
||||||
print("running tests sequentially")
|
|
||||||
run_tests(pytest_args)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
pytest_args = sys.argv[1:] # exclude program names
|
|
||||||
|
|
||||||
if Container.get_runtime_name() == "docker":
|
|
||||||
run_tests_in_parallel(pytest_args)
|
|
||||||
else:
|
|
||||||
podman_ver_minimum_parallel = parse_version(PODMAN_MIN_VERSION)
|
|
||||||
podman_ver_current = parse_version(get_podman_version())
|
|
||||||
if podman_ver_current >= podman_ver_minimum_parallel:
|
|
||||||
run_tests_in_parallel(pytest_args)
|
|
||||||
else:
|
|
||||||
run_tests_in_sequence(pytest_args)
|
|
Loading…
Reference in a new issue