Source code for ewoksoptics.tests.test_generate_ini_file

import os
import pytest

from ..tasks.generate_ini_file import GenerateIniFile


def _get_inputs(tmpdir, template: str) -> dict:
    return {
        "template_file": str(template),
        "mapping_data": {
            "___METHOD___": "xsvt",
            "___MAT___": "Al",
            "___SAMPLETAG___": "nr1121c",
            "___EEE___": 20.000001,
        },
        "output_file": tmpdir.join("result.ini"),
    }


[docs] def test_generate_ini_file(tmpdir): template = tmpdir.join("template.ini") template.write( """ [SpeckleMPy] method = '___METHOD___' sample_tag = '___SAMPLETAG___' material = '___MAT___' delta = '' energy = ___EEE___ pix_size = ___PIX___ """ ) ini_inputs = _get_inputs(tmpdir, template) generate = GenerateIniFile(inputs=ini_inputs) generate.execute() output_ini_file = generate.get_output_value("output_file") assert os.path.exists(output_ini_file) with open(output_ini_file, "r") as f: content = f.read() expected_content = """ [SpeckleMPy] method = 'xsvt' sample_tag = 'nr1121c' material = 'Al' delta = '' energy = 20.000001 pix_size = ___PIX___ """ assert content.strip() == expected_content.strip()
[docs] def test_generate_ini_file_with_missing_template(tmpdir): template = tmpdir.join("non_existent_template.ini") assert not os.path.exists(template) ini_inputs = _get_inputs(tmpdir, template) task_name = f"{GenerateIniFile.__module__}.{GenerateIniFile.__name__}" generate = GenerateIniFile(inputs=ini_inputs) with pytest.raises(RuntimeError, match=f"Task '{task_name}' failed") as exc_info: generate.execute() original_exception = exc_info.value.__cause__ assert isinstance(original_exception, FileNotFoundError) assert f"No such file or directory: '{template}'" in str(original_exception)