def test_logging(self): uut = Section("test", log_printer=NullPrinter()) uut.append(Setting(key="log_TYPE", value="conSole")) uut.retrieve_logging_objects() self.assertIsInstance(uut.log_printer, ConsolePrinter) self.assertIsInstance(uut.interactor, ConsoleInteractor) uut = Section("test", log_printer=ConsolePrinter()) uut.append(Setting(key="log_TYPE", value="NONE")) uut.retrieve_logging_objects() self.assertIsInstance(uut.log_printer, NullPrinter) uut = Section("test", log_printer=NullPrinter()) uut.append(Setting(key="log_TYPE", value="./invalid path/@#$%^&*()_")) uut.retrieve_logging_objects() # This should throw a warning self.assertIsInstance(uut.log_printer, ConsolePrinter) self.assertEqual(uut.log_printer.log_level, LOG_LEVEL.WARNING) uut.append(Setting(key="LOG_LEVEL", value="DEBUG")) uut.retrieve_logging_objects() # This should throw a warning self.assertEqual(uut.log_printer.log_level, LOG_LEVEL.DEBUG) filename = tempfile.gettempdir( ) + os.path.sep + "testcoalasectiontestfile~" uut = Section("test", log_printer=NullPrinter()) uut.append(Setting(key="log_TYPE", value=filename)) uut.retrieve_logging_objects() self.assertIsInstance(uut.log_printer, FilePrinter) del uut os.remove(filename)
def test_string_conversion(self): uut = Section('name') self.assertEqual(str(uut), 'name {}') uut.append(Setting('key', 'value')) self.assertEqual(str(uut), "name {key : 'value'}") uut.append(Setting('another_key', 'another_value')) self.assertEqual( str(uut), "name {key : 'value', another_key : 'another_value'}")
def test_string_conversion(self): uut = Section("name") self.assertEqual(str(uut), "name {}") uut.append(Setting("key", "value")) self.assertEqual(str(uut), "name {key : 'value'}") uut.append(Setting("another_key", "another_value")) self.assertEqual(str(uut), "name {key : 'value', another_key : 'another_value'}")
def test_iter(self): defaults = Section('default', None) uut = Section('name', defaults) uut.append(Setting(5, 5, 5)) uut.add_or_create_setting(Setting('TEsT', 4, 5)) defaults.append(Setting('tEsT', 1, 3)) defaults.append(Setting(' great ', 3, 8)) defaults.append(Setting(' great ', 3, 8), custom_key='custom') uut.add_or_create_setting(Setting('custom', 4, 8, to_append=True)) uut.add_or_create_setting(Setting(' NEW ', 'val', 8)) uut.add_or_create_setting(Setting(' NEW ', 'vl', 8), allow_appending=False) uut.add_or_create_setting(Setting('new', 'val', 9), custom_key='teSt ', allow_appending=True) self.assertEqual(list(uut), ['5', 'test', 'custom', 'new', 'great']) for index in uut: t = uut[index] self.assertNotEqual(t, None) self.assertIn('teST', defaults) self.assertIn(' GREAT', defaults) self.assertNotIn(' GrEAT !', defaults) self.assertNotIn('', defaults) self.assertEqual(str(uut['test']), '4\nval') self.assertEqual(str(uut['custom']), '3, 4') self.assertEqual(int(uut['GREAT ']), 3) self.assertRaises(IndexError, uut.__getitem__, 'doesnotexist') self.assertRaises(IndexError, uut.__getitem__, 'great', True) self.assertRaises(IndexError, uut.__getitem__, ' ')
def test_outputting(self): uut = Section("test", log_printer=NullPrinter()) uut.retrieve_logging_objects() self.assertIsInstance(uut.interactor, ConsoleInteractor) uut.append(Setting(key="output", value="none")) uut.retrieve_logging_objects() self.assertIsInstance(uut.interactor, NullInteractor) uut.append(Setting(key="output", value="anything else")) uut.retrieve_logging_objects() self.assertIsInstance(uut.interactor, ConsoleInteractor)
def test_extract_aspects_from_section_with_exclude(self): section = Section('section') section.append(Setting('aspects', 'commitmessage')) section.append(Setting('excludes', 'TrailingPeriod')) section.append(Setting('language', 'py 3.4')) aspects = extract_aspects_from_section(section) self.assertTrue( issubaspect(get_aspect('trailingperiod'), get_aspect('commitmessage'))) self.assertIsNone(aspects.get('trailingperiod'))
def test_copy(self): uut = Section('name') uut.append(Setting('key', 'value')) self.assertEqual(str(uut['key']), 'value') copy = uut.copy() self.assertEqual(str(copy), str(uut)) uut.append(Setting('key', 'another_value')) self.assertNotEqual(str(copy), str(uut)) uut.defaults = copy copy = uut.copy() self.assertEqual(str(uut.defaults), str(copy.defaults)) uut.defaults.append(Setting('key', 'quite_something_else')) self.assertNotEqual(str(uut.defaults), str(copy.defaults))
def test_iter(self): defaults = Section("default", None) uut = Section("name", defaults) uut.append(Setting(5, 5, 5)) uut.add_or_create_setting(Setting("TEsT", 4, 5)) defaults.append(Setting("tEsT", 1, 3)) defaults.append(Setting(" great ", 3, 8)) defaults.append(Setting(" great ", 3, 8), custom_key="custom") uut.add_or_create_setting(Setting(" NEW ", "val", 8)) uut.add_or_create_setting(Setting(" NEW ", "vl", 8), allow_appending=False) uut.add_or_create_setting(Setting("new", "val", 9), custom_key="teSt ", allow_appending=True) self.assertEqual(list(uut), ["5", "test", "new", "great", "custom"]) for index in uut: t = uut[index] self.assertNotEqual(t, None) self.assertIn("teST", defaults) self.assertIn(" GREAT", defaults) self.assertNotIn(" GrEAT !", defaults) self.assertNotIn("", defaults) self.assertEqual(str(uut['test']), "4\nval") self.assertEqual(int(uut["GREAT "]), 3) self.assertRaises(IndexError, uut.__getitem__, "doesnotexist") self.assertRaises(IndexError, uut.__getitem__, "great", True) self.assertRaises(IndexError, uut.__getitem__, " ")
def test_copy(self): uut = Section("name") uut.append(Setting("key", "value")) self.assertEqual(str(uut["key"]), "value") copy = uut.copy() self.assertEqual(str(copy), str(uut)) uut.append(Setting("key", "another_value")) self.assertNotEqual(str(copy), str(uut)) uut.defaults = copy copy = uut.copy() self.assertEqual(str(uut.defaults), str(copy.defaults)) uut.defaults.append(Setting("key", "quite_something_else")) self.assertNotEqual(str(uut.defaults), str(copy.defaults))
def test_delete_setting(self): section = Section('section', None) section.append(Setting('key1', 'value11')) section.append(Setting('key2', 'value12')) section.delete_setting('key1') self.assertEqual(str(section), "section {key2 : 'value12'}") section.append(Setting('key3', 'value13')) section.append(Setting('key4', 'value14')) section.delete_setting('key3') self.assertEqual(str(section), "section {key2 : 'value12', key4 : 'value14'}")
def test_apply_filters(self): section_one = Section('apply') section_one.append(Setting('tags', 'save')) section_two = Section('filters') section_two.append(Setting('tags', 'change')) filtered = apply_filters([('section_tags', 'save')], sections=[ section_one, section_two, ]) self.assertEqual(len(filtered), 1) self.assertEqual(filtered[0].name, 'apply')
def test_delete_setting(self): section = Section("section", None) section.append(Setting("key1", "value11")) section.append(Setting("key2", "value12")) section.delete_setting("key1") self.assertEqual(str(section), "section {key2 : 'value12'}") section.append(Setting("key3", "value13")) section.append(Setting("key4", "value14")) section.delete_setting("key3") self.assertEqual(str(section), "section {key2 : 'value12', key4 : 'value14'}")
def test_update_setting(self): section = Section("section", None) section.append(Setting("key1", "value11")) section.append(Setting("key2", "value12")) section.update_setting("key1", new_value="value13") self.assertEqual(str(section), "section {key1 : 'value13', key2 : 'value12'}") section.update_setting("key1", "key3") self.assertEqual(str(section), "section {key3 : 'value13', key2 : 'value12'}") section.update_setting("key3", "key4", "value14") self.assertEqual(str(section), "section {key4 : 'value14', key2 : 'value12'}")
def test_apply_rename(self): # Initial file contents, *before* a patch was applied file_dict = {self.fa: ['1\n', '2\n', '3\n']} # A patch that was applied for some reason to make things complicated file_diff_dict = {} diff = Diff(file_dict[self.fa], rename=self.fa + '.renamed') diff.change_line(3, '3\n', '3_changed\n') ApplyPatchAction().apply( Result('origin', 'msg', diffs={self.fa: diff}), file_dict, file_diff_dict) # End file contents after the patch and the OpenEditorAction was # applied expected_file_dict = {self.fa: ['1\n', '3_changed\n']} section = Section('') section.append(Setting('editor', 'vim')) uut = OpenEditorAction() subprocess.call = self.fake_edit diff_dict = uut.apply_from_section( Result.from_values('origin', 'msg', self.fa), file_dict, file_diff_dict, section) for filename in diff_dict: file_dict[filename] = (file_diff_dict[filename].modified) self.assertEqual(file_dict, expected_file_dict) open(self.fa, 'w').close()
def test_apply_section_filters(self): section_one = Section('apply') section_one.append(Setting('tags', 'save')) filtered = _apply_section_filter('section_tags', [], [section_one]) self.assertEqual(filtered, [section_one])
def test_apply(self): file_dict = { "f_a": ["1\n", "2\n", "3\n"], "f_b": ["1\n", "2\n", "3\n"], "f_c": ["1\n", "2\n", "3\n"] } expected_file_dict = { "f_a": ["1\n", "3\n"], "f_b": ["1\n", "3_changed\n"], "f_c": ["1\n", "2\n", "3\n"] } diff_dict = {"f_b": Diff()} diff_dict["f_b"].change_line(3, "3\n", "3_changed\n") section = Section("") section.append(Setting("editor", "")) uut = OpenEditorAction() os.system = self.fake_edit diff_dict = uut.apply_from_section(Result("origin", "msg", "f_a"), file_dict, diff_dict, section) diff_dict = uut.apply_from_section(Result("origin", "msg", "f_b"), file_dict, diff_dict, section) for filename in diff_dict: file_dict[filename] = diff_dict[filename].apply( file_dict[filename]) self.assertEqual(file_dict, expected_file_dict)
def setUp(self): diff0 = Diff(['coler']) diff0.modify_line(1, 'color') diff1 = Diff(['coler']) diff1.modify_line(1, 'colour') diff2 = Diff(['coler']) diff2.modify_line(1, 'cooler') diff3 = Diff(['coler']) diff3.modify_line(1, 'coder') self.original_diff = {'filename': diff0} self.alternate_diff1 = {'filename': diff1} self.alternate_diff2 = {'filename': diff2} self.alternate_diff3 = {'filename': diff3} self.alternate_diffs = [ self.alternate_diff1, self.alternate_diff2, self.alternate_diff3 ] self.result = Result('origin', 'message', diffs=self.original_diff, alternate_diffs=self.alternate_diffs) self.original_file_dict = {'filename': ['coler']} self.section = Section('name') self.section.append(Setting('no_color', 'True')) self.uut1 = AlternatePatchAction(self.alternate_diff1, 1) self.uut2 = AlternatePatchAction(self.alternate_diff2, 2) self.uut3 = AlternatePatchAction(self.alternate_diff3, 3)
def test_setitem(self): uut = Section("section", None) uut["key1"] = "value1" self.assertEqual(str(uut), "section {key1 : 'value1'}") uut["key1"] = "changed_value1" self.assertEqual(str(uut), "section {key1 : 'changed_value1'}") uut["key1"] = Setting("any key", "value1") self.assertEqual(str(uut), "section {key1 : 'value1'}")
def test_section_tags_filter_no_tags(self): filter = available_filters['section_tags'] section = Section('sample') section.append(Setting('tags', 'save')) flag = filter(section, []) self.assertTrue(flag)
def test_setitem(self): uut = Section('section', None) uut['key1'] = 'value1' self.assertEqual(str(uut), "section {key1 : 'value1'}") uut['key1'] = 'changed_value1' self.assertEqual(str(uut), "section {key1 : 'changed_value1'}") uut['key1'] = Setting('any key', 'value1') self.assertEqual(str(uut), "section {key1 : 'value1'}")
def test_section_tags_filter_false(self): filter = available_filters['section_tags'] section = Section('sample') section.append(Setting('tags', 'save')) test_bear = TestBear(section, None) flag = filter(test_bear, ['change']) self.assertFalse(flag)
def test_extract_aspects_from_section_no_language(self): section = Section('section') section.append(Setting('aspects', 'commitmessage')) with self.assertRaisesRegex( AttributeError, 'Language was not found in configuration file. ' 'Usage of aspect-based configuration must include ' 'language information.'): extract_aspects_from_section(section)
def test_bear_dirs(self): section = Section("section", None) empty_bear_dirs_len = len(section.bear_dirs()) section.append(Setting("bear_dirs", "test1, test2 (1)")) self.assertEqual(len(section.bear_dirs()), empty_bear_dirs_len + 2) # Verify if bear directories are properly escaped root = get_config_directory(section) path = os.path.join(glob_escape(root), glob_escape("test2 (1)"), "**") self.assertIn(path, section.bear_dirs())
def test_bear_dirs(self): section = Section('section', None) empty_bear_dirs_len = len(section.bear_dirs()) section.append(Setting('bear_dirs', 'test1, test2 (1)')) self.assertEqual(len(section.bear_dirs()), empty_bear_dirs_len + 2) # Verify if bear directories are properly escaped root = get_config_directory(section) path = os.path.join(glob_escape(root), glob_escape('test2 (1)'), '**') self.assertIn(path, section.bear_dirs())
def test_enabled(self): uut = Section("name") self.assertTrue(uut.is_enabled([])) self.assertTrue(uut.is_enabled(["name", "wrongname"])) self.assertFalse(uut.is_enabled(["wrongname"])) uut.append(Setting("enabled", "false")) self.assertFalse(uut.is_enabled([])) self.assertFalse(uut.is_enabled(["wrong_name"])) self.assertTrue(uut.is_enabled(["name", "wrongname"]))
def test_from_section(self): section = Section('name') section.append(Setting('setting_one', ' 5')) section.append(Setting('raw_setting', ' 5s')) uut = TestObject.from_section(section) self.assertEqual(uut.setting_one, 5) self.assertEqual(str(uut.raw_setting), '5s') self.assertEqual(uut.setting_two, False) self.assertEqual(uut.setting_three, [1, 2]) self.assertEqual(str(uut.opt_raw_set), '5') section.append(Setting('setting_three', '2, 4')) section.append(Setting('opt_raw_set', 'tst ,')) uut = TestObject.from_section(section) self.assertEqual(uut.setting_one, 5) self.assertEqual(str(uut.raw_setting), '5s') self.assertEqual(uut.setting_two, False) self.assertEqual(uut.setting_three, ['2', '4']) self.assertEqual(str(uut.opt_raw_set), 'tst ,')
def test_from_section(self): section = Section("name") section.append(Setting("setting_one", " 5")) section.append(Setting("raw_setting", " 5s")) uut = TestObject.from_section(section) self.assertEqual(uut.setting_one, 5) self.assertEqual(str(uut.raw_setting), "5s") self.assertEqual(uut.setting_two, False) self.assertEqual(uut.setting_three, [1, 2]) self.assertEqual(str(uut.opt_raw_set), "5") section.append(Setting("setting_three", "2, 4")) section.append(Setting("opt_raw_set", "tst ,")) uut = TestObject.from_section(section) self.assertEqual(uut.setting_one, 5) self.assertEqual(str(uut.raw_setting), "5s") self.assertEqual(uut.setting_two, False) self.assertEqual(uut.setting_three, ["2", "4"]) self.assertEqual(str(uut.opt_raw_set), "tst ,")
def test_enabled(self): uut = Section('name') self.assertTrue(uut.is_enabled([])) self.assertTrue(uut.is_enabled(['name', 'wrongname'])) self.assertFalse(uut.is_enabled(['wrongname'])) uut.append(Setting('enabled', 'false')) self.assertFalse(uut.is_enabled([])) self.assertFalse(uut.is_enabled(['wrong_name'])) self.assertTrue(uut.is_enabled(['name', 'wrongname']))
def test_subl(self): file_dict = {"f_a": []} section = Section("") section.append(Setting("editor", "subl")) uut = OpenEditorAction() os.system = self.fake_edit_subl diff_dict = uut.apply_from_section(Result("origin", "msg", "f_a"), file_dict, {}, section) file_dict["f_a"] = diff_dict["f_a"].apply(file_dict["f_a"]) self.assertEqual(file_dict, file_dict)
def test_subl(self): file_dict = {self.fa: []} section = Section("") section.append(Setting("editor", "subl")) uut = OpenEditorAction() subprocess.call = self.fake_edit_subl diff_dict = uut.apply_from_section( Result.from_values("origin", "msg", self.fa), file_dict, {}, section) file_dict[self.fa] = diff_dict[self.fa].modified self.assertEqual(file_dict, file_dict)