You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+23-5Lines changed: 23 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -74,19 +74,37 @@ That's it. You should be ready to make changes, run tests, and make commits! If
74
74
75
75
## Running Tests
76
76
77
-
You can run all tests with the following command:
77
+
We test against a number of Python language and library versions, which are automatically generated and stored in the [tox.ini](tox.ini) file. The `envlist` defines the environments you can choose from when running tests, and correspond to package versions and environment variables. The `TESTPATH` environment variable, in turn, determines which tests are run.
78
+
79
+
The tox CLI tool is required to run the tests locally. Follow [the installation instructions](https://tox.wiki/en/latest/installation.html) for tox. Dependencies are installed for you when you run the command below, but _you_ need to bring an appropriate Python interpreter.
80
+
81
+
[Pyenv](https://github.com/pyenv/pyenv) is a cross-platform utility for managing Python versions. You can also use a conventional package manager, but not all versions may be distributed in the package manager of your choice. For macOS, Versions 3.8 and up can be installed with Homebrew.
82
+
83
+
An environment consists of the Python major and minor version and the library name and version. The exception to the rule is that you can provide `common` instead of the library information. The environments tied to a specific library usually run the corresponding test suite, while `common` targets all tests but skips those that require uninstalled dependencies.
84
+
85
+
To run Celery tests for version v5.5.3 of its Python library using a 3.12 interpreter, use
78
86
79
87
```bash
80
-
pytest tests/
88
+
tox -p auto -o -e py3.12-celery-v5.5.3
81
89
```
82
90
83
-
If you would like to run the tests for a specific integration, use a command similar to the one below:
91
+
or to use the `common` environment, run
84
92
85
93
```bash
86
-
pytest -rs tests/integrations/flask/ # Replace "flask" with the specific integration you wish to test
94
+
tox -p auto -o -e py3.12-common
87
95
```
88
96
89
-
**Hint:** Tests of integrations need additional dependencies. The switch `-rs` will show you why tests were skipped and what dependencies you need to install for the tests to run. (You can also consult the [tox.ini](tox.ini) file to see what dependencies are installed for each integration)
97
+
To select specific tests, you can forward arguments to `pytest` like so
98
+
99
+
```bash
100
+
tox -p auto -o -e py3.12-celery-v5.5.3 -- -k test_transaction_events
@@ -102,15 +103,14 @@ Python versions, you can say:
102
103
...
103
104
}
104
105
```
106
+
105
107
This key is optional.
106
108
107
109
### `python`
108
110
109
111
Sometimes, the whole test suite should only run on specific Python versions.
110
-
This can be achieved via the `python` key.
111
-
112
-
There are two variants how to define the Python versions to run the test suite
113
-
on.
112
+
This can be achieved via the `python` key. There are two variants how to define
113
+
the Python versions to run the test suite on.
114
114
115
115
If you want the test suite to only be run on specific Python versions, you can
116
116
set `python` to a version specifier. For example, if you want AIOHTTP tests to
@@ -142,18 +142,17 @@ say:
142
142
The `python` key is optional, and when possible, it should be omitted. The script
143
143
should automatically detect which Python versions the package supports. However,
144
144
if a package has broken metadata or the SDK is explicitly not supporting some
145
-
packages on specific Python versions (because of, for example, broken context
146
-
vars), the `python` key can be used.
145
+
packages on specific Python versions, the `python` key can be used.
147
146
148
147
### `include`
149
148
150
-
Sometimes we only want to consider testing some specific versions of packages.
151
-
For example, the Starlite package has two alpha prereleases of version 2.0.0, but
152
-
we do not want to test these, since Starlite 2.0 was renamed to Litestar.
149
+
Sometimes we only want to test specific versions of packages. For example, the
150
+
Starlite package has two alpha prereleases of version 2.0.0, but we do not want
151
+
to test these, since Starlite 2.0 was renamed to Litestar.
153
152
154
153
The value of the `include` key expects a version specifier defining which
155
154
versions should be considered for testing. For example, since we only want to test
156
-
versions below 2.x in Starlite, we can use
155
+
versions below 2.x in Starlite, we can use:
157
156
158
157
```python
159
158
"starlite": {
@@ -178,13 +177,21 @@ be expressed like so:
178
177
179
178
Sometimes, the name of the test suite doesn't match the name of the integration.
180
179
For example, we have the `openai_base` and `openai_notiktoken` test suites, both
181
-
of which are actually testing the `openai` integration. If this is the case, you can use the `integration_name` key to define the name of the integration. If not provided, it will default to the name of the test suite.
180
+
of which are actually testing the `openai` integration. If this is the case, you
181
+
can use the `integration_name` key to define the name of the integration. If not
182
+
provided, it will default to the name of the test suite.
182
183
183
-
Linking an integration to a test suite allows the script to access integration configuration like for example the minimum version defined in `sentry_sdk/integrations/__init__.py`.
184
+
Linking an integration to a test suite allows the script to access integration
185
+
configuration like, for example, the minimum supported version defined in
186
+
`sentry_sdk/integrations/__init__.py`.
184
187
185
188
### `num_versions`
186
189
187
-
With this option you can tweak the default version picking behavior by specifying how many package versions should be tested. It accepts an integer equal to or greater than 2, as the oldest and latest supported versions will always be picked. Additionally, if there is a recent prerelease, it'll also always be picked (this doesn't count towards `num_versions`).
190
+
With this option you can tweak the default version picking behavior by specifying
191
+
how many package versions should be tested. It accepts an integer equal to or
192
+
greater than 2, as the oldest and latest supported versions will always be
193
+
picked. Additionally, if there is a recent prerelease, it'll also always be
194
+
picked (this doesn't count towards `num_versions`).
188
195
189
196
190
197
## How-Tos
@@ -202,26 +209,3 @@ With this option you can tweak the default version picking behavior by specifyin
0 commit comments