File: cairo_coverage.py

package info (click to toggle)
cairocffi 1.7.1-5
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 752 kB
  • sloc: python: 3,020; makefile: 22
file content (26 lines) | stat: -rw-r--r-- 792 bytes parent folder | download | duplicates (3)
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
import inspect

import pycparser

import cairocffi

ALL_THE_CODE = ''.join(
    line
    for module in [
        cairocffi, cairocffi.surfaces, cairocffi.patterns,
        cairocffi.fonts, cairocffi.context, cairocffi.matrix]
    for line in inspect.getsourcelines(module)[0])


class Visitor(pycparser.c_ast.NodeVisitor):
    def visit_Decl(self, node):  # noqa: N802
        for _, child in node.children():
            if isinstance(child, pycparser.c_ast.FuncDecl):
                if ('cairo.' + node.name) not in ALL_THE_CODE and not (
                        node.name.endswith('user_data')):
                    print(node.name)
                break


print('cairo functions never used in cairocffi:\n')
Visitor().visit(pycparser.CParser().parse(cairocffi.constants._CAIRO_HEADERS))