# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html # For details: https://github.com/pylint-dev/pylint/blob/main/LICENSE # Copyright (c) https://github.com/pylint-dev/pylint/blob/main/CONTRIBUTORS.txt """Tests for the misc checker.""" from pylint.checkers import misc from pylint.testutils import CheckerTestCase, MessageTest, _tokenize_str, set_config class TestFixme(CheckerTestCase): CHECKER_CLASS = misc.EncodingChecker def test_fixme_with_message(self) -> None: code = """a = 1 # FIXME message """ with self.assertAddsMessages( MessageTest(msg_id="fixme", line=2, args="FIXME message", col_offset=17) ): self.checker.process_tokens(_tokenize_str(code)) def test_todo_without_message(self) -> None: code = """a = 1 # TODO """ with self.assertAddsMessages( MessageTest(msg_id="fixme", line=2, args="TODO", col_offset=17) ): self.checker.process_tokens(_tokenize_str(code)) def test_xxx_without_space(self) -> None: code = """a = 1 #XXX """ with self.assertAddsMessages( MessageTest(msg_id="fixme", line=2, args="XXX", col_offset=17) ): self.checker.process_tokens(_tokenize_str(code)) def test_xxx_middle(self) -> None: code = """a = 1 # midle XXX """ with self.assertNoMessages(): self.checker.process_tokens(_tokenize_str(code)) def test_without_space_fixme(self) -> None: code = """a = 1 #FIXME """ with self.assertAddsMessages( MessageTest(msg_id="fixme", line=2, args="FIXME", col_offset=17) ): self.checker.process_tokens(_tokenize_str(code)) @set_config(notes=["???"]) def test_non_alphanumeric_codetag(self) -> None: code = """a = 1 #??? """ with self.assertAddsMessages( MessageTest(msg_id="fixme", line=2, args="???", col_offset=17) ): self.checker.process_tokens(_tokenize_str(code)) @set_config(notes=[]) def test_absent_codetag(self) -> None: code = """a = 1 # FIXME # FIXME # TODO # TODO # XXX # XXX """ with self.assertNoMessages(): self.checker.process_tokens(_tokenize_str(code)) @set_config(notes=["CODETAG"]) def test_other_present_codetag(self) -> None: code = """a = 1 # CODETAG # FIXME """ with self.assertAddsMessages( MessageTest(msg_id="fixme", line=2, args="CODETAG", col_offset=17) ): self.checker.process_tokens(_tokenize_str(code)) def test_issue_2321_should_not_trigger(self) -> None: code = 'print("# TODO this should not trigger a fixme")' with self.assertNoMessages(): self.checker.process_tokens(_tokenize_str(code)) def test_issue_2321_should_trigger(self) -> None: code = "# TODO this should not trigger a fixme" with self.assertAddsMessages( MessageTest( msg_id="fixme", line=1, args="TODO this should not trigger a fixme", col_offset=1, ) ): self.checker.process_tokens(_tokenize_str(code)) def test_dont_trigger_on_todoist(self) -> None: code = """ # Todoist API: What is this task about? # Todoist API: Look up a task's due date # Todoist API: Look up a Project/Label/Task ID # Todoist API: Fetch all labels # Todoist API: "Name" value # Todoist API: Get a task's priority # Todoist API: Look up the Project ID a Task belongs to # Todoist API: Fetch all Projects # Todoist API: Fetch all Tasks """ with self.assertNoMessages(): self.checker.process_tokens(_tokenize_str(code))