File: test_simple_whitespace.py

package info (click to toggle)
python-libcst 1.4.0-1.2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,928 kB
  • sloc: python: 76,235; makefile: 10; sh: 2
file content (103 lines) | stat: -rw-r--r-- 3,827 bytes parent folder | download
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# 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 typing import Callable

import libcst as cst
from libcst._nodes.tests.base import CSTNodeTest, DummyIndentedBlock
from libcst.testing.utils import data_provider


class SimpleWhitespaceTest(CSTNodeTest):
    @data_provider(
        (
            (cst.SimpleWhitespace(""), ""),
            (cst.SimpleWhitespace(" "), " "),
            (cst.SimpleWhitespace(" \t\f"), " \t\f"),
            (cst.SimpleWhitespace("\\\n "), "\\\n "),
            (cst.SimpleWhitespace("\\\r\n "), "\\\r\n "),
        )
    )
    def test_valid(self, node: cst.CSTNode, code: str) -> None:
        self.validate_node(node, code)

    @data_provider(
        (
            (lambda: cst.SimpleWhitespace(" bad input"), "non-whitespace"),
            (lambda: cst.SimpleWhitespace("\\"), "non-whitespace"),
            (lambda: cst.SimpleWhitespace("\\\n\n "), "non-whitespace"),
        )
    )
    def test_invalid(
        self, get_node: Callable[[], cst.CSTNode], expected_re: str
    ) -> None:
        self.assert_invalid(get_node, expected_re)


class ParenthesizedWhitespaceTest(CSTNodeTest):
    @data_provider(
        (
            (cst.ParenthesizedWhitespace(), "\n"),
            (
                cst.ParenthesizedWhitespace(
                    first_line=cst.TrailingWhitespace(
                        cst.SimpleWhitespace("   "), cst.Comment("# This is a comment")
                    )
                ),
                "   # This is a comment\n",
            ),
            (
                cst.ParenthesizedWhitespace(
                    first_line=cst.TrailingWhitespace(
                        cst.SimpleWhitespace("   "), cst.Comment("# This is a comment")
                    ),
                    empty_lines=(cst.EmptyLine(), cst.EmptyLine(), cst.EmptyLine()),
                ),
                "   # This is a comment\n\n\n\n",
            ),
            (
                cst.ParenthesizedWhitespace(
                    first_line=cst.TrailingWhitespace(
                        cst.SimpleWhitespace("   "), cst.Comment("# This is a comment")
                    ),
                    empty_lines=(cst.EmptyLine(), cst.EmptyLine(), cst.EmptyLine()),
                    indent=False,
                    last_line=cst.SimpleWhitespace(" "),
                ),
                "   # This is a comment\n\n\n\n ",
            ),
            (
                DummyIndentedBlock(
                    "    ",
                    cst.ParenthesizedWhitespace(
                        first_line=cst.TrailingWhitespace(
                            cst.SimpleWhitespace("   "),
                            cst.Comment("# This is a comment"),
                        ),
                        empty_lines=(cst.EmptyLine(), cst.EmptyLine(), cst.EmptyLine()),
                        indent=True,
                        last_line=cst.SimpleWhitespace(" "),
                    ),
                ),
                "   # This is a comment\n    \n    \n    \n     ",
            ),
            (
                DummyIndentedBlock(
                    "    ",
                    cst.ParenthesizedWhitespace(
                        first_line=cst.TrailingWhitespace(
                            cst.SimpleWhitespace("   "),
                            cst.Comment("# This is a comment"),
                        ),
                        indent=True,
                        last_line=cst.SimpleWhitespace(""),
                    ),
                ),
                "   # This is a comment\n    ",
            ),
        )
    )
    def test_valid(self, node: cst.CSTNode, code: str) -> None:
        self.validate_node(node, code)