1
0
mirror of https://github.com/deadc0de6/dotdrop.git synced 2026-02-04 14:31:46 +00:00

test config path from options

This commit is contained in:
deadc0de6
2023-02-05 17:12:01 +01:00
committed by deadc0de
parent bfae4319f1
commit 82cdbc3703

167
tests/test_options.py Normal file
View File

@@ -0,0 +1,167 @@
"""
author: deadc0de6 (https://github.com/deadc0de6)
Copyright (c) 2017, deadc0de6
basic unittest for the install function
"""
# pylint: disable=R0903
# pylint: disable=W0231
# pylint: disable=W0212
import os
import unittest
from unittest.mock import patch
from dotdrop.options import Options, Logger
class FakeOptions(Options):
"""fake Options class"""
def __init__(self, args):
"""init"""
self.args = args
self.log = Logger(debug=True)
class TestOptions(unittest.TestCase):
"""test case"""
def clean_setup(self):
"""clean stuff"""
if 'DOTDROP_CONFIG' in os.environ:
del os.environ['DOTDROP_CONFIG']
if 'XDG_CONFIG_HOME' in os.environ:
del os.environ['XDG_CONFIG_HOME']
def _get_args(self, more):
args = {
'--dry': False,
'--verbose': True,
'--cfg': '',
}
for k, val in more.items():
args[k] = val
return args
def side_effect(self, valid=''):
"""side effect for os.path.exists"""
def inner(filename):
print(f'checking if {filename} exists')
if filename == valid:
return True
return False
return inner
def test_get_path_from_cli(self):
"""from --cli"""
self.clean_setup()
expected = 'fakepath'
args = {}
args['--cfg'] = expected
fake = FakeOptions(args)
self.assertEqual(fake._get_config_path(), expected)
def test_get_path_from_env(self):
"""from env"""
self.clean_setup()
expected = 'envpath'
os.environ['DOTDROP_CONFIG'] = expected
args = self._get_args({'--cfg': ''})
fake = FakeOptions(args)
self.assertEqual(fake._get_config_path(), expected)
@patch('os.path.exists')
def test_get_path_from_yaml(self, mock_exists):
"""from yaml"""
self.clean_setup()
mock_exists.return_value = True
expected = 'config.yaml'
args = self._get_args({'--cfg': ''})
fake = FakeOptions(args)
self.assertEqual(fake._get_config_path(), expected)
@patch('os.path.exists')
def test_get_path_from_toml(self, mock_exists):
"""from toml"""
self.clean_setup()
expected = 'config.toml'
args = self._get_args({'--cfg': ''})
mock_exists.side_effect = self.side_effect(valid=expected)
fake = FakeOptions(args)
self.assertEqual(fake._get_config_path(), expected)
@patch('os.path.exists')
def test_get_path_xdg_yaml(self, mock_exists):
"""from xdg"""
self.clean_setup()
home = os.path.expanduser('~/.config')
expected = f'{home}/dotdrop/config.yaml'
mock_exists.side_effect = self.side_effect(valid=expected)
log = Logger(debug=True)
log.dbg(f'expected: {expected}')
args = self._get_args({'--cfg': ''})
os.environ['XDG_CONFIG_HOME'] = home
fake = FakeOptions(args)
self.assertEqual(fake._get_config_path(), expected)
@patch('os.path.exists')
def test_get_path_xdg_toml(self, mock_exists):
"""from xdg toml"""
self.clean_setup()
home = os.path.expanduser('~/.config')
expected = f'{home}/dotdrop/config.toml'
mock_exists.side_effect = self.side_effect(valid=expected)
log = Logger(debug=True)
log.dbg(f'expected: {expected}')
args = self._get_args({'--cfg': ''})
os.environ['XDG_CONFIG_HOME'] = home
fake = FakeOptions(args)
self.assertEqual(fake._get_config_path(), expected)
@patch('os.path.exists')
def test_get_path_fs_yaml(self, mock_exists):
"""from fs yaml"""
self.clean_setup()
home = os.path.expanduser('~/.config')
expected = f'{home}/dotdrop/config.toml'
mock_exists.side_effect = self.side_effect(valid=expected)
log = Logger(debug=True)
log.dbg(f'expected: {expected}')
args = self._get_args({'--cfg': ''})
fake = FakeOptions(args)
self.assertEqual(fake._get_config_path(), expected)
@patch('os.path.exists')
def test_get_path_fs_xdg(self, mock_exists):
"""from fs xdg"""
self.clean_setup()
home = os.path.expanduser('/etc/xdg')
expected = f'{home}/dotdrop/config.toml'
mock_exists.side_effect = self.side_effect(valid=expected)
log = Logger(debug=True)
log.dbg(f'expected: {expected}')
args = self._get_args({'--cfg': ''})
fake = FakeOptions(args)
self.assertEqual(fake._get_config_path(), expected)
@patch('os.path.exists')
def test_get_path_fs_etc(self, mock_exists):
"""from fs etc"""
self.clean_setup()
home = os.path.expanduser('/etc')
expected = f'{home}/dotdrop/config.toml'
mock_exists.side_effect = self.side_effect(valid=expected)
log = Logger(debug=True)
log.dbg(f'expected: {expected}')
args = self._get_args({'--cfg': ''})
fake = FakeOptions(args)
self.assertEqual(fake._get_config_path(), expected)
def main():
"""entry point"""
unittest.main()
if __name__ == '__main__':
main()