forked from canonical/mongodb-k8s-operator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtox.ini
144 lines (128 loc) · 4.3 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
133
134
135
136
137
138
139
140
141
142
143
144
# Copyright 2023 Canonical Ltd.
# See LICENSE file for licensing details.
[tox]
no_package = True
skip_missing_interpreters = True
env_list = format, lint, unit
[vars]
src_path = {tox_root}/src
tests_path = {tox_root}/tests
lib_path = {tox_root}/lib/charms/mongodb
all_path = {[vars]src_path} {[vars]tests_path} {[vars]lib_path}
[testenv]
allowlist_externals = poetry
set_env =
PYTHONPATH = {tox_root}/lib:{[vars]src_path}
PYTHONBREAKPOINT=ipdb.set_trace
PYTHONDONTWRITEBYTECODE=1
PY_COLORS=1
pass_env =
PYTHONPATH
CHARM_BUILD_DIR
MODEL_SETTINGS
deps =
poetry
[testenv:format]
description = Apply coding style standards to code
commands_pre =
poetry install --only fmt
commands =
poetry run isort {[vars]all_path}
poetry run black {[vars]all_path}
[testenv:lint]
description = Check code against coding style standards
commands_pre =
poetry install --only fmt,lint
commands =
poetry run codespell {[vars]lib_path}
poetry run codespell {tox_root} --skip {tox_root}/.git --skip {tox_root}/.tox \
--skip {tox_root}/build --skip {tox_root}/lib --skip {tox_root}/venv \
--skip {tox_root}/.mypy_cache --skip {tox_root}/icon.svg \
--skip {tox_root}/poetry.lock --skip {tox_root}/.idea
# pflake8 wrapper supports config from pyproject.toml
poetry run pflake8 {[vars]all_path}
poetry run isort --check-only --diff {[vars]all_path}
poetry run black --check --diff {[vars]all_path}
[testenv:unit]
description = Run unit tests
commands_pre =
poetry install --with unit
commands =
poetry export -f requirements.txt -o requirements.txt
poetry run coverage run --source={[vars]src_path} \
-m pytest -v --tb native -s {posargs} {[vars]tests_path}/unit
poetry run coverage report
[testenv:integration]
description = Run integration tests
pass_env =
{[testenv]pass_env}
CI
CI_PACKED_CHARMS
commands_pre =
poetry install --with integration
poetry run pip install juju==2.9.42.1
commands =
poetry run pytest -v --tb native --log-cli-level=INFO -s {posargs} {[vars]tests_path}/integration/test_charm.py
[testenv:ha-integration]
description = Run HA integration tests
pass_env =
{[testenv]pass_env}
CI
CI_PACKED_CHARMS
commands_pre =
poetry install --with integration
poetry run pip install juju==2.9.42.1
commands =
poetry run pytest -v --tb native --log-cli-level=INFO -s --durations=0 {posargs} {[vars]tests_path}/integration/ha_tests/test_ha.py
[testenv:metrics-integration]
description = Run metric integration tests
pass_env =
{[testenv]pass_env}
CI
CI_PACKED_CHARMS
commands_pre =
poetry install --with integration
poetry run pip install juju==2.9.42.1
commands =
poetry run pytest -v --tb native --log-cli-level=INFO -s --durations=0 {posargs} {[vars]tests_path}/integration/metrics_tests/test_metrics.py
[testenv:tls-integration]
description = Run tls integration tests
pass_env =
{[testenv]pass_env}
CI
CI_PACKED_CHARMS
commands_pre =
poetry install --with integration
poetry run pip install juju==2.9.42.1
commands =
poetry run pytest -v --tb native --log-cli-level=INFO -s --durations=0 {posargs} {[vars]tests_path}/integration/tls_tests/test_tls.py
[testenv:relation-integration]
description = Run relation integration tests
pass_env =
{[testenv]pass_env}
CI
CI_PACKED_CHARMS
commands_pre =
poetry install --with integration
poetry run pip install juju==2.9.42.1
commands =
poetry run pytest -v --tb native --log-cli-level=INFO -s --durations=0 {posargs} {[vars]tests_path}/integration/relation_tests/test_charm_relations.py
[testenv:teardown-integration]
description = Run tls integration tests
pass_env =
{[testenv]pass_env}
CI
CI_PACKED_CHARMS
commands_pre =
poetry install --with integration
poetry run pip install juju==2.9.42.1
commands =
poetry run pytest -v --tb native --log-cli-level=INFO -s --durations=0 {posargs} {[vars]tests_path}/integration/test_teardown.py
[testenv:cleanup_chaos_mesh]
description = Cleanup chaos mesh
commands =
python {[vars]tests_path}/integration/cleanup_resources.py --cleanup "cleanup_chaos_mesh" --namespace "{posargs}"
[testenv:cleanup_juju_models]
description = Cleanup Juju models
commands =
python {[vars]tests_path}/integration/cleanup_resources.py --cleanup "juju_models"