forked from canonical/prometheus-k8s-operator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtox.ini
132 lines (124 loc) · 3.57 KB
/
tox.ini
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# Copyright 2021 Canonical Ltd.
# See LICENSE file for licensing details.
[tox]
skipsdist=True
skip_missing_interpreters = True
envlist = lint, static-{charm,lib,unit,integration}, unit
[vars]
src_path = {toxinidir}/src
tst_path = {toxinidir}/tests
lib_path = {toxinidir}/lib/charms/prometheus_k8s
all_path = {[vars]src_path} {[vars]tst_path} {[vars]lib_path}
[testenv]
basepython = python3
setenv =
PYTHONPATH = {toxinidir}:{toxinidir}/lib:{[vars]src_path}
PYTHONBREAKPOINT=ipdb.set_trace
PY_COLORS=1
passenv =
PYTHONPATH
HOME
PATH
CHARM_BUILD_DIR
MODEL_SETTINGS
HTTP_PROXY
HTTPS_PROXY
NO_PROXY
[testenv:fmt]
description = Apply coding style standards to code
deps =
black
isort
commands =
isort {[vars]all_path}
black {[vars]all_path}
[testenv:lint]
description = Check code against coding style standards
deps =
black
codespell
# Pinned until pyproject-flake8 supports flake8 >= 5
flake8 < 5
flake8-docstrings
flake8-copyright
flake8-builtins
pyproject-flake8
pep8-naming
isort
commands =
codespell {[vars]lib_path}
codespell . --skip .git --skip .tox --skip build --skip lib --skip venv --skip .mypy_cache
# pflake8 wrapper supports config from pyproject.toml
pflake8 {[vars]all_path}
isort --check-only --diff {[vars]all_path}
black --check --diff {[vars]all_path}
[testenv:static-{charm,lib}]
description = Run static analysis checks
setenv =
unit: MYPYPATH = {[vars]tst_path}/unit
integration: MYPYPATH = {[vars]tst_path}/integration
deps =
mypy
types-dataclasses
types-PyYAML
types-requests
charm: -r{toxinidir}/requirements.txt
lib: ops
charm: responses==0.20.0
charm: httpcore==0.14.7
commands =
charm: mypy {[vars]src_path} {posargs}
lib: mypy --python-version 3.5 {[vars]lib_path} {posargs}
[testenv:unit]
description = Run unit tests
deps =
fs
pytest
coverage[toml]
responses==0.20.0
-r{toxinidir}/requirements.txt
deepdiff
httpcore==0.14.7
commands =
python -m doctest {[vars]src_path}/charm.py
/usr/bin/env sh -c 'stat cos-tool-amd64 > /dev/null 2>&1 || curl -L -O https://github.com/canonical/cos-tool/releases/latest/download/cos-tool-amd64'
coverage run \
--source={[vars]src_path},{[vars]lib_path} \
-m pytest -v --tb native --log-cli-level=INFO -s {posargs} {[vars]tst_path}/unit
coverage report
allowlist_externals =
/usr/bin/env
[testenv:integration]
description = Run integration tests
deps =
aiohttp
deepdiff
#juju
#git+https://github.com/juju/python-libjuju.git
juju
lightkube >= 0.11
lightkube-models >= 1.22.0.4
pytest
pytest-operator
prometheus-api-client
tenacity
commands =
pytest -vv --tb native --log-cli-level=INFO --color=yes -s {posargs} {toxinidir}/tests/integration
allowlist_externals =
/usr/bin/env
[testenv:integration-lma]
description = Run lma bundle integration tests but with prometheus built from source
lma_bundle_dir = {envtmpdir}/lma-light-bundle
deps =
# deps from lma-bundle - these are needed here because will be running pytest on lma-bundle
jinja2
juju
pytest
pytest-operator
allowlist_externals =
git
commands =
git clone --single-branch --depth=1 https://github.com/canonical/lma-light-bundle.git {[testenv:integration-lma]lma_bundle_dir}
# run pytest on the integration tests of the lma bundle, but override alertmanager with path to
# this source dir
pytest -v --tb native --log-cli-level=INFO -s --prometheus={toxinidir} {posargs} {[testenv:integration-lma]lma_bundle_dir}/tests/integration