Bill Wendling | 92290f1 | 2018-01-14 16:49:35 -0800 | [diff] [blame] | 1 | # Copyright 2015 Google Inc. All Rights Reserved. |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 2 | # |
| 3 | # Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 | # you may not use this file except in compliance with the License. |
| 5 | # You may obtain a copy of the License at |
| 6 | # |
| 7 | # http://www.apache.org/licenses/LICENSE-2.0 |
| 8 | # |
| 9 | # Unless required by applicable law or agreed to in writing, software |
| 10 | # distributed under the License is distributed on an "AS IS" BASIS, |
| 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 | # See the License for the specific language governing permissions and |
| 13 | # limitations under the License. |
| 14 | """Tests for yapf.pytree_unwrapper.""" |
| 15 | |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 16 | import textwrap |
| 17 | import unittest |
| 18 | |
Bill Wendling | 831fb3d | 2021-12-27 13:04:22 -0800 | [diff] [blame] | 19 | from yapf.pytree import pytree_utils |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 20 | |
Bill Wendling | a8ebae2 | 2016-10-23 16:09:06 -0700 | [diff] [blame] | 21 | from yapftests import yapf_test_helper |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 22 | |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 23 | |
Bill Wendling | a8ebae2 | 2016-10-23 16:09:06 -0700 | [diff] [blame] | 24 | class PytreeUnwrapperTest(yapf_test_helper.YAPFTest): |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 25 | |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 26 | def _CheckLogicalLines(self, llines, list_of_expected): |
| 27 | """Check that the given LogicalLines match expectations. |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 28 | |
| 29 | Args: |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 30 | llines: list of LogicalLine |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 31 | list_of_expected: list of (depth, values) pairs. Non-semantic tokens are |
| 32 | filtered out from the expected values. |
| 33 | """ |
| 34 | actual = [] |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 35 | for lline in llines: |
Bill Wendling | eef8fbd | 2016-10-05 00:34:25 -0700 | [diff] [blame] | 36 | filtered_values = [ |
Matthew Suozzo | ba8f51f | 2017-10-31 00:33:38 -0400 | [diff] [blame] | 37 | ft.value |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 38 | for ft in lline.tokens |
Bill Wendling | eef8fbd | 2016-10-05 00:34:25 -0700 | [diff] [blame] | 39 | if ft.name not in pytree_utils.NONSEMANTIC_TOKENS |
| 40 | ] |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 41 | actual.append((lline.depth, filtered_values)) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 42 | |
| 43 | self.assertEqual(list_of_expected, actual) |
| 44 | |
| 45 | def testSimpleFileScope(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 46 | code = textwrap.dedent("""\ |
| 47 | x = 1 |
| 48 | # a comment |
| 49 | y = 2 |
| 50 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 51 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 52 | self._CheckLogicalLines(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 53 | (0, ['x', '=', '1']), |
| 54 | (0, ['# a comment']), |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 55 | (0, ['y', '=', '2']), |
| 56 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 57 | |
| 58 | def testSimpleMultilineStatement(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 59 | code = textwrap.dedent("""\ |
| 60 | y = (1 + |
| 61 | x) |
| 62 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 63 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 64 | self._CheckLogicalLines(llines, [ |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 65 | (0, ['y', '=', '(', '1', '+', 'x', ')']), |
| 66 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 67 | |
| 68 | def testFileScopeWithInlineComment(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 69 | code = textwrap.dedent("""\ |
| 70 | x = 1 # a comment |
| 71 | y = 2 |
| 72 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 73 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 74 | self._CheckLogicalLines(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 75 | (0, ['x', '=', '1', '# a comment']), |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 76 | (0, ['y', '=', '2']), |
| 77 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 78 | |
| 79 | def testSimpleIf(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 80 | code = textwrap.dedent("""\ |
| 81 | if foo: |
| 82 | x = 1 |
| 83 | y = 2 |
| 84 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 85 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 86 | self._CheckLogicalLines(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 87 | (0, ['if', 'foo', ':']), |
| 88 | (1, ['x', '=', '1']), |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 89 | (1, ['y', '=', '2']), |
| 90 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 91 | |
| 92 | def testSimpleIfWithComments(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 93 | code = textwrap.dedent("""\ |
| 94 | # c1 |
| 95 | if foo: # c2 |
| 96 | x = 1 |
| 97 | y = 2 |
| 98 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 99 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 100 | self._CheckLogicalLines(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 101 | (0, ['# c1']), |
| 102 | (0, ['if', 'foo', ':', '# c2']), |
| 103 | (1, ['x', '=', '1']), |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 104 | (1, ['y', '=', '2']), |
| 105 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 106 | |
| 107 | def testIfWithCommentsInside(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 108 | code = textwrap.dedent("""\ |
| 109 | if foo: |
| 110 | # c1 |
| 111 | x = 1 # c2 |
| 112 | # c3 |
| 113 | y = 2 |
| 114 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 115 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 116 | self._CheckLogicalLines(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 117 | (0, ['if', 'foo', ':']), |
| 118 | (1, ['# c1']), |
| 119 | (1, ['x', '=', '1', '# c2']), |
| 120 | (1, ['# c3']), |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 121 | (1, ['y', '=', '2']), |
| 122 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 123 | |
| 124 | def testIfElifElse(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 125 | code = textwrap.dedent("""\ |
| 126 | if x: |
| 127 | x = 1 # c1 |
| 128 | elif y: # c2 |
| 129 | y = 1 |
| 130 | else: |
| 131 | # c3 |
| 132 | z = 1 |
| 133 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 134 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 135 | self._CheckLogicalLines(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 136 | (0, ['if', 'x', ':']), |
| 137 | (1, ['x', '=', '1', '# c1']), |
| 138 | (0, ['elif', 'y', ':', '# c2']), |
| 139 | (1, ['y', '=', '1']), |
| 140 | (0, ['else', ':']), |
| 141 | (1, ['# c3']), |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 142 | (1, ['z', '=', '1']), |
| 143 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 144 | |
| 145 | def testNestedCompoundTwoLevel(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 146 | code = textwrap.dedent("""\ |
| 147 | if x: |
| 148 | x = 1 # c1 |
| 149 | while t: |
| 150 | # c2 |
| 151 | j = 1 |
| 152 | k = 1 |
| 153 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 154 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 155 | self._CheckLogicalLines(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 156 | (0, ['if', 'x', ':']), |
| 157 | (1, ['x', '=', '1', '# c1']), |
| 158 | (1, ['while', 't', ':']), |
| 159 | (2, ['# c2']), |
| 160 | (2, ['j', '=', '1']), |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 161 | (1, ['k', '=', '1']), |
| 162 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 163 | |
| 164 | def testSimpleWhile(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 165 | code = textwrap.dedent("""\ |
| 166 | while x > 1: # c1 |
| 167 | # c2 |
| 168 | x = 1 |
| 169 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 170 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 171 | self._CheckLogicalLines(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 172 | (0, ['while', 'x', '>', '1', ':', '# c1']), |
| 173 | (1, ['# c2']), |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 174 | (1, ['x', '=', '1']), |
| 175 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 176 | |
| 177 | def testSimpleTry(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 178 | code = textwrap.dedent("""\ |
| 179 | try: |
| 180 | pass |
| 181 | except: |
| 182 | pass |
| 183 | except: |
| 184 | pass |
| 185 | else: |
| 186 | pass |
| 187 | finally: |
| 188 | pass |
| 189 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 190 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 191 | self._CheckLogicalLines(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 192 | (0, ['try', ':']), |
| 193 | (1, ['pass']), |
| 194 | (0, ['except', ':']), |
| 195 | (1, ['pass']), |
| 196 | (0, ['except', ':']), |
| 197 | (1, ['pass']), |
| 198 | (0, ['else', ':']), |
| 199 | (1, ['pass']), |
| 200 | (0, ['finally', ':']), |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 201 | (1, ['pass']), |
| 202 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 203 | |
| 204 | def testSimpleFuncdef(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 205 | code = textwrap.dedent("""\ |
| 206 | def foo(x): # c1 |
| 207 | # c2 |
| 208 | return x |
| 209 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 210 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 211 | self._CheckLogicalLines(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 212 | (0, ['def', 'foo', '(', 'x', ')', ':', '# c1']), |
| 213 | (1, ['# c2']), |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 214 | (1, ['return', 'x']), |
| 215 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 216 | |
| 217 | def testTwoFuncDefs(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 218 | code = textwrap.dedent("""\ |
| 219 | def foo(x): # c1 |
| 220 | # c2 |
| 221 | return x |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 222 | |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 223 | def bar(): # c3 |
| 224 | # c4 |
| 225 | return x |
| 226 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 227 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 228 | self._CheckLogicalLines(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 229 | (0, ['def', 'foo', '(', 'x', ')', ':', '# c1']), |
| 230 | (1, ['# c2']), |
| 231 | (1, ['return', 'x']), |
| 232 | (0, ['def', 'bar', '(', ')', ':', '# c3']), |
| 233 | (1, ['# c4']), |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 234 | (1, ['return', 'x']), |
| 235 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 236 | |
| 237 | def testSimpleClassDef(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 238 | code = textwrap.dedent("""\ |
| 239 | class Klass: # c1 |
| 240 | # c2 |
| 241 | p = 1 |
| 242 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 243 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 244 | self._CheckLogicalLines(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 245 | (0, ['class', 'Klass', ':', '# c1']), |
| 246 | (1, ['# c2']), |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 247 | (1, ['p', '=', '1']), |
| 248 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 249 | |
| 250 | def testSingleLineStmtInFunc(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 251 | code = textwrap.dedent("""\ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 252 | def f(): return 37 |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 253 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 254 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 255 | self._CheckLogicalLines(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 256 | (0, ['def', 'f', '(', ')', ':']), |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 257 | (1, ['return', '37']), |
| 258 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 259 | |
| 260 | def testMultipleComments(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 261 | code = textwrap.dedent("""\ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 262 | # Comment #1 |
| 263 | |
| 264 | # Comment #2 |
| 265 | def f(): |
| 266 | pass |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 267 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 268 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 269 | self._CheckLogicalLines(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 270 | (0, ['# Comment #1']), |
| 271 | (0, ['# Comment #2']), |
| 272 | (0, ['def', 'f', '(', ')', ':']), |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 273 | (1, ['pass']), |
| 274 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 275 | |
Bill Wendling | 5b41982 | 2015-07-06 01:39:50 -0700 | [diff] [blame] | 276 | def testSplitListWithComment(self): |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 277 | code = textwrap.dedent("""\ |
| 278 | a = [ |
| 279 | 'a', |
| 280 | 'b', |
| 281 | 'c', # hello world |
| 282 | ] |
| 283 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 284 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 285 | self._CheckLogicalLines(llines, [(0, [ |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 286 | 'a', '=', '[', "'a'", ',', "'b'", ',', "'c'", ',', '# hello world', ']' |
| 287 | ])]) |
Bill Wendling | 5b41982 | 2015-07-06 01:39:50 -0700 | [diff] [blame] | 288 | |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 289 | |
Bill Wendling | a8ebae2 | 2016-10-23 16:09:06 -0700 | [diff] [blame] | 290 | class MatchBracketsTest(yapf_test_helper.YAPFTest): |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 291 | |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 292 | def _CheckMatchingBrackets(self, llines, list_of_expected): |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 293 | """Check that the tokens have the expected matching bracket. |
| 294 | |
| 295 | Arguments: |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 296 | llines: list of LogicalLine. |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 297 | list_of_expected: list of (index, index) pairs. The matching brackets at |
| 298 | the indexes need to match. Non-semantic tokens are filtered out from the |
| 299 | expected values. |
| 300 | """ |
| 301 | actual = [] |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 302 | for lline in llines: |
Matthew Suozzo | ba8f51f | 2017-10-31 00:33:38 -0400 | [diff] [blame] | 303 | filtered_values = [(ft, ft.matching_bracket) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 304 | for ft in lline.tokens |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 305 | if ft.name not in pytree_utils.NONSEMANTIC_TOKENS] |
| 306 | if filtered_values: |
| 307 | actual.append(filtered_values) |
| 308 | |
| 309 | for index, bracket_list in enumerate(list_of_expected): |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 310 | lline = actual[index] |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 311 | if not bracket_list: |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 312 | for value in lline: |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 313 | self.assertIsNone(value[1]) |
| 314 | else: |
| 315 | for open_bracket, close_bracket in bracket_list: |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 316 | self.assertEqual(lline[open_bracket][0], lline[close_bracket][1]) |
| 317 | self.assertEqual(lline[close_bracket][0], lline[open_bracket][1]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 318 | |
| 319 | def testFunctionDef(self): |
| 320 | code = textwrap.dedent("""\ |
Bill Wendling | 2b0c631 | 2018-01-13 21:53:14 -0800 | [diff] [blame] | 321 | def foo(a, b=['w','d'], c=[42, 37]): |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 322 | pass |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 323 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 324 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 325 | self._CheckMatchingBrackets(llines, [ |
Bill Wendling | 2b0c631 | 2018-01-13 21:53:14 -0800 | [diff] [blame] | 326 | [(2, 20), (7, 11), (15, 19)], |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 327 | [], |
| 328 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 329 | |
| 330 | def testDecorator(self): |
| 331 | code = textwrap.dedent("""\ |
| 332 | @bar() |
| 333 | def foo(a, b, c): |
| 334 | pass |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 335 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 336 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 337 | self._CheckMatchingBrackets(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 338 | [(2, 3)], |
| 339 | [(2, 8)], |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 340 | [], |
| 341 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 342 | |
| 343 | def testClassDef(self): |
| 344 | code = textwrap.dedent("""\ |
| 345 | class A(B, C, D): |
| 346 | pass |
Bill Wendling | a0db84c | 2023-06-23 13:24:34 -0500 | [diff] [blame] | 347 | """) |
Bill Wendling | 5b75e6f | 2021-12-25 22:31:14 -0600 | [diff] [blame] | 348 | llines = yapf_test_helper.ParseAndUnwrap(code) |
| 349 | self._CheckMatchingBrackets(llines, [ |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 350 | [(2, 8)], |
Bill Wendling | a2f0342 | 2016-10-23 16:36:47 -0700 | [diff] [blame] | 351 | [], |
| 352 | ]) |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 353 | |
| 354 | |
Bill Wendling | 7d62345 | 2015-03-18 13:36:07 -0700 | [diff] [blame] | 355 | if __name__ == '__main__': |
| 356 | unittest.main() |