|
1 | 1 | from pathlib import Path
|
2 |
| -import datetime |
3 | 2 | import os
|
| 3 | +import datetime |
4 | 4 |
|
5 | 5 | import numpy as np
|
6 | 6 | import pytest
|
@@ -51,44 +51,49 @@ def _None(block=None):
|
51 | 51 | def pytest_addoption(parser):
|
52 | 52 | parser.addoption('--update', action='store_true', default=False,
|
53 | 53 | help='Update reference results.')
|
54 |
| - parser.addoption('--damaskroot', |
| 54 | + parser.addoption('--damask-root',default=os.environ.get('DAMASK_ROOT'), |
55 | 55 | help='DAMASK root directory.')
|
56 |
| - parser.addoption('--rng_entropy', |
| 56 | + parser.addoption('--rng-entropy', |
57 | 57 | help='Entropy for random seed generator.')
|
58 | 58 |
|
59 | 59 | @pytest.fixture
|
60 |
| -def update(pytestconfig): |
61 |
| - """Store current results as new reference results.""" |
62 |
| - return pytestconfig.getoption('--update') |
| 60 | +def update(request): |
| 61 | + """Store current results as new reference data.""" |
| 62 | + return request.config.getoption('--update') |
| 63 | + |
| 64 | +@pytest.fixture |
| 65 | +def damask_root(request): |
| 66 | + """DAMASK root directory.""" |
| 67 | + if (damask_root := request.config.getoption('--damask-root')) is not None: |
| 68 | + return Path(damask_root).expanduser() |
| 69 | + else: |
| 70 | + return damask_root |
63 | 71 |
|
64 | 72 | @pytest.fixture
|
65 |
| -def damaskroot(pytestconfig): |
66 |
| - """Specify DAMASK root directory.""" |
67 |
| - return pytestconfig.getoption('--damaskroot') |
| 73 | +def np_rng(request): |
| 74 | + """Instance of numpy.random.Generator.""" |
| 75 | + e = request.config.getoption('--rng-entropy') |
| 76 | + print('\nrng entropy: ',sq := np.random.SeedSequence(e if e is None else int(e)).entropy) |
| 77 | + return np.random.default_rng(seed=sq) |
68 | 78 |
|
69 | 79 | # https://stackoverflow.com/questions/51883573
|
70 | 80 | def pytest_collection_modifyitems(config, items):
|
71 |
| - if config.getoption('--damaskroot') is None: |
72 |
| - need_damaskroot = pytest.mark.skip(reason='need --damaskroot to run') |
| 81 | + if config.getoption('--damask-root') is None: |
| 82 | + need_damask_root = pytest.mark.skip(reason='need --damask-root to run') |
73 | 83 | for item in items:
|
74 |
| - if 'need_damaskroot' in item.keywords: item.add_marker(need_damaskroot) |
| 84 | + if 'need_damask_root' in item.keywords: item.add_marker(need_damask_root) |
75 | 85 |
|
76 | 86 | def pytest_configure(config):
|
77 | 87 | config.addinivalue_line(
|
78 |
| - 'markers', 'need_damaskroot: mark test to run only if DAMASK root is given' |
| 88 | + 'markers', 'need_damask_root: mark test to run only if DAMASK root is given' |
79 | 89 | )
|
80 | 90 |
|
| 91 | + |
81 | 92 | @pytest.fixture
|
82 | 93 | def res_path_base():
|
83 | 94 | """Directory containing testing resources."""
|
84 | 95 | return Path(__file__).parent/'resources'
|
85 | 96 |
|
86 |
| -@pytest.fixture |
87 |
| -def np_rng(pytestconfig): |
88 |
| - """Instance of numpy.random.Generator.""" |
89 |
| - e = pytestconfig.getoption('--rng_entropy') |
90 |
| - print('\nrng entropy: ',sq := np.random.SeedSequence(e if e is None else int(e)).entropy) |
91 |
| - return np.random.default_rng(seed=sq) |
92 | 97 |
|
93 | 98 | @pytest.fixture
|
94 | 99 | def set_of_quaternions(np_rng):
|
|
0 commit comments