Skip to content

Commit 9193877

Browse files
committed
Merge branch 'rng_entropy-for-tests-in-PRIVATE' into 'development'
rng_entropy for tests in PRIVATE See merge request damask/DAMASK!1033
2 parents 79f95a1 + afd8b85 commit 9193877

File tree

4 files changed

+29
-24
lines changed

4 files changed

+29
-24
lines changed

.gitlab-ci.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ create_package_min:
101101
- export DAMASK_ROOT=$(pwd)
102102
- PYTHONPATH=${DAMASK_ROOT}/python:$PYTHONPATH
103103
- cd python
104-
- python3 -m pytest -v --cov=damask --cov-report=xml --damaskroot=${DAMASK_ROOT}
104+
- python3 -m pytest -v --cov=damask --cov-report=xml --damask-root=${DAMASK_ROOT}
105105
- coverage report --fail-under=90 --show-missing
106106

107107
pytest:

PRIVATE

python/tests/conftest.py

+24-19
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from pathlib import Path
2-
import datetime
32
import os
3+
import datetime
44

55
import numpy as np
66
import pytest
@@ -51,44 +51,49 @@ def _None(block=None):
5151
def pytest_addoption(parser):
5252
parser.addoption('--update', action='store_true', default=False,
5353
help='Update reference results.')
54-
parser.addoption('--damaskroot',
54+
parser.addoption('--damask-root',default=os.environ.get('DAMASK_ROOT'),
5555
help='DAMASK root directory.')
56-
parser.addoption('--rng_entropy',
56+
parser.addoption('--rng-entropy',
5757
help='Entropy for random seed generator.')
5858

5959
@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
6371

6472
@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)
6878

6979
# https://stackoverflow.com/questions/51883573
7080
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')
7383
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)
7585

7686
def pytest_configure(config):
7787
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'
7989
)
8090

91+
8192
@pytest.fixture
8293
def res_path_base():
8394
"""Directory containing testing resources."""
8495
return Path(__file__).parent/'resources'
8596

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)
9297

9398
@pytest.fixture
9499
def set_of_quaternions(np_rng):

python/tests/test_Crystal.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -171,13 +171,13 @@ def test_related_invalid_target(self,np_rng,crystal):
171171
Crystal(lattice='hP',c=np.sqrt(2.)*.99),
172172
Crystal(lattice='tI',c=1.2)])
173173
@pytest.mark.parametrize('mode',['slip','twin'])
174-
@pytest.mark.need_damaskroot
175-
def test_system_match(self,crystal,mode,damaskroot):
174+
@pytest.mark.need_damask_root
175+
def test_system_match(self,crystal,mode,damask_root):
176176
if crystal.lattice == 'tI' and mode == 'twin': return
177177

178178
raw = []
179179
name = f'{crystal.lattice.upper()}_SYSTEM{mode.upper()}'
180-
with open(Path(damaskroot).expanduser()/'src'/'crystal.f90') as f:
180+
with open(damask_root/'src'/'crystal.f90') as f:
181181
in_matrix = False
182182
for line in [l for l in f if l.split('!')[0].strip()]:
183183
if f'shape({name})' in line: break

0 commit comments

Comments
 (0)