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

Method test_ast_line_numbers_multiline_fstring

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

Source from the content-addressed store, hash-verified

305 self.assertEqual(name.end_col_offset, 25)
306
307 def test_ast_line_numbers_multiline_fstring(self):
308 # See bpo-30465 for details.
309 expr = """
310a = 10
311f'''
312 {a
313 *
314 x()}
315non-important content
316'''
317"""
318 t = ast.parse(expr)
319 self.assertEqual(type(t), ast.Module)
320 self.assertEqual(len(t.body), 2)
321 # check `a = 10`
322 self.assertEqual(type(t.body[0]), ast.Assign)
323 self.assertEqual(t.body[0].lineno, 2)
324 # check `f'...'`
325 self.assertEqual(type(t.body[1]), ast.Expr)
326 self.assertEqual(type(t.body[1].value), ast.JoinedStr)
327 self.assertEqual(len(t.body[1].value.values), 3)
328 self.assertEqual(type(t.body[1].value.values[0]), ast.Constant)
329 self.assertEqual(type(t.body[1].value.values[0].value), str)
330 self.assertEqual(type(t.body[1].value.values[1]), ast.FormattedValue)
331 self.assertEqual(type(t.body[1].value.values[2]), ast.Constant)
332 self.assertEqual(type(t.body[1].value.values[2].value), str)
333 self.assertEqual(t.body[1].lineno, 3)
334 self.assertEqual(t.body[1].value.lineno, 3)
335 self.assertEqual(t.body[1].value.values[0].lineno, 3)
336 self.assertEqual(t.body[1].value.values[1].lineno, 4)
337 self.assertEqual(t.body[1].value.values[2].lineno, 6)
338 self.assertEqual(t.body[1].col_offset, 0)
339 self.assertEqual(t.body[1].value.col_offset, 0)
340 self.assertEqual(t.body[1].value.values[0].col_offset, 4)
341 self.assertEqual(t.body[1].value.values[1].col_offset, 2)
342 self.assertEqual(t.body[1].value.values[2].col_offset, 11)
343 # NOTE: the following lineno information and col_offset is correct for
344 # expressions within FormattedValues.
345 binop = t.body[1].value.values[1].value
346 self.assertEqual(type(binop), ast.BinOp)
347 self.assertEqual(type(binop.left), ast.Name)
348 self.assertEqual(type(binop.op), ast.Mult)
349 self.assertEqual(type(binop.right), ast.Call)
350 self.assertEqual(binop.lineno, 4)
351 self.assertEqual(binop.left.lineno, 4)
352 self.assertEqual(binop.right.lineno, 6)
353 self.assertEqual(binop.col_offset, 3)
354 self.assertEqual(binop.left.col_offset, 3)
355 self.assertEqual(binop.right.col_offset, 7)
356
357 expr = """
358a = f'''
359 {blech}
360 '''
361"""
362 t = ast.parse(expr)
363 self.assertEqual(type(t), ast.Module)
364 self.assertEqual(len(t.body), 1)

Callers

nothing calls this directly

Calls 2

assertEqualMethod · 0.95
parseMethod · 0.45

Tested by

no test coverage detected