def main(): arg_parser = _get_arg_parser() args = arg_parser.parse_args() logging.basicConfig(stream=sys.stdout) printer = ConsolePrinter() logging.getLogger(__name__) fpc = None project_dir = os.getcwd() if args.green_mode: args.non_interactive = None args.no_filter_by_capabilities = None args.incomplete_sections = None if not args.non_interactive and not args.green_mode: fpc = FilePathCompleter() fpc.activate() print_welcome_message(printer) printer.print(PROJECT_DIR_HELP) project_dir = ask_question('What is your project directory?', default=project_dir, typecast=valid_path) fpc.deactivate() project_files, ignore_globs = get_project_files(None, printer, project_dir, fpc, args.non_interactive) used_languages = list(get_used_languages(project_files)) print_used_languages(printer, used_languages) extracted_information = collect_info(project_dir) relevant_bears = filter_relevant_bears(used_languages, printer, arg_parser, extracted_information) if args.green_mode: collect_bear_settings(relevant_bears) print_relevant_bears(printer, relevant_bears) if args.non_interactive and not args.incomplete_sections: unusable_bears = get_non_optional_settings_bears(relevant_bears) remove_unusable_bears(relevant_bears, unusable_bears) print_relevant_bears(printer, relevant_bears, 'usable') settings = generate_settings(project_dir, project_files, ignore_globs, relevant_bears, extracted_information, args.incomplete_sections) write_coafile(printer, project_dir, settings)
def test_bear_test_fun_1(self): from pyprint.ConsolePrinter import ConsolePrinter printer = ConsolePrinter() bears = {'Python': [TestLocalBear, TestGlobalBear]} relevant_bears = {'test': {TestLocalBear, TestGlobalBear, }} bear_settings_obj = collect_bear_settings(relevant_bears) file_dict = {'A.py': {'a\n', 'b\n'}, 'C.py': {'c\n', 'd\n'}} dir_path = str(Path(__file__).parent) + os.sep contents = initialize_project_data(dir_path, []) file_names = ['A.py', 'C.py'] non_op_results, unified_results = bear_test_fun( bears, bear_settings_obj, file_dict, [], contents, file_names, 5, 5, printer) test_non_op_results = [{TestLocalBear: [{'filename': 'A.py'}, {'filename': 'C.py'}]}, {TestGlobalBear: [{}]}] test_unified_results = [{TestLocalBear: [{'filename': 'A.py', 'yield_results': False}, {'filename': 'C.py', 'yield_results': False}]}, {TestGlobalBear: [{'yield_results': False}]}] self.assertCountEqual(non_op_results[1][TestGlobalBear], test_non_op_results[1][TestGlobalBear]) self.assertCountEqual(unified_results[1][TestGlobalBear], test_unified_results[1][TestGlobalBear]) self.assertCountEqual(non_op_results[0][TestLocalBear], test_non_op_results[0][TestLocalBear]) self.assertCountEqual(unified_results[0][TestLocalBear], test_unified_results[0][TestLocalBear])
def test_bear_test_fun_4(self): from pyprint.ConsolePrinter import ConsolePrinter printer = ConsolePrinter() bears = {'Python': [AnotherTestLocalDepBear]} relevant_bears = {'test': {AnotherTestLocalDepBear}} bear_settings_obj = collect_bear_settings(relevant_bears) file_dict = {'A.py': {'a\n', 'b\n'}, 'C.py': {'c\n', 'd\n'}} dir_path = str(Path(__file__).parent) + os.sep contents = initialize_project_data(dir_path, []) file_names = ['A.py', 'C.py'] non_op_results, unified_results = bear_test_fun( bears, bear_settings_obj, file_dict, [], contents, file_names, 1, 1, printer) print('nonop:', non_op_results) print('op:', unified_results) test_results = [{ AnotherTestLocalDepBear: [{ 'filename': 'A.py' }, { 'filename': 'C.py' }] }] self.assertCountEqual(non_op_results[0][AnotherTestLocalDepBear], test_results[0][AnotherTestLocalDepBear]) self.assertCountEqual(unified_results, [None])
def test_get_kwargs_2(self): relevant_bears = { 'test': { AllKindsOfSettingsBaseBear, } } __location__ = os.path.realpath( os.path.join(os.getcwd(), os.path.dirname(__file__))) dir_path = str(Path(__file__).parent) + os.sep ignore_globs = ['*pycache*', '**.pyc', '**.orig'] bear_settings_obj = collect_bear_settings(relevant_bears) bear_settings_obj[0].non_optional_settings optional_settings = bear_settings_obj[0].optional_settings contents = initialize_project_data(dir_path, ignore_globs) contents = { 'dir_structure': contents, settings_key: [{ 'some_rubbish_setting': 'some_rubbish', 'max_line_lengths': 60 }] } kwargs = get_kwargs(optional_settings, [AllKindsOfSettingsBaseBear], contents, __location__) test_kwargs = {'use_space': [True, False], 'use_tab': [True, False]} self.assertEqual(kwargs, test_kwargs)
def test_bear_test_fun_1(self): from pyprint.ConsolePrinter import ConsolePrinter printer = ConsolePrinter() bears = {'Python': [TestLocalBear, TestGlobalBear]} relevant_bears = { 'test': { TestLocalBear, TestGlobalBear, } } bear_settings_obj = collect_bear_settings(relevant_bears) file_dict = {'A.py': {'a\n', 'b\n'}, 'C.py': {'c\n', 'd\n'}} dir_path = str(Path(__file__).parent) + os.sep contents = initialize_project_data(dir_path, []) file_names = ['A.py', 'C.py'] non_op_results, unified_results = bear_test_fun( bears, bear_settings_obj, file_dict, [], contents, file_names, 5, 5, printer) test_non_op_results = [{ TestLocalBear: [{ 'filename': 'A.py' }, { 'filename': 'C.py' }] }, { TestGlobalBear: [{}] }] test_unified_results = [{ TestLocalBear: [{ 'filename': 'A.py', 'yield_results': False }, { 'filename': 'C.py', 'yield_results': False }] }, { TestGlobalBear: [{ 'yield_results': False }] }] self.assertCountEqual(non_op_results[1][TestGlobalBear], test_non_op_results[1][TestGlobalBear]) self.assertCountEqual(unified_results[1][TestGlobalBear], test_unified_results[1][TestGlobalBear]) self.assertCountEqual(non_op_results[0][TestLocalBear], test_non_op_results[0][TestLocalBear]) self.assertCountEqual(unified_results[0][TestLocalBear], test_unified_results[0][TestLocalBear])
def test_bear_test_fun_3(self): from pyprint.ConsolePrinter import ConsolePrinter printer = ConsolePrinter() bears = {'Python': [TestLocalDepBear]} relevant_bears = {'test': {TestLocalDepBear}} bear_settings_obj = collect_bear_settings(relevant_bears) file_dict = {'A.py': {'a\n', 'b\n'}, 'C.py': {'c\n', 'd\n'}} dir_path = str(Path(__file__).parent) + os.sep contents = initialize_project_data(dir_path, []) file_names = ['A.py', 'C.py'] non_op_results, unified_results = bear_test_fun( bears, bear_settings_obj, file_dict, [], contents, file_names, 1, 1, printer) print('nonop:', non_op_results) print('op:', unified_results) test_results = [{TestLocalDepBear: []}] self.assertCountEqual(non_op_results[0][TestLocalDepBear], test_results[0][TestLocalDepBear]) self.assertCountEqual(unified_results, [None])
def test_get_kwargs_2(self): relevant_bears = {'test': {AllKindsOfSettingsBaseBear, }} __location__ = os.path.realpath( os.path.join(os.getcwd(), os.path.dirname(__file__))) dir_path = str(Path(__file__).parent) + os.sep ignore_globs = ['*pycache*', '**.pyc', '**.orig'] bear_settings_obj = collect_bear_settings(relevant_bears) bear_settings_obj[0].non_optional_settings optional_settings = bear_settings_obj[0].optional_settings contents = initialize_project_data(dir_path, ignore_globs) contents = {'dir_structure': contents, settings_key: [{'some_rubbish_setting': 'some_rubbish', 'max_line_lengths': 60}]} kwargs = get_kwargs(optional_settings, [AllKindsOfSettingsBaseBear], contents, __location__) test_kwargs = {'use_space': [True, False], 'use_tab': [True, False]} self.assertEqual(kwargs, test_kwargs)
def test_collect_bear_settings(self): relevant_bears = { 'test': { AllKindsOfSettingsDependentBear, AllKindsOfSettingsDependentDecoratedBear, AllKindsOfSettingsBaseBear, BearA, SomeLinterBear, LinterBearWithCreateArguments, LinterBearWithParameters } } bear_settings_obj = collect_bear_settings(relevant_bears) # The following test is for testing out the sorting of settings # into Type bool and other Types using the test bear # AllKindsOfSettingsDependentBear. This bear has all kinds of # possible setting types and is dependent on another similar # kind of bear so that the non-optional settings from the # base bear also show up here. k = 0 for index, i in enumerate(bear_settings_obj): if i.bear == AllKindsOfSettingsDependentBear: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, ['use_bear', 'use_bears']) self.assertCountEqual( obj.settings_others, ['config', 'max_line_lengths', 'no_line', 'configs', 'no_lines']) obj = bear_settings_obj[k].optional_settings self.assertCountEqual( obj.settings_bool, ['use_spaces', 'use_tabs', 'chars', 'use_space', 'use_tab']) self.assertCountEqual(obj.settings_others, [ 'max_line_lengths', 'no_chars', 'dependency_results', 'dependency_result', 'no_char', 'max_line_length' ]) # The following test is for testing out the sorting of settings # into Type bool and other Types using the test bear # AllKindsOfSettingsDependentDecoratedBear. This bear has all kinds of # possible setting types and is dependent on another similar # kind of bear so that the non-optional settings from the # base bear also show up here. Moreover the run methods of both these # bears are decorated to test out whether the code is able to extract # out the original function from the decorated methods and provide # us with the correct bear settings. for index, i in enumerate(bear_settings_obj): if i.bear == AllKindsOfSettingsDependentDecoratedBear: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, ['use_bear', 'use_bears']) self.assertCountEqual( obj.settings_others, ['config', 'max_line_lengths', 'no_line', 'configs', 'no_lines']) obj = bear_settings_obj[k].optional_settings self.assertCountEqual( obj.settings_bool, ['use_spaces', 'use_tabs', 'chars', 'use_space', 'use_tab']) self.assertCountEqual(obj.settings_others, [ 'max_line_lengths', 'no_chars', 'dependency_results', 'dependency_result', 'no_char', 'max_line_length' ]) # The following test is for testing out the sorting of settings # into Type bool and other Types using the test bear # AllKindsOfSettingsBaseBear. This bear has all kinds of # possible setting types. for index, i in enumerate(bear_settings_obj): if i.bear == AllKindsOfSettingsBaseBear: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, ['use_bear']) self.assertCountEqual(obj.settings_others, ['config', 'max_line_lengths', 'no_line']) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, ['use_space', 'use_tab']) self.assertCountEqual( obj.settings_others, ['max_line_length', 'no_char', 'dependency_result']) # The following test is for testing out the sorting of settings # into Type bool and other Types using the test bear # BearA. This bear is dependent on BearB which is further dependent # on BearC to test out that settings from BearC # are appearing over here and the parsing of the bear dependency # tree is done right. for index, i in enumerate(bear_settings_obj): if i.bear == BearA: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, ['use_spaces']) self.assertCountEqual(obj.settings_others, []) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, []) self.assertCountEqual(obj.settings_others, ['a']) # The following tests are for testing out the sorting of settings # into Type bool and other Types using the test bears # SomeLinterBear and LinterBearWithParameters. These tests ensure that # the method create_arguments() is parsed correctly for its settings # for linter bears. for index, i in enumerate(bear_settings_obj): if i.bear == SomeLinterBear: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, []) self.assertCountEqual(obj.settings_others, []) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, []) self.assertCountEqual(obj.settings_others, []) # LinterBearWithParameters is also added because SomeLinterBear did not # have any valid output to test against. for index, i in enumerate(bear_settings_obj): if i.bear == LinterBearWithParameters: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, []) self.assertCountEqual(obj.settings_others, ['nonopsetting']) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, ['someoptionalsetting']) self.assertCountEqual(obj.settings_others, []) # The following test is for testing out the sorting of settings # into Type bool and other Types using the test bear # LinterBearWithCreateArguments. This test is added primarily to # check that the settings from create_arguments() as well as # generate_config() are populated inside the classes # (to store metadata) for which # the test is being written, for linter bears. for index, i in enumerate(bear_settings_obj): if i.bear == LinterBearWithCreateArguments: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, ['yes']) self.assertCountEqual(obj.settings_others, ['nonopsetting', 'rick']) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, ['someoptionalsetting']) self.assertCountEqual(obj.settings_others, ['makman2'])
def main(): global MAX_ARGS_GREEN_MODE, MAX_VALUES_GREEN_MODE arg_parser = _get_arg_parser() args = arg_parser.parse_args() logging.basicConfig(stream=sys.stdout) printer = ConsolePrinter() logging.getLogger(__name__) fpc = None project_dir = os.getcwd() if args.green_mode: args.no_filter_by_capabilities = None args.incomplete_sections = None if args.max_args: MAX_ARGS_GREEN_MODE = args.max_args if args.max_values: MAX_VALUES_GREEN_MODE = args.max_values if not args.green_mode and (args.max_args or args.max_values): logging.warning(' --max-args and --max-values can be used ' 'only with --green-mode. The arguments will ' 'be ignored.') if not args.non_interactive and not args.green_mode: fpc = FilePathCompleter() fpc.activate() print_welcome_message(printer) printer.print(PROJECT_DIR_HELP) project_dir = ask_question( 'What is your project directory?', default=project_dir, typecast=valid_path) fpc.deactivate() project_files, ignore_globs = get_project_files( None, printer, project_dir, fpc, args.non_interactive) used_languages = list(get_used_languages(project_files)) used_languages = ask_to_select_languages(used_languages, printer, args.non_interactive) extracted_information = collect_info(project_dir) relevant_bears = filter_relevant_bears( used_languages, printer, arg_parser, extracted_information) if args.green_mode: bear_settings_obj = collect_bear_settings(relevant_bears) green_mode( project_dir, ignore_globs, relevant_bears, bear_settings_obj, MAX_ARGS_GREEN_MODE, MAX_VALUES_GREEN_MODE, project_files, printer, ) exit() print_relevant_bears(printer, relevant_bears) if args.non_interactive and not args.incomplete_sections: unusable_bears = get_non_optional_settings_bears(relevant_bears) remove_unusable_bears(relevant_bears, unusable_bears) print_relevant_bears(printer, relevant_bears, 'usable') settings = generate_settings( project_dir, project_files, ignore_globs, relevant_bears, extracted_information, args.incomplete_sections) write_coafile(printer, project_dir, settings)
def main(): global MAX_ARGS_GREEN_MODE, MAX_VALUES_GREEN_MODE arg_parser = _get_arg_parser() args = arg_parser.parse_args() logging.basicConfig(stream=sys.stdout) printer = ConsolePrinter() logging.getLogger(__name__) fpc = None project_dir = os.getcwd() if args.green_mode: args.no_filter_by_capabilities = None args.incomplete_sections = None if args.max_args: MAX_ARGS_GREEN_MODE = args.max_args if args.max_values: MAX_VALUES_GREEN_MODE = args.max_values if not args.green_mode and (args.max_args or args.max_values): logging.warning(' --max-args and --max-values can be used ' 'only with --green-mode. The arguments will ' 'be ignored.') if not args.non_interactive and not args.green_mode: fpc = FilePathCompleter() fpc.activate() print_welcome_message(printer) printer.print(PROJECT_DIR_HELP) project_dir = ask_question('What is your project directory?', default=project_dir, typecast=valid_path) fpc.deactivate() project_files, ignore_globs = get_project_files(None, printer, project_dir, fpc, args.non_interactive) used_languages = list(get_used_languages(project_files)) used_languages = ask_to_select_languages(used_languages, printer, args.non_interactive) extracted_information = collect_info(project_dir) relevant_bears = filter_relevant_bears(used_languages, printer, arg_parser, extracted_information) if args.green_mode: bear_settings_obj = collect_bear_settings(relevant_bears) green_mode( project_dir, ignore_globs, relevant_bears, bear_settings_obj, MAX_ARGS_GREEN_MODE, MAX_VALUES_GREEN_MODE, project_files, printer, ) exit() print_relevant_bears(printer, relevant_bears) if args.non_interactive and not args.incomplete_sections: unusable_bears = get_non_optional_settings_bears(relevant_bears) remove_unusable_bears(relevant_bears, unusable_bears) print_relevant_bears(printer, relevant_bears, 'usable') settings = generate_settings(project_dir, project_files, ignore_globs, relevant_bears, extracted_information, args.incomplete_sections) write_coafile(printer, project_dir, settings)
def test_collect_bear_settings(self): relevant_bears = {'test': {AllKindsOfSettingsDependentBear, AllKindsOfSettingsDependentDecoratedBear, AllKindsOfSettingsBaseBear, BearA, SomeLinterBear, LinterBearWithCreateArguments, LinterBearWithParameters}} bear_settings_obj = collect_bear_settings(relevant_bears) # The following test is for testing out the sorting of settings # into Type bool and other Types using the test bear # AllKindsOfSettingsDependentBear. This bear has all kinds of # possible setting types and is dependent on another similar # kind of bear so that the non-optional settings from the # base bear also show up here. k = 0 for index, i in enumerate(bear_settings_obj): if i.bear == AllKindsOfSettingsDependentBear: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, ['use_bear', 'use_bears']) self.assertCountEqual(obj.settings_others, ['config', 'max_line_lengths', 'no_line', 'configs', 'no_lines']) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, ['use_spaces', 'use_tabs', 'chars', 'use_space', 'use_tab']) self.assertCountEqual(obj.settings_others, ['max_line_lengths', 'no_chars', 'dependency_results', 'dependency_result', 'no_char', 'max_line_length']) # The following test is for testing out the sorting of settings # into Type bool and other Types using the test bear # AllKindsOfSettingsDependentDecoratedBear. This bear has all kinds of # possible setting types and is dependent on another similar # kind of bear so that the non-optional settings from the # base bear also show up here. Moreover the run methods of both these # bears are decorated to test out whether the code is able to extract # out the original function from the decorated methods and provide # us with the correct bear settings. for index, i in enumerate(bear_settings_obj): if i.bear == AllKindsOfSettingsDependentDecoratedBear: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, ['use_bear', 'use_bears']) self.assertCountEqual(obj.settings_others, ['config', 'max_line_lengths', 'no_line', 'configs', 'no_lines']) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, ['use_spaces', 'use_tabs', 'chars', 'use_space', 'use_tab']) self.assertCountEqual(obj.settings_others, ['max_line_lengths', 'no_chars', 'dependency_results', 'dependency_result', 'no_char', 'max_line_length']) # The following test is for testing out the sorting of settings # into Type bool and other Types using the test bear # AllKindsOfSettingsBaseBear. This bear has all kinds of # possible setting types. for index, i in enumerate(bear_settings_obj): if i.bear == AllKindsOfSettingsBaseBear: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, ['use_bear']) self.assertCountEqual(obj.settings_others, ['config', 'max_line_lengths', 'no_line']) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, ['use_space', 'use_tab']) self.assertCountEqual(obj.settings_others, ['max_line_length', 'no_char', 'dependency_result']) # The following test is for testing out the sorting of settings # into Type bool and other Types using the test bear # BearA. This bear is dependent on BearB which is further dependent # on BearC to test out that settings from BearC # are appearing over here and the parsing of the bear dependency # tree is done right. for index, i in enumerate(bear_settings_obj): if i.bear == BearA: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, ['use_spaces']) self.assertCountEqual(obj.settings_others, []) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, []) self.assertCountEqual(obj.settings_others, ['a']) # The following tests are for testing out the sorting of settings # into Type bool and other Types using the test bears # SomeLinterBear and LinterBearWithParameters. These tests ensure that # the method create_arguments() is parsed correctly for its settings # for linter bears. for index, i in enumerate(bear_settings_obj): if i.bear == SomeLinterBear: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, []) self.assertCountEqual(obj.settings_others, []) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, []) self.assertCountEqual(obj.settings_others, []) # LinterBearWithParameters is also added because SomeLinterBear did not # have any valid output to test against. for index, i in enumerate(bear_settings_obj): if i.bear == LinterBearWithParameters: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, []) self.assertCountEqual(obj.settings_others, ['nonopsetting']) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, ['someoptionalsetting']) self.assertCountEqual(obj.settings_others, []) # The following test is for testing out the sorting of settings # into Type bool and other Types using the test bear # LinterBearWithCreateArguments. This test is added primarily to # check that the settings from create_arguments() as well as # generate_config() are populated inside the classes # (to store metadata) for which # the test is being written, for linter bears. for index, i in enumerate(bear_settings_obj): if i.bear == LinterBearWithCreateArguments: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, ['yes']) self.assertCountEqual(obj.settings_others, ['nonopsetting', 'rick']) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, ['someoptionalsetting']) self.assertCountEqual(obj.settings_others, ['makman2'])
def test_collect_bear_settings(self): relevant_bears = { 'test': { AllKindsOfSettingsDependentBear, AllKindsOfSettingsDependentDecoratedBear, AllKindsOfSettingsBaseBear, BearA } } bear_settings_obj = collect_bear_settings(relevant_bears) # The following test is for testing out the sorting of settings # into Type bool and other Types using the test bear # AllKindsOfSettingsDependentBear. This bear has all kinds of # possible setting types and is dependent on another similar # kind of bear so that the non-optional settings from the # base bear also show up here. k = 0 for index, i in enumerate(bear_settings_obj): if i.bear == AllKindsOfSettingsDependentBear: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, ['use_bear', 'use_bears']) self.assertCountEqual( obj.settings_others, ['config', 'max_line_lengths', 'no_line', 'configs', 'no_lines']) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, ['use_spaces', 'use_tabs', 'chars']) self.assertCountEqual( obj.settings_others, ['max_line_lengths', 'no_chars', 'dependency_results']) # The following test is for testing out the sorting of settings # into Type bool and other Types using the test bear # AllKindsOfSettingsDependentDecoratedBear. This bear has all kinds of # possible setting types and is dependent on another similar # kind of bear so that the non-optional settings from the # base bear also show up here. Moreover the run methods of both these # bears are decorated to test out whether the code is able to extract # out the original function from the decorated methods and provide # us with the correct bear settings. for index, i in enumerate(bear_settings_obj): if i.bear == AllKindsOfSettingsDependentDecoratedBear: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, ['use_bear', 'use_bears']) self.assertCountEqual( obj.settings_others, ['config', 'max_line_lengths', 'no_line', 'configs', 'no_lines']) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, ['use_spaces', 'use_tabs', 'chars']) self.assertCountEqual( obj.settings_others, ['max_line_lengths', 'no_chars', 'dependency_results']) # The following test is for testing out the sorting of settings # into Type bool and other Types using the test bear # AllKindsOfSettingsBaseBear. This bear has all kinds of # possible setting types. for index, i in enumerate(bear_settings_obj): if i.bear == AllKindsOfSettingsBaseBear: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, ['use_bear']) self.assertCountEqual(obj.settings_others, ['config', 'max_line_lengths', 'no_line']) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, ['use_space', 'use_tab']) self.assertCountEqual( obj.settings_others, ['max_line_length', 'no_char', 'dependency_result']) # The following test is for testing out the sorting of settings # into Type bool and other Types using the test bear # BearA. This bear is dependent on BearB which is further dependent # on BearC to test out that non-optional settings from BearC # are appearring over here and the parsing of the bear dependency # tree is done right. for index, i in enumerate(bear_settings_obj): if i.bear == BearA: k = index break obj = bear_settings_obj[k].non_optional_settings self.assertCountEqual(obj.settings_bool, ['use_spaces']) self.assertCountEqual(obj.settings_others, []) obj = bear_settings_obj[k].optional_settings self.assertCountEqual(obj.settings_bool, []) self.assertCountEqual(obj.settings_others, [])