MCPcopy Index your code
hub / github.com/python/cpython / test_ast_line_numbers_nested

Method test_ast_line_numbers_nested

Lib/test/test_fstring.py:173–216  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

171 self.assertEqual(binop2.right.col_offset, 27)
172
173 def test_ast_line_numbers_nested(self):
174 expr = """
175a = 10
176f'{a * f"-{x()}-"}'"""
177 t = ast.parse(expr)
178 self.assertEqual(type(t), ast.Module)
179 self.assertEqual(len(t.body), 2)
180 # check `a = 10`
181 self.assertEqual(type(t.body[0]), ast.Assign)
182 self.assertEqual(t.body[0].lineno, 2)
183 # check `f'...'`
184 self.assertEqual(type(t.body[1]), ast.Expr)
185 self.assertEqual(type(t.body[1].value), ast.JoinedStr)
186 self.assertEqual(len(t.body[1].value.values), 1)
187 self.assertEqual(type(t.body[1].value.values[0]), ast.FormattedValue)
188 self.assertEqual(t.body[1].lineno, 3)
189 self.assertEqual(t.body[1].value.lineno, 3)
190 self.assertEqual(t.body[1].value.values[0].lineno, 3)
191 # check the binop location
192 binop = t.body[1].value.values[0].value
193 self.assertEqual(type(binop), ast.BinOp)
194 self.assertEqual(type(binop.left), ast.Name)
195 self.assertEqual(type(binop.op), ast.Mult)
196 self.assertEqual(type(binop.right), ast.JoinedStr)
197 self.assertEqual(binop.lineno, 3)
198 self.assertEqual(binop.left.lineno, 3)
199 self.assertEqual(binop.right.lineno, 3)
200 self.assertEqual(binop.col_offset, 3)
201 self.assertEqual(binop.left.col_offset, 3)
202 self.assertEqual(binop.right.col_offset, 7)
203 # check the nested call location
204 self.assertEqual(len(binop.right.values), 3)
205 self.assertEqual(type(binop.right.values[0]), ast.Constant)
206 self.assertEqual(type(binop.right.values[0].value), str)
207 self.assertEqual(type(binop.right.values[1]), ast.FormattedValue)
208 self.assertEqual(type(binop.right.values[2]), ast.Constant)
209 self.assertEqual(type(binop.right.values[2].value), str)
210 self.assertEqual(binop.right.values[0].lineno, 3)
211 self.assertEqual(binop.right.values[1].lineno, 3)
212 self.assertEqual(binop.right.values[2].lineno, 3)
213 call = binop.right.values[1].value
214 self.assertEqual(type(call), ast.Call)
215 self.assertEqual(call.lineno, 3)
216 self.assertEqual(call.col_offset, 11)
217
218 def test_ast_line_numbers_duplicate_expression(self):
219 expr = """

Callers

nothing calls this directly

Calls 2

assertEqualMethod · 0.95
parseMethod · 0.45

Tested by

no test coverage detected