Source code for ewoksjob.tests.test_cli_options

import logging

from ..worker import options as options_mod


[docs] def test_extract_slurm_options(monkeypatch, caplog): options = { # SLURM_NAME_MAP coverage "slurm_url": "http://test", "slurm_user": "user", "slurm_token": "token", "slurm_log_directory": "/logs", "slurm_data_directory": "/data", "slurm_pre_script": "pre.sh", "slurm_post_script": "post.sh", "slurm_python_cmd": "python3", "slurm_cleanup_job_artifacts": True, # Parameters (including environment) "slurm_parameters": [ "time_limit=60", 'environment={"FOO": "bar_from_params", "HELLO": "world_from_params", "KEEP": "keep_from_params"}', ], # Environment variables (mix of cases) "slurm_environment": [ "FOO=bar_from_cli", # override parameters "BAR=baz_from_cli", # not in parameters "HELLO", # override parameters from env "MISSING", # should trigger warning ], } monkeypatch.setenv("FOO", "bar_from_env") monkeypatch.setenv("HELLO", "world_from_env") monkeypatch.delenv("MISSING", raising=False) with caplog.at_level(logging.WARNING, logger="options"): result = options_mod._extract_slurm_options(options) expected = { "url": "http://test", "user_name": "user", "token": "token", "log_directory": "/logs", "data_directory": "/data", "pre_script": "pre.sh", "post_script": "post.sh", "python_cmd": "python3", "cleanup_job_artifacts": True, "parameters": { "time_limit": 60, "environment": { "FOO": "bar_from_cli", "BAR": "baz_from_cli", "HELLO": "world_from_env", "KEEP": "keep_from_params", }, }, } assert result == expected message = "Environment variable 'MISSING' is not defined (not passed to Slurm)" assert any(record.message == message for record in caplog.records)