Skip to content

Commit 66c7d59

Browse files
authored
Merge pull request #1504 from metno/fix-test-output-dirs
Use tmpdir in all tests
2 parents 8d332ee + 8124b16 commit 66c7d59

File tree

2 files changed

+47
-31
lines changed

2 files changed

+47
-31
lines changed

tests/aeroval/test_bulkfraction_engine.py

+18-9
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from copy import deepcopy
12
import pytest
23
import numpy as np
34
from pathlib import Path
@@ -12,15 +13,23 @@
1213

1314

1415
@pytest.fixture
15-
def bulkengine_instance() -> BulkFractionEngine:
16-
cfg = EvalSetup(**cfg_test_bulk.CFG)
17-
bfe = BulkFractionEngine(cfg)
16+
def cfg(tmpdir) -> dict:
17+
cfg = deepcopy(cfg_test_bulk.CFG)
18+
cfg["json_basedir"] = f"{tmpdir}/data"
19+
cfg["coldata_basedir"] = f"{tmpdir}/coldata"
20+
return cfg
21+
22+
23+
@pytest.fixture
24+
def bulkengine_instance(cfg: dict) -> BulkFractionEngine:
25+
setup = deepcopy(EvalSetup(**cfg))
26+
bfe = BulkFractionEngine(setup)
1827
return bfe
1928

2029

21-
def test___init__():
22-
cfg = EvalSetup(**cfg_test_bulk.CFG)
23-
bfe = BulkFractionEngine(cfg)
30+
def test___init__(cfg: dict):
31+
setup = EvalSetup(**cfg)
32+
bfe = BulkFractionEngine(setup)
2433
assert isinstance(bfe, ProcessingEngine)
2534
assert isinstance(bfe, HasColocator)
2635

@@ -204,10 +213,10 @@ def test_run(bulkengine_instance: BulkFractionEngine):
204213
assert Path(output.exp_dir).is_dir()
205214

206215

207-
def test_run_cfg():
216+
def test_run_cfg(cfg: dict):
208217
model_name = "TM5-AP3-CTRL"
209-
cfg = EvalSetup(**cfg_test_bulk.CFG)
210-
proc = ExperimentProcessor(cfg)
218+
setup = EvalSetup(**cfg)
219+
proc = ExperimentProcessor(setup)
211220
proc.exp_output.delete_experiment_data(also_coldata=True)
212221
proc.run(obs_name="AERONET-Sun", model_name="TM5-AP3-CTRL")
213222

tests/aeroval/test_modelmaps_engine.py

+29-22
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from copy import deepcopy
2+
import pathlib
13
import pytest
24

35
from pyaerocom.aeroval.modelmaps_engine import ModelMapsEngine
@@ -7,37 +9,45 @@
79
from tests.fixtures.aeroval.cfg_test_exp1 import CFG
810

911

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)
1223
engine = ModelMapsEngine(stp)
1324
with pytest.raises(ModelVarNotAvailable) as excinfo:
1425
engine._process_contour_map_var("LOTOS", "concco", False)
1526

1627
assert "Cannot read data for model LOTOS" in str(excinfo.value)
1728

1829

19-
def test__run(caplog):
20-
stp = EvalSetup(**CFG)
30+
def test__run(caplog, cfg: dict):
31+
stp = EvalSetup(**cfg)
2132
engine = ModelMapsEngine(stp)
2233
engine.run(model_list=["TM5-AP3-CTRL"], var_list=["conco"])
2334
assert "no data for model TM5-AP3-CTRL, skipping" in caplog.text
2435

2536

26-
def test__run_working(caplog):
27-
stp = EvalSetup(**CFG)
37+
def test__run_working(caplog, cfg: dict):
38+
stp = EvalSetup(**cfg)
2839
engine = ModelMapsEngine(stp)
2940
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])
3142

3243

3344
@pytest.mark.parametrize(
3445
"maps_freq, result",
3546
[("monthly", "monthly"), ("yearly", "yearly"), ("coarsest", "yearly")],
3647
)
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)
4151
engine = ModelMapsEngine(stp)
4252
freq = engine._get_maps_freq()
4353

@@ -54,10 +64,9 @@ def test__get_maps_freq(maps_freq, result):
5464
("coarsest", "daily", ["weekly", "daily"]),
5565
],
5666
)
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)
6170
engine = ModelMapsEngine(stp)
6271
freq = engine._get_read_model_freq(ts_types)
6372

@@ -74,21 +83,19 @@ def test__get_read_model_freq(maps_freq, result, ts_types):
7483
),
7584
],
7685
)
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)
8189
engine = ModelMapsEngine(stp)
8290

8391
with pytest.raises(ValueError, match=errormsg):
8492
engine._get_read_model_freq(ts_types)
8593

8694

87-
def test__read_model_data():
95+
def test__read_model_data(cfg: dict):
8896
model_name = "TM5-AP3-CTRL"
8997
var_name = "od550aer"
90-
CFG2 = CFG.copy()
91-
stp = EvalSetup(**CFG2)
98+
stp = EvalSetup(**cfg)
9299
engine = ModelMapsEngine(stp)
93100

94101
data = engine._read_model_data(model_name, var_name)

0 commit comments

Comments
 (0)