summaryrefslogtreecommitdiffstats
path: root/test/test_formatter.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 12:06:49 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 12:06:49 +0000
commit2fe34b6444502079dc0b84365ce82dbc92de308e (patch)
tree8fedcab52bbbc3db6c5aa909a88a7a7b81685018 /test/test_formatter.py
parentInitial commit. (diff)
downloadansible-lint-1f847810e1dcffeab102ff853e50a09833fad025.tar.xz
ansible-lint-1f847810e1dcffeab102ff853e50a09833fad025.zip
Adding upstream version 6.17.2.upstream/6.17.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/test_formatter.py')
-rw-r--r--test/test_formatter.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/test/test_formatter.py b/test/test_formatter.py
new file mode 100644
index 0000000..68f0508
--- /dev/null
+++ b/test/test_formatter.py
@@ -0,0 +1,68 @@
+"""Test for output formatter."""
+# Copyright (c) 2016 Will Thames <will@thames.id.au>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+import pathlib
+
+from ansiblelint.errors import MatchError
+from ansiblelint.file_utils import Lintable
+from ansiblelint.formatters import Formatter
+from ansiblelint.rules import AnsibleLintRule
+
+rule = AnsibleLintRule()
+rule.id = "TCF0001"
+formatter = Formatter(pathlib.Path.cwd(), display_relative_path=True)
+# These details would generate a rich rendering error if not escaped:
+DETAILS = "Some [/tmp/foo] details."
+
+
+def test_format_coloured_string() -> None:
+ """Test formetting colored."""
+ match = MatchError(
+ message="message",
+ lineno=1,
+ details=DETAILS,
+ lintable=Lintable("filename.yml", content=""),
+ rule=rule,
+ )
+ formatter.apply(match)
+
+
+def test_unicode_format_string() -> None:
+ """Test formatting unicode."""
+ match = MatchError(
+ message="\U0001f427",
+ lineno=1,
+ details=DETAILS,
+ lintable=Lintable("filename.yml", content=""),
+ rule=rule,
+ )
+ formatter.apply(match)
+
+
+def test_dict_format_line() -> None:
+ """Test formatting dictionary details."""
+ match = MatchError(
+ message="xyz",
+ lineno=1,
+ details={"hello": "world"}, # type: ignore[arg-type]
+ lintable=Lintable("filename.yml", content=""),
+ rule=rule,
+ )
+ formatter.apply(match)