From 99e4e121294e7ce78c4d81778ef6f41bdf7d22e5 Mon Sep 17 00:00:00 2001 From: gryf Date: Sat, 15 May 2021 17:42:34 +0200 Subject: [PATCH] Fixed path resolving implementation, added tests. --- replacer.py | 15 +++++------ test_replacer.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 8 deletions(-) diff --git a/replacer.py b/replacer.py index 73422e7..3dc9b78 100644 --- a/replacer.py +++ b/replacer.py @@ -79,14 +79,13 @@ class Replacer(object): # nothing found. so there is no replacement file. let's assume the # right file path. - if not path: - version = weechat.info_get("version_number", "") or 0 - if version < 0x3020000: # < 3.2.0 - path = '%h/' + map_file - return weechat.string_eval_path_home(path, {}, {}, {}) - else: - return os.path.join(weechat.info_get("weechat_data_dir", ""), - map_file) + version = weechat.info_get("version_number", "") or 0 + if version < 0x3020000: # < 3.2.0 + path = '%h/' + map_file + return weechat.string_eval_path_home(path, {}, {}, {}) + else: + return os.path.join(weechat.info_get("weechat_data_dir", ""), + map_file) def _get_replacement_map(self): """Read json file, and assign it to the replacement_map attr""" diff --git a/test_replacer.py b/test_replacer.py index a9b17e4..1b0b429 100644 --- a/test_replacer.py +++ b/test_replacer.py @@ -252,5 +252,73 @@ class TestFunctions(unittest.TestCase): self.assertEqual(weechat.line, 'quis cursus') +class TestLocateWeeHome(unittest.TestCase): + + @mock.patch('os.path.exists') + @mock.patch('weechat.string_eval_path_home') + @mock.patch('weechat.info_get') + def test_locate_replacement_file_data_dir(self, info_get, eval_path_home, + path_exists): + info_get.side_effect = ('foo', 'bar') + eval_path_home.side_effect = ('baz', ) + path_exists.side_effect = (True, ) + + result = replacer.Replacer._locate_replacement_file(object) + + self.assertEqual(result, 'foo/replacement_map.json') + + @mock.patch('os.path.exists') + @mock.patch('weechat.string_eval_path_home') + @mock.patch('weechat.info_get') + def test_locate_replacement_file_config_dir(self, info_get, eval_path_home, + path_exists): + info_get.side_effect = ('foo', 'bar') + eval_path_home.side_effect = ('baz', ) + path_exists.side_effect = (False, True) + + result = replacer.Replacer._locate_replacement_file(object) + + self.assertEqual(result, 'bar/replacement_map.json') + + @mock.patch('os.path.exists') + @mock.patch('weechat.string_eval_path_home') + @mock.patch('weechat.info_get') + def test_locate_replacement_file_old_home(self, info_get, eval_path_home, + path_exists): + info_get.side_effect = ('foo', 'bar') + eval_path_home.side_effect = ('baz', ) + path_exists.side_effect = (False, False, True) + + result = replacer.Replacer._locate_replacement_file(object) + + self.assertEqual(result, 'baz/replacement_map.json') + + @mock.patch('os.path.exists') + @mock.patch('weechat.string_eval_path_home') + @mock.patch('weechat.info_get') + def test_locate_replacement_default_home_31(self, info_get, eval_path_home, + path_exists): + info_get.side_effect = ('foo', 'bar', 0x3010000) + eval_path_home.side_effect = ('baz', 'old/replacement_map.json') + path_exists.side_effect = (False, False, False) + + result = replacer.Replacer._locate_replacement_file(object) + + self.assertEqual(result, 'old/replacement_map.json') + + @mock.patch('os.path.exists') + @mock.patch('weechat.string_eval_path_home') + @mock.patch('weechat.info_get') + def test_locate_replacement_default_home_32(self, info_get, eval_path_home, + path_exists): + info_get.side_effect = ('foo', 'bar', 0x3020000, 'new') + eval_path_home.side_effect = ('baz', ) + path_exists.side_effect = (False, False, False) + + result = replacer.Replacer._locate_replacement_file(object) + + self.assertEqual(result, 'new/replacement_map.json') + + if __name__ == '__main__': unittest.main()