class ShowBearsTest(unittest.TestCase): def setUp(self): self.console_printer = ConsolePrinter(print_colored=False) self.logs = LogCapture() self.logs.__enter__() deprecation_messages = [ ('root', 'WARNING', 'show_description parameter is deprecated'), ('root', 'WARNING', 'show_params parameter is deprecated') ] def tearDown(self): self.logs.__exit__(None, None, None) def test_show_bear_minimal(self): with retrieve_stdout() as stdout: show_bear(SomelocalBear, False, False, self.console_printer) self.assertEqual(stdout.getvalue(), 'SomelocalBear\n') self.logs.check(*self.deprecation_messages) def test_show_bear_desc_only(self): with retrieve_stdout() as stdout: show_bear(SomelocalBear, True, False, self.console_printer) self.assertEqual( stdout.getvalue(), 'SomelocalBear\n Some local-bear Description.\n\n') self.logs.check(*self.deprecation_messages) def test_show_bear_details_only(self): with retrieve_stdout() as stdout: show_bear(SomelocalBear, False, True, self.console_printer) self.assertEqual( stdout.getvalue(), 'SomelocalBear\n' ' The bear does not provide information about ' 'which languages it can analyze.\n\n' ' No needed settings.\n\n' ' No optional settings.\n\n' ' This bear does not provide information about ' 'what categories it can detect.\n\n' ' This bear cannot fix issues or does not ' 'provide information about what categories it ' 'can fix.\n\n Path:\n ' + repr(SomelocalBear.source_location) + '\n\n') self.logs.check(*self.deprecation_messages) def test_show_bear_long_without_content(self): with retrieve_stdout() as stdout: show_bear(SomelocalBear, True, True, self.console_printer) self.assertEqual( stdout.getvalue(), 'SomelocalBear\n' ' Some local-bear Description.\n\n' ' The bear does not provide information about ' 'which languages it can analyze.\n\n' ' No needed settings.\n\n' ' No optional settings.\n\n' ' This bear does not provide information about ' 'what categories it can detect.\n\n' ' This bear cannot fix issues or does not ' 'provide information about what categories it ' 'can fix.\n\n Path:\n ' + repr(SomelocalBear.source_location) + '\n\n') self.logs.check(*self.deprecation_messages) def test_show_bear_with_content(self): with retrieve_stdout() as stdout: show_bear(TestBear, True, True, self.console_printer) self.assertEqual( stdout.getvalue(), 'TestBear\n' ' Test bear Description.\n\n' ' Supported languages:\n' ' * F#\n' ' * Shakespearean Programming Language\n\n' ' Needed Settings:\n' ' * setting1: Required Setting.\n\n' ' Optional Settings:\n' ' * setting2: Optional Setting. (' "Optional, defaults to 'None'." ')\n\n' ' Can detect:\n * Formatting\n\n' ' Can fix:\n * Formatting\n\n Path:\n ' + repr(TestBear.source_location) + '\n\n') self.logs.check(*self.deprecation_messages) def test_show_bear_settings_only(self): with retrieve_stdout() as stdout: args = default_arg_parser().parse_args(['--show-settings']) show_bear(TestBear, False, False, self.console_printer, args) self.assertEqual( stdout.getvalue(), 'TestBear\n' ' Needed Settings:\n' ' * setting1: Required Setting.\n\n' ' Optional Settings:\n' ' * setting2: Optional Setting. (' "Optional, defaults to 'None'.)\n\n") self.logs.check(*self.deprecation_messages) def test_show_bears_empty(self): with retrieve_stdout() as stdout: show_bears({}, {}, True, True, self.console_printer) self.assertIn('No bears to show.', stdout.getvalue()) self.logs.check(*self.deprecation_messages) def test_show_bears_with_json(self): args = default_arg_parser().parse_args(['--json']) with retrieve_stdout() as stdout: show_bears({}, {}, True, True, self.console_printer, args) self.assertEqual('{\n "bears": []\n}\n', stdout.getvalue()) self.logs.check(*self.deprecation_messages) @patch('coalib.output.ConsoleInteraction.show_bear') def test_show_bears(self, show_bear): local_bears = OrderedDict([('default', [SomelocalBear]), ('test', [SomelocalBear])]) show_bears(local_bears, {}, True, True, self.console_printer) show_bear.assert_called_once_with(SomelocalBear, True, True, self.console_printer, None) self.logs.check(*self.deprecation_messages) def test_show_bears_sorted(self): local_bears = OrderedDict([('default', [SomelocalBear]), ('test', [aSomelocalBear])]) global_bears = OrderedDict([('default', [SomeglobalBear]), ('test', [BSomeglobalBear])]) with retrieve_stdout() as stdout: show_bears(local_bears, global_bears, False, False, self.console_printer) self.assertEqual( stdout.getvalue(), 'aSomelocalBear\n' 'BSomeglobalBear\n' 'SomeglobalBear\n' 'SomelocalBear\n') self.logs.check(*(self.deprecation_messages * 5)) def test_show_bears_capabilities(self): with retrieve_stdout() as stdout: show_language_bears_capabilities( { 'some_language': ({'Formatting', 'Security'}, {'Formatting'}) }, self.console_printer) self.assertIn( 'coala can do the following for SOME_LANGUAGE\n' ' Can detect only: Formatting, Security\n' ' Can fix : Formatting\n', stdout.getvalue()) show_language_bears_capabilities({'some_language': (set(), set())}, self.console_printer) self.assertIn('coala does not support some_language', stdout.getvalue()) show_language_bears_capabilities({}, self.console_printer) self.assertIn('There is no bear available for this language', stdout.getvalue()) show_language_bears_capabilities( {'some_language': ({'Formatting', 'Security'}, set())}, self.console_printer) self.assertIn( 'coala can do the following for SOME_LANGUAGE\n' ' Can detect only: Formatting, Security\n', stdout.getvalue())
class ShowBearsTest(unittest.TestCase): def setUp(self): self.console_printer = ConsolePrinter(print_colored=False) self.logs = LogCapture() self.logs.__enter__() deprecation_messages = [('root', 'WARNING', 'show_description parameter is deprecated'), ('root', 'WARNING', 'show_params parameter is deprecated')] def tearDown(self): self.logs.__exit__(None, None, None) def test_show_bear_minimal(self): with retrieve_stdout() as stdout: show_bear( SomelocalBear, False, False, self.console_printer) self.assertEqual(stdout.getvalue(), 'SomelocalBear\n') self.logs.check(*self.deprecation_messages) def test_show_bear_desc_only(self): with retrieve_stdout() as stdout: show_bear( SomelocalBear, True, False, self.console_printer) self.assertEqual( stdout.getvalue(), 'SomelocalBear\n Some local-bear Description.\n\n') self.logs.check(*self.deprecation_messages) def test_show_bear_details_only(self): with retrieve_stdout() as stdout: show_bear( SomelocalBear, False, True, self.console_printer) self.assertEqual(stdout.getvalue(), 'SomelocalBear\n' ' The bear does not provide information about ' 'which languages it can analyze.\n\n' ' No needed settings.\n\n' ' No optional settings.\n\n' ' This bear does not provide information about ' 'what categories it can detect.\n\n' ' This bear cannot fix issues or does not ' 'provide information about what categories it ' 'can fix.\n\n Path:\n ' + repr(SomelocalBear.source_location) + '\n\n') self.logs.check(*self.deprecation_messages) def test_show_bear_long_without_content(self): with retrieve_stdout() as stdout: show_bear( SomelocalBear, True, True, self.console_printer) self.assertEqual(stdout.getvalue(), 'SomelocalBear\n' ' Some local-bear Description.\n\n' ' The bear does not provide information about ' 'which languages it can analyze.\n\n' ' No needed settings.\n\n' ' No optional settings.\n\n' ' This bear does not provide information about ' 'what categories it can detect.\n\n' ' This bear cannot fix issues or does not ' 'provide information about what categories it ' 'can fix.\n\n Path:\n ' + repr(SomelocalBear.source_location) + '\n\n') self.logs.check(*self.deprecation_messages) def test_show_bear_with_content(self): with retrieve_stdout() as stdout: show_bear(TestBear, True, True, self.console_printer) self.assertEqual(stdout.getvalue(), 'TestBear\n' ' Test bear Description.\n\n' ' Supported languages:\n' ' * F#\n' ' * Shakespearean Programming Language\n\n' ' Needed Settings:\n' ' * setting1: Required Setting.\n\n' ' Optional Settings:\n' ' * setting2: Optional Setting. (' "Optional, defaults to 'None'." ')\n\n' ' Can detect:\n * Formatting\n\n' ' Can fix:\n * Formatting\n\n Path:\n ' + repr(TestBear.source_location) + '\n\n') self.logs.check(*self.deprecation_messages) def test_show_bear_settings_only(self): with retrieve_stdout() as stdout: args = default_arg_parser().parse_args(['--show-settings']) show_bear(TestBear, False, False, self.console_printer, args) self.assertEqual(stdout.getvalue(), 'TestBear\n' ' Needed Settings:\n' ' * setting1: Required Setting.\n\n' ' Optional Settings:\n' ' * setting2: Optional Setting. (' "Optional, defaults to 'None'.)\n\n") self.logs.check(*self.deprecation_messages) def test_show_bears_empty(self): with retrieve_stdout() as stdout: show_bears({}, {}, True, True, self.console_printer) self.assertIn('No bears to show.', stdout.getvalue()) self.logs.check(*self.deprecation_messages) def test_show_bears_with_json(self): args = default_arg_parser().parse_args(['--json']) with retrieve_stdout() as stdout: show_bears({}, {}, True, True, self.console_printer, args) self.assertEqual('{\n "bears": []\n}\n', stdout.getvalue()) self.logs.check(*self.deprecation_messages) @patch('coalib.output.ConsoleInteraction.show_bear') def test_show_bears(self, show_bear): local_bears = OrderedDict([('default', [SomelocalBear]), ('test', [SomelocalBear])]) show_bears(local_bears, {}, True, True, self.console_printer) show_bear.assert_called_once_with(SomelocalBear, True, True, self.console_printer, None) self.logs.check(*self.deprecation_messages) def test_show_bears_sorted(self): local_bears = OrderedDict([('default', [SomelocalBear]), ('test', [aSomelocalBear])]) global_bears = OrderedDict([('default', [SomeglobalBear]), ('test', [BSomeglobalBear])]) with retrieve_stdout() as stdout: show_bears(local_bears, global_bears, False, False, self.console_printer) self.assertEqual(stdout.getvalue(), 'aSomelocalBear\n' 'BSomeglobalBear\n' 'SomeglobalBear\n' 'SomelocalBear\n') self.logs.check(*(self.deprecation_messages*5)) def test_show_bears_capabilities(self): with retrieve_stdout() as stdout: show_language_bears_capabilities( {'some_language': ( {'Formatting', 'Security'}, {'Formatting'})}, self.console_printer) self.assertIn('coala can do the following for SOME_LANGUAGE\n' ' Can detect only: Formatting, Security\n' ' Can fix : Formatting\n', stdout.getvalue()) show_language_bears_capabilities( {'some_language': (set(), set())}, self.console_printer) self.assertIn('coala does not support some_language', stdout.getvalue()) show_language_bears_capabilities( {}, self.console_printer) self.assertIn( 'There is no bear available for this language', stdout.getvalue()) show_language_bears_capabilities( {'some_language': ({'Formatting', 'Security'}, set())}, self.console_printer) self.assertIn('coala can do the following for SOME_LANGUAGE\n' ' Can detect only: Formatting, Security\n', stdout.getvalue())