Commit ee06b88b authored by Stauff, Nicolas Emile's avatar Stauff, Nicolas Emile
Browse files

Merge branch 'update_tests' into 'main'

Update configuration and tests

See merge request nstauff/PyGriffin!4
parents 7fe4aed6 84a30bc8
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
**/*__pycache__
*.code-workspace
+19 −4
Original line number Diff line number Diff line
@@ -22,8 +22,8 @@ class PyGriffinConfig():
        Path to the Griffin executable
    """

    __MOD_PATH = os.path.abspath(os.path.dirname(__file__))
    _RC_FILE = __MOD_PATH + '/.pygriffin.rc'
    __MOD_PATH = Path(__file__).parent.absolute()
    _RC_FILE = __MOD_PATH / '.pygriffin.rc'

    def __init__(self, griffin_exec=None):

@@ -39,7 +39,7 @@ class PyGriffinConfig():
        elif os.getenv('GRIFFIN_EXEC') is not None:
            self.griffin_exec = os.getenv('GRIFFIN_EXEC')
        elif self.get('exec', 'griffin'):
            self.griffin_exec = self.get('exec', 'griffin')
            self.griffin_exec = self.get_path('exec', 'griffin')
        else:
            msg = ('All methods of determining the location '
            'of the Griffin executable have failed.')
@@ -57,6 +57,16 @@ class PyGriffinConfig():
        else:
            return default_val

    def get_path(self, *args, **kwargs):
        """Get an absoluate filesystem path from the configuration.
        Relative paths are assumed to be relative to the configuration file.
        """
        val = self.get(*args, **kwargs)
        path = Path(val)
        if not path.is_absolute():
            path = self._RC_FILE.parent / path
        return path.resolve().absolute()

    @property
    def griffin_dir(self):
        return self.griffin_exec.parent
@@ -68,7 +78,12 @@ class PyGriffinConfig():
    @griffin_exec.setter
    def griffin_exec(self, exec):
        cv.check_type('Griffin executable path', exec, (Path, str))
        self._griffin_exec = Path(exec).absolute()
        exec_path = Path(exec).resolve().absolute()
        if exec_path.is_file():
            self._griffin_exec = exec_path
        else:
            msg = ('Specified Griffin executable {} does not exist')
            raise FileNotFoundError(msg.format(exec_path))

    @property
    def module_path(self):
+1 −1
Original line number Diff line number Diff line
[exec]
griffin = ./griffin_mock
 No newline at end of file
griffin = griffin_mock
 No newline at end of file
+29 −9
Original line number Diff line number Diff line
import os
from pygriffin.pygriffin import PyGriffin
import pytest
from pathlib import Path

from pygriffin import PyGriffinConfig

_CWD = Path(__file__).parent.absolute()
_GRIFFIN_MOCK_PATH = _CWD / 'griffin_mock'


def test_griffin_config_fail():
    # expect failure because no configuration is provided
    with pytest.raises(RuntimeError) as e_info:
        # torpedo the configuration file and env var options
        PyGriffinConfig._RC_FILE = ''
        if os.environ.get('GRIFFIN_EXEC'):
            del os.environ['GRIFFIN_EXEC']
        config = PyGriffinConfig()

    # expect failure because the griffin executable isn't a valid file
    with pytest.raises(FileNotFoundError) as e_info:
        PyGriffinConfig(griffin_exec='🙈')


def test_griffin_exec_direct():
    config = PyGriffinConfig(griffin_exec='./griffin_mock')
    assert config.griffin_exec == Path('./griffin_mock').absolute()
    assert config.griffin_dir == Path('.').absolute()
    config = PyGriffinConfig(griffin_exec=_GRIFFIN_MOCK_PATH)
    assert config.griffin_exec == _GRIFFIN_MOCK_PATH
    assert config.griffin_dir == _CWD


def test_griffin_exec_config():
    PyGriffinConfig._RC_FILE = "./.pygriffin.test.rc"
    PyGriffinConfig._RC_FILE = _CWD / '.pygriffin.test.rc'
    config = PyGriffinConfig()
    assert config.griffin_exec == Path('./griffin_mock').absolute()
    assert config.griffin_dir == Path('.').absolute()
    assert config.griffin_exec == _GRIFFIN_MOCK_PATH
    assert config.griffin_dir == _CWD


def test_griffin_env_config():
    os.environ['GRIFFIN_EXEC'] = str(Path("./griffin_mock"))
    os.environ['GRIFFIN_EXEC'] = str(_GRIFFIN_MOCK_PATH)
    config = PyGriffinConfig()
    assert config.griffin_exec == Path('./griffin_mock').absolute()
    assert config.griffin_dir == Path('.').absolute()
    assert config.griffin_exec == _GRIFFIN_MOCK_PATH
    assert config.griffin_dir == _CWD


if __name__ == "__main__":