summaryrefslogtreecommitdiff
path: root/pylint/testutils
diff options
context:
space:
mode:
Diffstat (limited to 'pylint/testutils')
-rw-r--r--pylint/testutils/functional/__init__.py2
-rw-r--r--pylint/testutils/functional/lint_module_output_update.py27
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())