(self)
| 88 | self.assertTrue(x.called) |
| 89 | |
| 90 | def test_ast_line_numbers(self): |
| 91 | expr = """ |
| 92 | a = 10 |
| 93 | f'{a * x()}'""" |
| 94 | t = ast.parse(expr) |
| 95 | self.assertEqual(type(t), ast.Module) |
| 96 | self.assertEqual(len(t.body), 2) |
| 97 | # check `a = 10` |
| 98 | self.assertEqual(type(t.body[0]), ast.Assign) |
| 99 | self.assertEqual(t.body[0].lineno, 2) |
| 100 | # check `f'...'` |
| 101 | self.assertEqual(type(t.body[1]), ast.Expr) |
| 102 | self.assertEqual(type(t.body[1].value), ast.JoinedStr) |
| 103 | self.assertEqual(len(t.body[1].value.values), 1) |
| 104 | self.assertEqual(type(t.body[1].value.values[0]), ast.FormattedValue) |
| 105 | self.assertEqual(t.body[1].lineno, 3) |
| 106 | self.assertEqual(t.body[1].value.lineno, 3) |
| 107 | self.assertEqual(t.body[1].value.values[0].lineno, 3) |
| 108 | # check the binop location |
| 109 | binop = t.body[1].value.values[0].value |
| 110 | self.assertEqual(type(binop), ast.BinOp) |
| 111 | self.assertEqual(type(binop.left), ast.Name) |
| 112 | self.assertEqual(type(binop.op), ast.Mult) |
| 113 | self.assertEqual(type(binop.right), ast.Call) |
| 114 | self.assertEqual(binop.lineno, 3) |
| 115 | self.assertEqual(binop.left.lineno, 3) |
| 116 | self.assertEqual(binop.right.lineno, 3) |
| 117 | self.assertEqual(binop.col_offset, 3) |
| 118 | self.assertEqual(binop.left.col_offset, 3) |
| 119 | self.assertEqual(binop.right.col_offset, 7) |
| 120 | |
| 121 | def test_ast_line_numbers_multiple_formattedvalues(self): |
| 122 | expr = """ |
nothing calls this directly
no test coverage detected