From cfc9177b3d4b2103f8d3456bbba04c3901ce7a3f Mon Sep 17 00:00:00 2001 From: Alvaro Valdebenito Date: Fri, 16 Feb 2024 17:56:39 +0100 Subject: [PATCH] add test --- pyaerocom/scripts/cli.py | 7 +++---- tests/test_cli.py | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/pyaerocom/scripts/cli.py b/pyaerocom/scripts/cli.py index 48e513c04..ea96af23e 100644 --- a/pyaerocom/scripts/cli.py +++ b/pyaerocom/scripts/cli.py @@ -5,7 +5,8 @@ import typer -from pyaerocom import __package__, __version__, const +from pyaerocom import __package__, __version__, change_verbosity, const +from pyaerocom.aeroval import EvalSetup, ExperimentProcessor from pyaerocom.io.cachehandler_ungridded import list_cache_files from pyaerocom.io.utils import browse_database @@ -81,10 +82,8 @@ def aeroval( verbosity: Verbosity = typer.Option(Verbosity.ERROR, help="console logger level"), ): """run AeroVal experiment as descried on config file""" - from pyaerocom import change_verbosity - from pyaerocom.aeroval import EvalSetup, ExperimentProcessor - if config.suffix != ".json": + if config.suffix != ".json": # pragma:no cover typer.echo(f"{config.suffix=} != '.json'") raise typer.Abort() diff --git a/tests/test_cli.py b/tests/test_cli.py index ffb7f70d8..a4c723b3f 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -1,3 +1,4 @@ +import json from importlib import metadata from pathlib import Path @@ -65,3 +66,25 @@ def test_browse(): def test_ppiaccess(): result = runner.invoke(main, ["ppiaccess"]) assert result.exit_code == 0 + + +@pytest.fixture() +def config_json(monkeypatch, tmp_path: Path, eval_config: dict) -> Path: + def do_not_run(self, model_name=None, obs_name=None, var_list=None, update_interface=True): + assert model_name is None + assert obs_name is None + assert var_list is None + assert update_interface is True + + monkeypatch.setattr("pyaerocom.scripts.cli.ExperimentProcessor.run", do_not_run) + + path = tmp_path / "conf.json" + path.write_text(json.dumps(eval_config)) + return path + + +@pytest.mark.parametrize("cfg", ("cfgexp1",)) +def test_aeroval(config_json: Path): + assert config_json.is_file() + result = runner.invoke(main, ["aeroval", str(config_json)]) + assert result.exit_code == 0