summaryrefslogtreecommitdiff
path: root/test/py/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'test/py/meson.build')
-rw-r--r--test/py/meson.build42
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)