diff --git a/dotdrop/options.py b/dotdrop/options.py index e22a379..995a6ca 100644 --- a/dotdrop/options.py +++ b/dotdrop/options.py @@ -67,7 +67,21 @@ Options: """.format(BANNER, PROFILE) -class Options: +class AttrMonitor: + _set_attr_err = False + + def __setattr__(self, key, value): + """monitor attribute setting""" + if not hasattr(self, key) and self._set_attr_err: + self._attr_change(key) + super(AttrMonitor, self).__setattr__(key, value) + + def _attr_set(self, attr): + """do something when unexistent attr is set""" + pass + + +class Options(AttrMonitor): def __init__(self, args=None): """constructor @@ -89,6 +103,8 @@ class Options: and not self.args['--no-banner']: self._header() self._print_attr() + # start monitoring for bad attribute + self._set_attr_err = True def _header(self): """print the header""" @@ -172,3 +188,7 @@ class Options: if callable(val): continue self.log.dbg('- {}: \"{}\"'.format(att, val)) + + def _attr_set(self, attr): + """error when some inexistent attr is set""" + raise Exception('bad option: {}'.format(attr)) diff --git a/tests/helpers.py b/tests/helpers.py index 84649a5..13b712d 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -128,7 +128,7 @@ def load_options(confpath, profile): o.link = LinkTypes.NOLINK.value o.install_showdiff = True o.debug = True - o.dopts = '' + o.compare_dopts = '' o.variables = {} return o diff --git a/tests/test_compare.py b/tests/test_compare.py index 567bf92..c336698 100644 --- a/tests/test_compare.py +++ b/tests/test_compare.py @@ -162,9 +162,9 @@ class TestCompare(unittest.TestCase): # test compare from dotdrop self.assertFalse(cmd_compare(o, tmp)) # test focus - o.focus = d4 + o.compare_focus = d4 self.assertFalse(cmd_compare(o, tmp)) - o.focus = '/tmp/fake' + o.compare_focus = '/tmp/fake' self.assertFalse(cmd_compare(o, tmp)) diff --git a/tests/test_update.py b/tests/test_update.py index e77d7ba..12aea45 100644 --- a/tests/test_update.py +++ b/tests/test_update.py @@ -53,6 +53,10 @@ class TestUpdate(unittest.TestCase): self.assertTrue(os.path.exists(d2)) self.addCleanup(clean, d2) + d3t, c3t = create_random_file(fold_config) + self.assertTrue(os.path.exists(d3t)) + self.addCleanup(clean, d3t) + # create the directory to test dpath = os.path.join(fold_config, get_string(5)) dir1 = create_dir(dpath) @@ -69,11 +73,14 @@ class TestUpdate(unittest.TestCase): self.assertTrue(os.path.exists(confpath)) o = load_options(confpath, profile) o.debug = True - dfiles = [d1, dir1, d2] + o.update_showpatch = True + dfiles = [d1, dir1, d2, d3t] # import the files o.import_path = dfiles cmd_importer(o) + + # get new config o = load_options(confpath, profile) # edit the files @@ -92,6 +99,7 @@ class TestUpdate(unittest.TestCase): o.safe = False o.debug = True o.update_path = [d1, dir1] + o.update_showpatch = True cmd_update(o) # test content @@ -114,7 +122,7 @@ class TestUpdate(unittest.TestCase): o.safe = False o.debug = True o.update_path = [d2key] - o.iskey = True + o.update_iskey = True cmd_update(o) # test content