pytest-expecter 2.3__tar.gz → 3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pytest-expecter-2.3 → pytest_expecter-3.1}/PKG-INFO +14 -12
- {pytest-expecter-2.3 → pytest_expecter-3.1}/README.md +5 -4
- {pytest-expecter-2.3 → pytest_expecter-3.1}/expecter/__init__.py +47 -44
- {pytest-expecter-2.3 → pytest_expecter-3.1}/expecter/plugin.py +1 -1
- {pytest-expecter-2.3 → pytest_expecter-3.1}/pyproject.toml +53 -18
- pytest-expecter-2.3/setup.py +0 -30
- {pytest-expecter-2.3 → pytest_expecter-3.1}/LICENSE.md +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: pytest-expecter
|
|
3
|
-
Version:
|
|
3
|
+
Version: 3.1
|
|
4
4
|
Summary: Better testing with expecter and pytest.
|
|
5
|
-
Home-page: https://pypi.org/project/pytest-expecter
|
|
6
5
|
License: BSD
|
|
6
|
+
License-File: LICENSE.md
|
|
7
7
|
Keywords: pytest,testing
|
|
8
8
|
Author: Jace Browning
|
|
9
9
|
Author-email: jacebrowning@gmail.com
|
|
10
|
-
Requires-Python: >=3.
|
|
10
|
+
Requires-Python: >=3.10,<4.0
|
|
11
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
12
12
|
Classifier: Environment :: Plugins
|
|
13
13
|
Classifier: Framework :: Pytest
|
|
@@ -18,12 +18,13 @@ Classifier: Operating System :: OS Independent
|
|
|
18
18
|
Classifier: Programming Language :: Python
|
|
19
19
|
Classifier: Programming Language :: Python :: 3
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.
|
|
22
|
-
Classifier: Programming Language :: Python :: 3.
|
|
23
|
-
Classifier: Programming Language :: Python :: 3.
|
|
24
|
-
Classifier: Programming Language :: Python :: 3.
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
25
25
|
Classifier: Topic :: Software Development :: Testing
|
|
26
26
|
Project-URL: Documentation, https://pytest-expecter.readthedocs.io
|
|
27
|
+
Project-URL: Homepage, https://pypi.org/project/pytest-expecter
|
|
27
28
|
Project-URL: Repository, https://github.com/jacebrowning/pytest-expecter
|
|
28
29
|
Description-Content-Type: text/markdown
|
|
29
30
|
|
|
@@ -31,12 +32,13 @@ Description-Content-Type: text/markdown
|
|
|
31
32
|
|
|
32
33
|
A `pytest` plugin based on [garybernhardt/expecter](https://github.com/garybernhardt/expecter) to write expressive tests.
|
|
33
34
|
|
|
34
|
-
[](https://github.com/jacebrowning/pytest-expecter/actions/workflows/main.yml)
|
|
35
36
|
[](https://coveralls.io/r/jacebrowning/pytest-expecter)
|
|
36
|
-
[](https://pypi.org/project/pytest-expecter)
|
|
37
37
|
[](https://pypi.org/project/pytest-expecter)
|
|
38
|
+
[](https://pypi.org/project/pytest-expecter)
|
|
39
|
+
[](https://pypistats.org/packages/pytest-expecter)
|
|
38
40
|
|
|
39
|
-
|
|
41
|
+
## Quick Start
|
|
40
42
|
|
|
41
43
|
With this plugin you can write tests (optionally using [pytest-describe](https://github.com/pytest-dev/pytest-describe)) like this:
|
|
42
44
|
|
|
@@ -64,7 +66,7 @@ test_foobar.py:7: AssertionError
|
|
|
64
66
|
================ 1 failed, 1 passed in 2.67 seconds ================
|
|
65
67
|
```
|
|
66
68
|
|
|
67
|
-
|
|
69
|
+
## Installation
|
|
68
70
|
|
|
69
71
|
Install it directly into an activated virtual environment:
|
|
70
72
|
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
A `pytest` plugin based on [garybernhardt/expecter](https://github.com/garybernhardt/expecter) to write expressive tests.
|
|
4
4
|
|
|
5
|
-
[](https://github.com/jacebrowning/pytest-expecter/actions/workflows/main.yml)
|
|
6
6
|
[](https://coveralls.io/r/jacebrowning/pytest-expecter)
|
|
7
|
-
[](https://pypi.org/project/pytest-expecter)
|
|
8
7
|
[](https://pypi.org/project/pytest-expecter)
|
|
8
|
+
[](https://pypi.org/project/pytest-expecter)
|
|
9
|
+
[](https://pypistats.org/packages/pytest-expecter)
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
## Quick Start
|
|
11
12
|
|
|
12
13
|
With this plugin you can write tests (optionally using [pytest-describe](https://github.com/pytest-dev/pytest-describe)) like this:
|
|
13
14
|
|
|
@@ -35,7 +36,7 @@ test_foobar.py:7: AssertionError
|
|
|
35
36
|
================ 1 failed, 1 passed in 2.67 seconds ================
|
|
36
37
|
```
|
|
37
38
|
|
|
38
|
-
|
|
39
|
+
## Installation
|
|
39
40
|
|
|
40
41
|
Install it directly into an activated virtual environment:
|
|
41
42
|
|
|
@@ -10,25 +10,22 @@ import os
|
|
|
10
10
|
import pprint
|
|
11
11
|
import sys
|
|
12
12
|
from collections import OrderedDict
|
|
13
|
-
|
|
14
|
-
import pytest
|
|
15
|
-
from pkg_resources import DistributionNotFound, get_distribution
|
|
16
|
-
|
|
13
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
17
14
|
|
|
18
15
|
try:
|
|
19
|
-
__version__ =
|
|
20
|
-
except
|
|
21
|
-
__version__ =
|
|
16
|
+
__version__ = version("pytest-expecter")
|
|
17
|
+
except PackageNotFoundError:
|
|
18
|
+
__version__ = "(local)"
|
|
22
19
|
|
|
23
20
|
|
|
24
|
-
__all__ = [
|
|
21
|
+
__all__ = ["expect"]
|
|
25
22
|
|
|
26
23
|
|
|
27
24
|
class Anything:
|
|
28
25
|
"""Placeholder value to ignore uninteresting response data."""
|
|
29
26
|
|
|
30
27
|
def __repr__(self):
|
|
31
|
-
return
|
|
28
|
+
return "<anything>"
|
|
32
29
|
|
|
33
30
|
def __eq__(self, other):
|
|
34
31
|
return True
|
|
@@ -73,7 +70,7 @@ class expect:
|
|
|
73
70
|
|
|
74
71
|
def __eq__(self, other):
|
|
75
72
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
76
|
-
msg =
|
|
73
|
+
msg = "Expected %s but got %s" % (repr(other), repr(self._actual))
|
|
77
74
|
if isinstance(other, str) and isinstance(self._actual, str):
|
|
78
75
|
msg += normalized_diff(other, self._actual)
|
|
79
76
|
elif len(repr(self._actual)) > self.MIN_DIFF_SIZE:
|
|
@@ -83,14 +80,14 @@ class expect:
|
|
|
83
80
|
|
|
84
81
|
def __ne__(self, other):
|
|
85
82
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
86
|
-
assert self._actual != other,
|
|
83
|
+
assert self._actual != other, "Expected anything except %s but got it" % repr(
|
|
87
84
|
self._actual
|
|
88
85
|
)
|
|
89
86
|
return self
|
|
90
87
|
|
|
91
88
|
def __lt__(self, other):
|
|
92
89
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
93
|
-
assert self._actual < other,
|
|
90
|
+
assert self._actual < other, "Expected something less than %s but got %s" % (
|
|
94
91
|
repr(other),
|
|
95
92
|
repr(self._actual),
|
|
96
93
|
)
|
|
@@ -98,7 +95,7 @@ class expect:
|
|
|
98
95
|
|
|
99
96
|
def __gt__(self, other):
|
|
100
97
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
101
|
-
assert self._actual > other,
|
|
98
|
+
assert self._actual > other, "Expected something greater than %s but got %s" % (
|
|
102
99
|
repr(other),
|
|
103
100
|
repr(self._actual),
|
|
104
101
|
)
|
|
@@ -106,27 +103,31 @@ class expect:
|
|
|
106
103
|
|
|
107
104
|
def __le__(self, other):
|
|
108
105
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
109
|
-
assert
|
|
110
|
-
|
|
111
|
-
|
|
106
|
+
assert (
|
|
107
|
+
self._actual <= other
|
|
108
|
+
), "Expected something less than or equal to %s but got %s" % (
|
|
109
|
+
repr(other),
|
|
110
|
+
repr(self._actual),
|
|
112
111
|
)
|
|
113
112
|
return self
|
|
114
113
|
|
|
115
114
|
def __ge__(self, other):
|
|
116
115
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
117
|
-
assert
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
assert (
|
|
117
|
+
self._actual >= other
|
|
118
|
+
), "Expected something greater than or equal to %s but got %s" % (
|
|
119
|
+
repr(other),
|
|
120
|
+
repr(self._actual),
|
|
120
121
|
)
|
|
121
122
|
return self
|
|
122
123
|
|
|
123
124
|
def __repr__(self):
|
|
124
|
-
return
|
|
125
|
+
return "expect(%s)" % repr(self._actual)
|
|
125
126
|
|
|
126
127
|
def is_(self, other):
|
|
127
128
|
"""Ensure that ``other`` is identical to the actual value."""
|
|
128
129
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
129
|
-
label =
|
|
130
|
+
label = "condition" if isinstance(self._actual, bool) else "value"
|
|
130
131
|
assert self._actual is other, "Expected %s to be %s, but it was %s" % (
|
|
131
132
|
label,
|
|
132
133
|
repr(other),
|
|
@@ -137,7 +138,7 @@ class expect:
|
|
|
137
138
|
def is_not(self, other):
|
|
138
139
|
"""Ensure that ``other`` is not identical to the actual value."""
|
|
139
140
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
140
|
-
label =
|
|
141
|
+
label = "condition" if isinstance(self._actual, bool) else "value"
|
|
141
142
|
assert self._actual is not other, "Expected %s to not be %s, but it was" % (
|
|
142
143
|
label,
|
|
143
144
|
repr(other),
|
|
@@ -152,12 +153,14 @@ class expect:
|
|
|
152
153
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
153
154
|
if isinstance(expected_cls, tuple):
|
|
154
155
|
cls_name = [c.__name__ for c in expected_cls]
|
|
155
|
-
cls_name =
|
|
156
|
+
cls_name = " or ".join(cls_name) # type: ignore
|
|
156
157
|
else:
|
|
157
158
|
cls_name = expected_cls.__name__
|
|
158
|
-
assert isinstance(
|
|
159
|
-
|
|
160
|
-
|
|
159
|
+
assert isinstance(
|
|
160
|
+
self._actual, expected_cls
|
|
161
|
+
), "Expected an instance of %s but got an instance of %s" % (
|
|
162
|
+
cls_name,
|
|
163
|
+
self._actual.__class__.__name__,
|
|
161
164
|
)
|
|
162
165
|
|
|
163
166
|
def contains(self, other):
|
|
@@ -167,7 +170,7 @@ class expect:
|
|
|
167
170
|
"""
|
|
168
171
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
169
172
|
|
|
170
|
-
if isinstance(self._actual, str) and
|
|
173
|
+
if isinstance(self._actual, str) and "\n" in self._actual:
|
|
171
174
|
msg = "Given text:\n\n%s\n\nExpected to contain %s but didn't" % (
|
|
172
175
|
self._actual.strip(),
|
|
173
176
|
repr(other),
|
|
@@ -184,7 +187,7 @@ class expect:
|
|
|
184
187
|
"""Same as ``contains` but ignoring case."""
|
|
185
188
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
186
189
|
|
|
187
|
-
if isinstance(self._actual, str) and
|
|
190
|
+
if isinstance(self._actual, str) and "\n" in self._actual:
|
|
188
191
|
msg = (
|
|
189
192
|
"Given text:\n\n%s\n\nExpected to contain %s (ignoring case) but didn't"
|
|
190
193
|
% (self._actual.strip(), repr(other))
|
|
@@ -204,7 +207,7 @@ class expect:
|
|
|
204
207
|
"""Same as ``contains`` but with alternate phrasing."""
|
|
205
208
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
206
209
|
|
|
207
|
-
if isinstance(self._actual, str) and
|
|
210
|
+
if isinstance(self._actual, str) and "\n" in self._actual:
|
|
208
211
|
msg = "Given text:\n\n%s\n\nExpected to include %s but didn't" % (
|
|
209
212
|
self._actual.strip(),
|
|
210
213
|
repr(other),
|
|
@@ -221,7 +224,7 @@ class expect:
|
|
|
221
224
|
"""Opposite of ``contains``."""
|
|
222
225
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
223
226
|
|
|
224
|
-
if isinstance(self._actual, str) and
|
|
227
|
+
if isinstance(self._actual, str) and "\n" in self._actual:
|
|
225
228
|
msg = "Given text:\n\n%s\n\nExpected not to contain %s but did" % (
|
|
226
229
|
self._actual.strip(),
|
|
227
230
|
repr(other),
|
|
@@ -238,7 +241,7 @@ class expect:
|
|
|
238
241
|
"""Opposite of ``contains`` with alternate phrasing."""
|
|
239
242
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
240
243
|
|
|
241
|
-
if isinstance(self._actual, str) and
|
|
244
|
+
if isinstance(self._actual, str) and "\n" in self._actual:
|
|
242
245
|
msg = "Given text:\n\n%s\n\nExpected to exclude %s but didn't" % (
|
|
243
246
|
self._actual.strip(),
|
|
244
247
|
repr(other),
|
|
@@ -255,7 +258,7 @@ class expect:
|
|
|
255
258
|
"""Same as ``excludes`` but ignoring case."""
|
|
256
259
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
257
260
|
|
|
258
|
-
if isinstance(self._actual, str) and
|
|
261
|
+
if isinstance(self._actual, str) and "\n" in self._actual:
|
|
259
262
|
msg = (
|
|
260
263
|
"Given text:\n\n%s\n\nExpected to exclude %s (ignoring case) but didn't"
|
|
261
264
|
% (self._actual.strip(), repr(other))
|
|
@@ -275,7 +278,7 @@ class expect:
|
|
|
275
278
|
"""Ensure that ``other`` starts the actual value."""
|
|
276
279
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
277
280
|
|
|
278
|
-
if isinstance(self._actual, str) and
|
|
281
|
+
if isinstance(self._actual, str) and "\n" in self._actual:
|
|
279
282
|
msg = "Given text:\n\n%s\n\nExpected to start with %s but didn't" % (
|
|
280
283
|
self._actual.strip(),
|
|
281
284
|
repr(other),
|
|
@@ -292,7 +295,7 @@ class expect:
|
|
|
292
295
|
"""Same as ``startswith`` but ignoring case."""
|
|
293
296
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
294
297
|
|
|
295
|
-
if isinstance(self._actual, str) and
|
|
298
|
+
if isinstance(self._actual, str) and "\n" in self._actual:
|
|
296
299
|
msg = (
|
|
297
300
|
"Given text:\n\n%s\n\nExpected to start with %s (ignoring case) but didn't"
|
|
298
301
|
% (self._actual.strip(), repr(other))
|
|
@@ -309,7 +312,7 @@ class expect:
|
|
|
309
312
|
"""Ensure that ``other`` ends the actual value."""
|
|
310
313
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
311
314
|
|
|
312
|
-
if isinstance(self._actual, str) and
|
|
315
|
+
if isinstance(self._actual, str) and "\n" in self._actual:
|
|
313
316
|
msg = "Given text:\n\n%s\n\nExpected to end with %s but didn't" % (
|
|
314
317
|
self._actual.strip(),
|
|
315
318
|
repr(other),
|
|
@@ -326,7 +329,7 @@ class expect:
|
|
|
326
329
|
"""Same as ``endswith`` but ignoring case."""
|
|
327
330
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
328
331
|
|
|
329
|
-
if isinstance(self._actual, str) and
|
|
332
|
+
if isinstance(self._actual, str) and "\n" in self._actual:
|
|
330
333
|
msg = (
|
|
331
334
|
"Given text:\n\n%s\n\nExpected to end with %s (ignoring case) but didn't"
|
|
332
335
|
% (self._actual.strip(), repr(other))
|
|
@@ -380,7 +383,7 @@ class _RaisesExpectation:
|
|
|
380
383
|
success = not exc_type
|
|
381
384
|
if success:
|
|
382
385
|
raise AssertionError(
|
|
383
|
-
|
|
386
|
+
"Expected an exception of type %s but got none"
|
|
384
387
|
% self._exception_class.__name__
|
|
385
388
|
)
|
|
386
389
|
return self.validate_failure(exc_type, exc_value)
|
|
@@ -427,22 +430,22 @@ class _CustomExpectation:
|
|
|
427
430
|
def enforce(self, *args, **kwargs):
|
|
428
431
|
__tracebackhide__ = _hidetraceback() # pylint: disable=unused-variable
|
|
429
432
|
if not self._predicate(self._actual, *args, **kwargs):
|
|
430
|
-
predicate_name = self._predicate.__name__.replace(
|
|
433
|
+
predicate_name = self._predicate.__name__.replace("_", " ")
|
|
431
434
|
raise AssertionError(
|
|
432
|
-
|
|
435
|
+
"Expected that %s %s, but %s"
|
|
433
436
|
% (repr(self._actual), predicate_name, self._negative_verb())
|
|
434
437
|
)
|
|
435
438
|
|
|
436
439
|
def _negative_verb(self):
|
|
437
440
|
# XXX: getting name in multiple places
|
|
438
|
-
first_word_in_predicate = self._predicate.__name__.split(
|
|
441
|
+
first_word_in_predicate = self._predicate.__name__.split("_")[0]
|
|
439
442
|
try:
|
|
440
443
|
return self.negative_verbs[first_word_in_predicate]
|
|
441
444
|
except KeyError:
|
|
442
445
|
return "got False"
|
|
443
446
|
|
|
444
447
|
|
|
445
|
-
_custom_expectations = {}
|
|
448
|
+
_custom_expectations: dict[str, object] = {}
|
|
446
449
|
|
|
447
450
|
|
|
448
451
|
def add_expectation(predicate):
|
|
@@ -479,10 +482,10 @@ def normalize(value):
|
|
|
479
482
|
|
|
480
483
|
|
|
481
484
|
def normalized_diff(other, actual):
|
|
482
|
-
diff = difflib.unified_diff(other.splitlines(), actual.splitlines(), lineterm=
|
|
485
|
+
diff = difflib.unified_diff(other.splitlines(), actual.splitlines(), lineterm="")
|
|
483
486
|
diff = list(diff) # type: ignore
|
|
484
|
-
return
|
|
487
|
+
return "\n".join(["\nDiff:"] + diff[2:]) # type: ignore
|
|
485
488
|
|
|
486
489
|
|
|
487
490
|
def _hidetraceback():
|
|
488
|
-
return os.getenv(
|
|
491
|
+
return os.getenv("EXPECTER_HIDETRACEBACK")
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
|
|
3
3
|
name = "pytest-expecter"
|
|
4
|
-
version = "
|
|
4
|
+
version = "3.1"
|
|
5
5
|
description = "Better testing with expecter and pytest."
|
|
6
6
|
|
|
7
7
|
license = "BSD"
|
|
@@ -23,9 +23,11 @@ classifiers = [
|
|
|
23
23
|
"License :: OSI Approved :: BSD License",
|
|
24
24
|
"Operating System :: OS Independent",
|
|
25
25
|
"Programming Language :: Python",
|
|
26
|
-
"Programming Language :: Python :: 3.
|
|
27
|
-
"Programming Language :: Python :: 3.
|
|
28
|
-
"Programming Language :: Python :: 3.
|
|
26
|
+
"Programming Language :: Python :: 3.10",
|
|
27
|
+
"Programming Language :: Python :: 3.11",
|
|
28
|
+
"Programming Language :: Python :: 3.12",
|
|
29
|
+
"Programming Language :: Python :: 3.13",
|
|
30
|
+
"Programming Language :: Python :: 3.14",
|
|
29
31
|
"Topic :: Software Development :: Testing",
|
|
30
32
|
]
|
|
31
33
|
|
|
@@ -35,50 +37,83 @@ packages = [
|
|
|
35
37
|
|
|
36
38
|
[tool.poetry.dependencies]
|
|
37
39
|
|
|
38
|
-
python = "^3.
|
|
40
|
+
python = "^3.10"
|
|
39
41
|
|
|
40
|
-
[tool.poetry.dev
|
|
42
|
+
[tool.poetry.group.dev.dependencies]
|
|
41
43
|
|
|
42
44
|
# Formatters
|
|
43
|
-
black = "
|
|
44
|
-
isort = "
|
|
45
|
+
black = ">=22.1,<27.0"
|
|
46
|
+
isort = "^5.10"
|
|
45
47
|
|
|
46
48
|
# Linters
|
|
47
49
|
mypy = "*"
|
|
48
50
|
pydocstyle = "*"
|
|
49
|
-
pylint = "
|
|
51
|
+
pylint = ">=2.15,<4.1"
|
|
50
52
|
types-setuptools = "*"
|
|
51
53
|
|
|
52
54
|
# Testing
|
|
53
|
-
pytest = "
|
|
55
|
+
pytest = ">=8.3.5,<10.0.0"
|
|
54
56
|
pytest-cov = "*"
|
|
55
|
-
pytest-describe = "
|
|
57
|
+
pytest-describe = ">=2.2,<4.0"
|
|
56
58
|
pytest-random = "*"
|
|
57
59
|
freezegun = "*"
|
|
58
60
|
|
|
59
61
|
# Reports
|
|
60
|
-
coveragespace = "
|
|
62
|
+
coveragespace = "*"
|
|
61
63
|
|
|
62
64
|
# Documentation
|
|
63
|
-
mkdocs = "^1.
|
|
65
|
+
mkdocs = "^1.6.1"
|
|
64
66
|
pygments = "*"
|
|
67
|
+
jinja2 = ">=3.0.3,<3.2.0"
|
|
65
68
|
|
|
66
69
|
# Tooling
|
|
67
70
|
pyinstaller = "*"
|
|
68
71
|
sniffer = "*"
|
|
69
|
-
MacFSEvents = { version = "*", platform = "darwin" }
|
|
72
|
+
MacFSEvents = { version = "*", platform = "darwin", python = "<3.13" }
|
|
70
73
|
pync = { version = "*", platform = "darwin" }
|
|
71
74
|
|
|
75
|
+
[tool.poetry.requires-plugins]
|
|
76
|
+
|
|
77
|
+
poetry-plugin-export = ">=1.8"
|
|
78
|
+
|
|
72
79
|
[tool.poetry.plugins.pytest11]
|
|
73
80
|
|
|
74
81
|
"pytest-expecter" = "expecter.plugin"
|
|
75
82
|
|
|
76
83
|
[tool.black]
|
|
77
84
|
|
|
78
|
-
|
|
79
|
-
|
|
85
|
+
quiet = true
|
|
86
|
+
|
|
87
|
+
[tool.isort]
|
|
88
|
+
|
|
89
|
+
profile = "black"
|
|
90
|
+
|
|
91
|
+
[tool.mypy]
|
|
92
|
+
|
|
93
|
+
ignore_missing_imports = true
|
|
94
|
+
no_implicit_optional = true
|
|
95
|
+
check_untyped_defs = true
|
|
96
|
+
|
|
97
|
+
cache_dir = ".cache/mypy/"
|
|
98
|
+
|
|
99
|
+
[tool.pytest.ini_options]
|
|
100
|
+
|
|
101
|
+
addopts = """
|
|
102
|
+
--strict-markers
|
|
103
|
+
|
|
104
|
+
-r sxX
|
|
105
|
+
--show-capture=log
|
|
106
|
+
|
|
107
|
+
--cov-report=html
|
|
108
|
+
--cov-report=term-missing:skip-covered
|
|
109
|
+
--no-cov-on-fail
|
|
110
|
+
"""
|
|
111
|
+
|
|
112
|
+
cache_dir = ".cache/pytest/"
|
|
113
|
+
|
|
114
|
+
markers = []
|
|
80
115
|
|
|
81
116
|
[build-system]
|
|
82
117
|
|
|
83
|
-
requires = ["poetry>=0
|
|
84
|
-
build-backend = "poetry.masonry.api"
|
|
118
|
+
requires = ["poetry-core>=2.4.0"]
|
|
119
|
+
build-backend = "poetry.core.masonry.api"
|
pytest-expecter-2.3/setup.py
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
from setuptools import setup
|
|
3
|
-
|
|
4
|
-
packages = \
|
|
5
|
-
['expecter']
|
|
6
|
-
|
|
7
|
-
package_data = \
|
|
8
|
-
{'': ['*']}
|
|
9
|
-
|
|
10
|
-
entry_points = \
|
|
11
|
-
{'pytest11': ['pytest-expecter = expecter.plugin']}
|
|
12
|
-
|
|
13
|
-
setup_kwargs = {
|
|
14
|
-
'name': 'pytest-expecter',
|
|
15
|
-
'version': '2.3',
|
|
16
|
-
'description': 'Better testing with expecter and pytest.',
|
|
17
|
-
'long_description': '# Overview\n\nA `pytest` plugin based on [garybernhardt/expecter](https://github.com/garybernhardt/expecter) to write expressive tests.\n\n[](https://travis-ci.org/jacebrowning/pytest-expecter)\n[](https://coveralls.io/r/jacebrowning/pytest-expecter)\n[](https://pypi.org/project/pytest-expecter)\n[](https://pypi.org/project/pytest-expecter)\n\n# Quick Start\n\nWith this plugin you can write tests (optionally using [pytest-describe](https://github.com/pytest-dev/pytest-describe)) like this:\n\n```python\ndef describe_foobar():\n\n def it_can_pass(expect):\n expect(2 + 3) == 5\n\n def it_can_fail(expect):\n expect(2 + 3) == 6\n```\n\nand get output like this:\n\n```python\n============================= FAILURES =============================\n___________________ describe_foobar.it_can_fail ____________________\n\n def it_can_fail(expect):\n> expect(2 + 3) == 6\nE AssertionError: Expected 6 but got 5\n\ntest_foobar.py:7: AssertionError\n================ 1 failed, 1 passed in 2.67 seconds ================\n```\n\n# Installation\n\nInstall it directly into an activated virtual environment:\n\n```\n$ pip install pytest-expecter\n```\n\nor add it to your [Poetry](https://python-poetry.org/docs/) project:\n\n```\n$ poetry add pytest-expecter\n```\n',
|
|
18
|
-
'author': 'Jace Browning',
|
|
19
|
-
'author_email': 'jacebrowning@gmail.com',
|
|
20
|
-
'maintainer': None,
|
|
21
|
-
'maintainer_email': None,
|
|
22
|
-
'url': 'https://pypi.org/project/pytest-expecter',
|
|
23
|
-
'packages': packages,
|
|
24
|
-
'package_data': package_data,
|
|
25
|
-
'entry_points': entry_points,
|
|
26
|
-
'python_requires': '>=3.6,<4.0',
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
setup(**setup_kwargs)
|
|
File without changes
|