|
25 | 25 | assert_isadjoint |
26 | 26 | """ # NOQA D205 |
27 | 27 |
|
| 28 | +import os |
| 29 | +import warnings |
| 30 | + |
28 | 31 | import numpy as np |
29 | 32 | import scipy.sparse as sp |
30 | 33 |
|
|
81 | 84 | _happiness_rng = np.random.default_rng() |
82 | 85 |
|
83 | 86 |
|
| 87 | +def _warn_random_test(): |
| 88 | + in_pytest = "PYTEST_CURRENT_TEST" in os.environ |
| 89 | + in_nosetest = any( |
| 90 | + x[0].f_globals["__name__"].startswith("nose.") for x in inspect.stack() |
| 91 | + ) |
| 92 | + |
| 93 | + if in_pytest or in_nosetest: |
| 94 | + test = "pytest" if in_pytest else "nosetest" |
| 95 | + warnings.warn( |
| 96 | + f"You are running a {test} without setting a random seed, the results might not be" |
| 97 | + "repeatable. For repeatable tests please pass an argument to `random seed` that is" |
| 98 | + "not `None`.", |
| 99 | + UserWarning, |
| 100 | + stacklevel=3, |
| 101 | + ) |
| 102 | + return in_pytest or in_nosetest |
| 103 | + |
| 104 | + |
84 | 105 | def setup_mesh(mesh_type, nC, nDim, random_seed=None): |
85 | 106 | """Generate arbitrary mesh for testing. |
86 | 107 |
|
@@ -110,6 +131,8 @@ def setup_mesh(mesh_type, nC, nDim, random_seed=None): |
110 | 131 | A discretize mesh of class specified by the input argument *mesh_type* |
111 | 132 | """ |
112 | 133 | if "random" in mesh_type: |
| 134 | + if random_seed is None: |
| 135 | + _warn_random_test() |
113 | 136 | rng = np.random.default_rng(random_seed) |
114 | 137 | if "TensorMesh" in mesh_type: |
115 | 138 | if "uniform" in mesh_type: |
@@ -649,6 +672,8 @@ def check_derivative( |
649 | 672 | x0 = mkvc(x0) |
650 | 673 |
|
651 | 674 | if dx is None: |
| 675 | + if random_seed is None: |
| 676 | + _warn_random_test() |
652 | 677 | rng = np.random.default_rng(random_seed) |
653 | 678 | dx = rng.standard_normal(len(x0)) |
654 | 679 |
|
@@ -867,6 +892,8 @@ def assert_isadjoint( |
867 | 892 | """ |
868 | 893 | __tracebackhide__ = True |
869 | 894 |
|
| 895 | + if random_seed is None: |
| 896 | + _warn_random_test() |
870 | 897 | rng = np.random.default_rng(random_seed) |
871 | 898 |
|
872 | 899 | def random(size, iscomplex): |
|
0 commit comments