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:
167
tests/test_options.py
Normal file
167
tests/test_options.py
Normal 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()
|
||||
Reference in New Issue
Block a user