diff options
Diffstat (limited to 'pylint/testutils')
-rw-r--r-- | pylint/testutils/functional/__init__.py | 2 | ||||
-rw-r--r-- | pylint/testutils/functional/lint_module_output_update.py | 27 |
2 files changed, 29 insertions, 0 deletions
diff --git a/pylint/testutils/functional/__init__.py b/pylint/testutils/functional/__init__.py index a97eea0bb..607c22cb4 100644 --- a/pylint/testutils/functional/__init__.py +++ b/pylint/testutils/functional/__init__.py @@ -7,12 +7,14 @@ __all__ = [ "get_functional_test_files_from_directory", "NoFileError", "parse_python_version", + "LintModuleOutputUpdate", ] from pylint.testutils.functional.find_functional_tests import ( REASONABLY_DISPLAYABLE_VERTICALLY, get_functional_test_files_from_directory, ) +from pylint.testutils.functional.lint_module_output_update import LintModuleOutputUpdate from pylint.testutils.functional.test_file import ( FunctionalTestFile, NoFileError, diff --git a/pylint/testutils/functional/lint_module_output_update.py b/pylint/testutils/functional/lint_module_output_update.py new file mode 100644 index 000000000..113f6448f --- /dev/null +++ b/pylint/testutils/functional/lint_module_output_update.py @@ -0,0 +1,27 @@ +# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html +# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE + +import csv +import os + +from pylint.testutils.lint_module_test import LintModuleTest + + +class LintModuleOutputUpdate(LintModuleTest): + """If message files should be updated instead of checked.""" + + class TestDialect(csv.excel): + delimiter = ":" + lineterminator = "\n" + + csv.register_dialect("test", TestDialect) + + def _check_output_text(self, _, expected_output, actual_output): + if not expected_output and not actual_output: + if os.path.exists(self._test_file.expected_output): + os.remove(self._test_file.expected_output) + return + with open(self._test_file.expected_output, "w", encoding="utf-8") as f: + writer = csv.writer(f, dialect="test") + for line in actual_output: + writer.writerow(line.to_csv()) |