summaryrefslogtreecommitdiff
path: root/test/py/meson.build
blob: b922e8578c2974e6ee3b85dc8142a5e8333d9903 (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
# SPDX-License-Identifier: CC0-1.0

if not pycamera_enabled
    subdir_done()
endif

# If ASan is enabled, the link order runtime check will fail as Python is not
# linked to ASan. LD_PRELOAD the ASan runtime if available, or skip the test
# otherwise.

if asan_runtime_missing
    warning('Unable to get path to ASan runtime, Python test disabled')
    subdir_done()
endif

py_env = environment()

pymod = import('python')
py3 = pymod.find_installation('python3')

pypathdir = meson.project_build_root() / 'src' / 'py'
py_env.append('PYTHONPATH', pypathdir)

if asan_enabled
    py_env.append('LD_PRELOAD', asan_runtime)

    # Preload the C++ standard library to work around a bug in ASan when
    # dynamically loading C++ .so modules.
    stdlib = run_command(cxx, '-print-file-name=' + cxx_stdlib + '.so',
                         check : true).stdout().strip()
    py_env.append('LD_PRELOAD', stdlib)

    # Disable leak detection as the Python interpreter is full of leaks.
    py_env.append('ASAN_OPTIONS', 'detect_leaks=0')
endif

test('pyunittests',
     py3,
     args : files('unittests.py'),
     env : py_env,
     suite : 'pybindings',
     is_parallel : false)