aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/gcov/test-gcov-17.py
blob: ad065b0f443675476f85abc101f65cff7680f5fe (plain)
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
from gcov import gcov_from_env

import pytest


@pytest.fixture(scope='function', autouse=True)
def gcov():
    return gcov_from_env()


def test_basics(gcov):
    files = gcov['files']
    assert len(files) == 1
    functions = files[0]['functions']
    assert len(functions) == 6


def test_lines(gcov):
    lines = gcov['files'][0]['lines']
    linesdict = {}
    for line in lines:
        lineno = int(line['line_number'])
        linesdict.setdefault(lineno, [])
        linesdict[lineno].append(line)

    line9 = linesdict[9]
    assert len(line9) == 2
    assert line9[0]['function_name'] == '_ZN3FooIcE3incEv'
    assert line9[1]['function_name'] == '_ZN3FooIiE3incEv'
    assert line9[0]['count'] == 0
    assert line9[1]['count'] == 2
    assert line9[0]['unexecuted_block']
    assert not line9[1]['unexecuted_block']
    assert linesdict[36][0]['unexecuted_block']
    assert linesdict[39][0]['unexecuted_block']
    assert not linesdict[41][0]['unexecuted_block']
    assert 32 not in linesdict
    print(lines)

    line41 = linesdict[41][0]
    assert line41['count'] == 1
    assert line41['calls'][0]['returned'] == 1
    assert line41['calls'][0]['source_block_id'] == 13
    assert line41['calls'][0]['destination_block_id'] == 1
    assert len(line41['block_ids']) > 0

    line43 = linesdict[43][0]
    assert line43['count'] == 1
    assert line43['calls'][0]['returned'] == 0