diff options
Diffstat (limited to 'test/py/meson.build')
-rw-r--r-- | test/py/meson.build | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test/py/meson.build b/test/py/meson.build new file mode 100644 index 00000000..b922e857 --- /dev/null +++ b/test/py/meson.build @@ -0,0 +1,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) |