Loading .gitignore +2 −1 Original line number Diff line number Diff line **/*__pycache__ *.code-workspace pygriffin/config.py +19 −4 Original line number Diff line number Diff line Loading @@ -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): Loading @@ -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.') Loading @@ -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 Loading @@ -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): Loading tests/.pygriffin.test.rc +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 tests/test_config.py +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__": Loading Loading
pygriffin/config.py +19 −4 Original line number Diff line number Diff line Loading @@ -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): Loading @@ -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.') Loading @@ -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 Loading @@ -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): Loading
tests/.pygriffin.test.rc +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
tests/test_config.py +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__": Loading