Marco Ricci commited on 2024-12-12 12:03:30
Zeige 2 geänderte Dateien mit 17 Einfügungen und 4 Löschungen.
The `hypothesis.settings` decorators are intended to modify the currently active `hypothesis` settings profile for singular tests. However, the profiles are defined and selected only *after* the `tests` module has been loaded, so any settings defined in the `tests` module actually modify the `hypothesis` default settings, not the selected profile's settings. Fix this by defining decorators that construct and apply the correct settings, which defines the settings objects deferredly, instead of defining them immediately.
| ... | ... |
@@ -1329,7 +1329,11 @@ skip_if_no_cryptography_support = pytest.mark.skipif( |
| 1329 | 1329 |
reason='no "cryptography" support', |
| 1330 | 1330 |
) |
| 1331 | 1331 |
|
| 1332 |
-hypothesis_settings_coverage_compatible = ( |
|
| 1332 |
+ |
|
| 1333 |
+def hypothesis_settings_coverage_compatible( |
|
| 1334 |
+ f: Any = None, |
|
| 1335 |
+) -> Any: |
|
| 1336 |
+ settings = ( |
|
| 1333 | 1337 |
hypothesis.settings( |
| 1334 | 1338 |
# Running under coverage with the Python tracer increases |
| 1335 | 1339 |
# running times 40-fold, on my machines. Sadly, not every |
| ... | ... |
@@ -1340,19 +1344,27 @@ hypothesis_settings_coverage_compatible = ( |
| 1340 | 1344 |
if (deadline := hypothesis.settings().deadline) is not None |
| 1341 | 1345 |
else None |
| 1342 | 1346 |
), |
| 1347 |
+ stateful_step_count=32, |
|
| 1343 | 1348 |
suppress_health_check=(hypothesis.HealthCheck.too_slow,), |
| 1344 | 1349 |
) |
| 1345 | 1350 |
if sys.gettrace() is not None |
| 1346 | 1351 |
else hypothesis.settings() |
| 1347 | 1352 |
) |
| 1353 |
+ return settings if f is None else settings(f) |
|
| 1348 | 1354 |
|
| 1349 |
-hypothesis_settings_coverage_compatible_with_caplog = hypothesis.settings( |
|
| 1350 |
- parent=hypothesis_settings_coverage_compatible, |
|
| 1355 |
+ |
|
| 1356 |
+def hypothesis_settings_coverage_compatible_with_caplog( |
|
| 1357 |
+ f: Any = None, |
|
| 1358 |
+) -> Any: |
|
| 1359 |
+ parent_settings = hypothesis_settings_coverage_compatible() |
|
| 1360 |
+ settings = hypothesis.settings( |
|
| 1361 |
+ parent=parent_settings, |
|
| 1351 | 1362 |
suppress_health_check={
|
| 1352 | 1363 |
hypothesis.HealthCheck.function_scoped_fixture, |
| 1353 | 1364 |
} |
| 1354 |
- | set(hypothesis_settings_coverage_compatible.suppress_health_check), |
|
| 1365 |
+ | set(parent_settings.suppress_health_check), |
|
| 1355 | 1366 |
) |
| 1367 |
+ return settings if f is None else settings(f) |
|
| 1356 | 1368 |
|
| 1357 | 1369 |
|
| 1358 | 1370 |
def list_keys(self: Any = None) -> list[_types.KeyCommentPair]: |
| ... | ... |
@@ -2399,6 +2399,7 @@ _vault_full_config = strategies.builds( |
| 2399 | 2399 |
) |
| 2400 | 2400 |
|
| 2401 | 2401 |
|
| 2402 |
+@tests.hypothesis_settings_coverage_compatible |
|
| 2402 | 2403 |
class ConfigManagementStateMachine(stateful.RuleBasedStateMachine): |
| 2403 | 2404 |
def __init__(self) -> None: |
| 2404 | 2405 |
super().__init__() |
| 2405 | 2406 |