diff options
Diffstat (limited to 'tests/unittest_reporting.py')
-rw-r--r-- | tests/unittest_reporting.py | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/tests/unittest_reporting.py b/tests/unittest_reporting.py new file mode 100644 index 000000000..a374e1e3e --- /dev/null +++ b/tests/unittest_reporting.py @@ -0,0 +1,81 @@ +# Copyright (c) 2013-2014 LOGILAB S.A. (Paris, FRANCE) <contact@logilab.fr> +# Copyright (c) 2014-2017 Claudiu Popa <pcmanticore@gmail.com> +# Copyright (c) 2014 Calin Don <calin.don@gmail.com> +# Copyright (c) 2014 Google, Inc. +# Copyright (c) 2014 Arun Persaud <arun@nubati.net> +# Copyright (c) 2015 Ionel Cristian Maries <contact@ionelmc.ro> +# Copyright (c) 2016-2017 Derek Gustafson <degustaf@gmail.com> +# Copyright (c) 2018 Sushobhit <31987769+sushobhit27@users.noreply.github.com> + +# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html +# For details: https://github.com/PyCQA/pylint/blob/master/COPYING + +import warnings +from io import StringIO + +import pytest + +from pylint import checkers +from pylint.lint import PyLinter +from pylint.reporters.text import ParseableTextReporter, TextReporter + + +@pytest.fixture(scope="module") +def reporter(reporter): + return TextReporter + + +@pytest.fixture(scope="module") +def disable(disable): + return ["I"] + + +def test_template_option(linter): + output = StringIO() + linter.reporter.set_output(output) + linter.set_option("msg-template", "{msg_id}:{line:03d}") + linter.open() + linter.set_current_module("0123") + linter.add_message("C0301", line=1, args=(1, 2)) + linter.add_message("line-too-long", line=2, args=(3, 4)) + assert ( + output.getvalue() == "************* Module 0123\n" "C0301:001\n" "C0301:002\n" + ) + + +def test_parseable_output_deprecated(): + with warnings.catch_warnings(record=True) as cm: + warnings.simplefilter("always") + ParseableTextReporter() + + assert len(cm) == 1 + assert isinstance(cm[0].message, DeprecationWarning) + + +def test_parseable_output_regression(): + output = StringIO() + with warnings.catch_warnings(record=True): + linter = PyLinter(reporter=ParseableTextReporter()) + + checkers.initialize(linter) + linter.config.persistent = 0 + linter.reporter.set_output(output) + linter.set_option("output-format", "parseable") + linter.open() + linter.set_current_module("0123") + linter.add_message("line-too-long", line=1, args=(1, 2)) + assert ( + output.getvalue() == "************* Module 0123\n" + "0123:1: [C0301(line-too-long), ] " + "Line too long (1/2)\n" + ) + + +def test_display_results_is_renamed(): + class CustomReporter(TextReporter): + def _display(self, layout): + return None + + reporter = CustomReporter() + with pytest.raises(AttributeError): + reporter.display_results |