1
+ from copy import deepcopy
2
+ import pathlib
1
3
import pytest
2
4
3
5
from pyaerocom .aeroval .modelmaps_engine import ModelMapsEngine
7
9
from tests .fixtures .aeroval .cfg_test_exp1 import CFG
8
10
9
11
10
- def test__process_map_var ():
11
- stp = EvalSetup (** CFG )
12
+ @pytest .fixture (scope = "function" )
13
+ def cfg (tmpdir : pathlib .Path ):
14
+ cfg = deepcopy (CFG )
15
+ cfg ["json_basedir" ] = f"{ tmpdir } /data"
16
+ cfg ["coldata_basedir" ] = f"{ tmpdir } /coldata"
17
+
18
+ return cfg
19
+
20
+
21
+ def test__process_map_var (cfg : dict ):
22
+ stp = EvalSetup (** cfg )
12
23
engine = ModelMapsEngine (stp )
13
24
with pytest .raises (ModelVarNotAvailable ) as excinfo :
14
25
engine ._process_contour_map_var ("LOTOS" , "concco" , False )
15
26
16
27
assert "Cannot read data for model LOTOS" in str (excinfo .value )
17
28
18
29
19
- def test__run (caplog ):
20
- stp = EvalSetup (** CFG )
30
+ def test__run (caplog , cfg : dict ):
31
+ stp = EvalSetup (** cfg )
21
32
engine = ModelMapsEngine (stp )
22
33
engine .run (model_list = ["TM5-AP3-CTRL" ], var_list = ["conco" ])
23
34
assert "no data for model TM5-AP3-CTRL, skipping" in caplog .text
24
35
25
36
26
- def test__run_working (caplog ):
27
- stp = EvalSetup (** CFG )
37
+ def test__run_working (caplog , cfg : dict ):
38
+ stp = EvalSetup (** cfg )
28
39
engine = ModelMapsEngine (stp )
29
40
files = engine .run (model_list = ["TM5-AP3-CTRL" ], var_list = ["od550aer" ])
30
- assert "PATH_TO_AEROVAL_OUT/ data/test/exp1/contour/od550aer_TM5-AP3-CTRL.geojson" in files
41
+ assert any ([ f . endswith ( " data/test/exp1/contour/od550aer_TM5-AP3-CTRL.geojson") for f in files ])
31
42
32
43
33
44
@pytest .mark .parametrize (
34
45
"maps_freq, result" ,
35
46
[("monthly" , "monthly" ), ("yearly" , "yearly" ), ("coarsest" , "yearly" )],
36
47
)
37
- def test__get_maps_freq (maps_freq , result ):
38
- CFG2 = CFG .copy ()
39
- CFG2 ["maps_freq" ] = maps_freq
40
- stp = EvalSetup (** CFG2 )
48
+ def test__get_maps_freq (maps_freq , result , cfg : dict ):
49
+ cfg ["maps_freq" ] = maps_freq
50
+ stp = EvalSetup (** cfg )
41
51
engine = ModelMapsEngine (stp )
42
52
freq = engine ._get_maps_freq ()
43
53
@@ -54,10 +64,9 @@ def test__get_maps_freq(maps_freq, result):
54
64
("coarsest" , "daily" , ["weekly" , "daily" ]),
55
65
],
56
66
)
57
- def test__get_read_model_freq (maps_freq , result , ts_types ):
58
- CFG2 = CFG .copy ()
59
- CFG2 ["maps_freq" ] = maps_freq
60
- stp = EvalSetup (** CFG2 )
67
+ def test__get_read_model_freq (maps_freq , result , ts_types , cfg : dict ):
68
+ cfg ["maps_freq" ] = maps_freq
69
+ stp = EvalSetup (** cfg )
61
70
engine = ModelMapsEngine (stp )
62
71
freq = engine ._get_read_model_freq (ts_types )
63
72
@@ -74,21 +83,19 @@ def test__get_read_model_freq(maps_freq, result, ts_types):
74
83
),
75
84
],
76
85
)
77
- def test__get_read_model_freq_error (maps_freq , ts_types , errormsg ):
78
- CFG2 = CFG .copy ()
79
- CFG2 ["maps_freq" ] = maps_freq
80
- stp = EvalSetup (** CFG2 )
86
+ def test__get_read_model_freq_error (maps_freq , ts_types , errormsg , cfg : dict ):
87
+ cfg ["maps_freq" ] = maps_freq
88
+ stp = EvalSetup (** cfg )
81
89
engine = ModelMapsEngine (stp )
82
90
83
91
with pytest .raises (ValueError , match = errormsg ):
84
92
engine ._get_read_model_freq (ts_types )
85
93
86
94
87
- def test__read_model_data ():
95
+ def test__read_model_data (cfg : dict ):
88
96
model_name = "TM5-AP3-CTRL"
89
97
var_name = "od550aer"
90
- CFG2 = CFG .copy ()
91
- stp = EvalSetup (** CFG2 )
98
+ stp = EvalSetup (** cfg )
92
99
engine = ModelMapsEngine (stp )
93
100
94
101
data = engine ._read_model_data (model_name , var_name )
0 commit comments