File: meson.build

package info (click to toggle)
fprintd 1.94.5-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,124 kB
  • sloc: ansic: 4,904; python: 3,587; xml: 687; sh: 34; makefile: 15
file content (130 lines) | stat: -rw-r--r-- 3,588 bytes parent folder | download
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Add a way to discover and run python unit tests separately
# https://github.com/mesonbuild/meson/issues/6851
python_tests = [
    # List all the python tests, must be in the form:
    # {
    #     'name': 'test name',
    #     'file': 'full test file path, use files('path')[0]',
    # Fields below are optional:
    #     'workdir': '',
    #     'env': [],
    #     'depends': [],
    #     'suite': [],
    #     'extra_args': [],
    #     'timeout': 30,
    #     'is_parallel': true,
    # }
]

tests = [
    'fprintd',
    'test_fprintd_utils',
]

foreach t: tests
    python_tests += [
        {
            'name': t,
            'file': files(meson.current_source_dir() / t + '.py')[0],
            'env': [
                'G_DEBUG=fatal-criticals',
                'G_MESSAGES_DEBUG=all',
                'FPRINT_BUILD_DIR=' + meson.project_build_root() / 'src',
                'TOPSRCDIR=' + meson.project_source_root(),
            ],
            'depends': [
                fprintd,
                fprintd_utils,
            ],
            'suite': [t == 'fprintd' ? 'daemon' : ''],
        }
    ]
endforeach

if get_option('pam')
    subdir('pam')
endif

# Add a way to discover and run python unit tests separately
# https://github.com/mesonbuild/meson/issues/6851
unittest_inspector = find_program('unittest_inspector.py')

foreach pt: python_tests
    r = run_command(unittest_inspector, pt.get('file'), check: false)
    unit_tests = r.stdout().strip().split('\n')
    base_args = [ pt.get('file') ] + pt.get('extra_args', [])
    suite = pt.get('suite', [])

    if r.returncode() == 0 and unit_tests.length() > 0
        suite += pt.get('name')
    else
        unit_tests = [pt.get('name')]
    endif

    foreach ut: unit_tests
        ut_suite = suite
        ut_args = base_args
        if unit_tests.length() > 1
            ut_args += ut
            ut_suite += ut.split('.')[0]
        endif
        test(ut,
            python3,
            args: ut_args,
            suite: ut_suite,
            depends: pt.get('depends', []),
            workdir: pt.get('workdir', meson.project_build_root()),
            env: pt.get('env', []),
            timeout: pt.get('timeout', 30),
            is_parallel: pt.get('is_parallel', true),
        )
    endforeach
endforeach

timeout_multiplier = 1
test_envs = [
    'G_SLICE=always-malloc',
    'MALLOC_CHECK_=2',
]

if address_sanitizer
    lsan_suppress = files('LSAN-leaks-suppress.txt')[0]
    if meson.version().version_compare('>=1.4')
        lsan_suppress = lsan_suppress.full_path()
    else
        lsan_suppress = meson.project_source_root() / '@0@'.format(lsan_suppress)
    endif

    timeout_multiplier = 3
    test_envs += [
        'ADDRESS_SANITIZER=true',
        'ASAN_OPTIONS=@0@'.format(':'.join([
            'abort_on_error=true',
            'symbolize=true',
        ])),
        'LSAN_OPTIONS=@0@'.format(':'.join([
            'exitcode=0',
            'strict_string_checks=true',
            'suppressions=@0@'.format(lsan_suppress),
        ])),
    ]
endif

add_test_setup('default_setup',
    is_default: true,
    env: test_envs,
    timeout_multiplier: timeout_multiplier
)

if not address_sanitizer and find_program('valgrind', required: false).found()
    glib_share = glib_dep.get_variable('prefix') / 'share' / glib_dep.name()
    glib_suppressions = glib_share + '/valgrind/glib.supp'
    add_test_setup('valgrind',
        env: [
            'G_SLICE=always-malloc',
            'VALGRIND=' + glib_suppressions,
        ],
        timeout_multiplier: 5
    )
endif