File: test_gather_comments.py

package info (click to toggle)
python-libcst 1.8.6-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,240 kB
  • sloc: python: 78,096; makefile: 15; sh: 2
file content (46 lines) | stat: -rw-r--r-- 1,625 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
#
from libcst import Comment, MetadataWrapper, parse_module
from libcst.codemod import CodemodContext, CodemodTest
from libcst.codemod.visitors import GatherCommentsVisitor
from libcst.testing.utils import UnitTest


class TestGatherCommentsVisitor(UnitTest):
    def gather_comments(self, code: str) -> GatherCommentsVisitor:
        mod = MetadataWrapper(parse_module(CodemodTest.make_fixture_data(code)))
        mod.resolve_many(GatherCommentsVisitor.METADATA_DEPENDENCIES)
        instance = GatherCommentsVisitor(
            CodemodContext(wrapper=mod), r".*\Wnoqa(\W.*)?$"
        )
        mod.visit(instance)
        return instance

    def test_no_comments(self) -> None:
        visitor = self.gather_comments(
            """
            def foo() -> None:
                pass
            """
        )
        self.assertEqual(visitor.comments, {})

    def test_noqa_comments(self) -> None:
        visitor = self.gather_comments(
            """
            import a.b.c # noqa
            import d  # somethingelse
            # noqa
            def foo() -> None:
                pass

            """
        )
        self.assertEqual(visitor.comments.keys(), {1, 4})
        self.assertTrue(isinstance(visitor.comments[1], Comment))
        self.assertEqual(visitor.comments[1].value, "# noqa")
        self.assertTrue(isinstance(visitor.comments[4], Comment))
        self.assertEqual(visitor.comments[4].value, "# noqa")