diff --git a/test/meson.build b/test/meson.build index bf41bbb1..c523b901 100644 --- a/test/meson.build +++ b/test/meson.build @@ -1,9 +1,10 @@ # 19 january 2020 -libui_test_sources = [ +# Using files() is the cleanest way to ensure the python script below gets the right filenames regardless of how meson sandboxes the command it's running. +libui_test_sources = files([ 'initmain.c', 'noinitwrongthread.c', -] +]) libui_test_sources_without_cases = [ 'errors.c', @@ -38,24 +39,34 @@ if libui_OS == 'windows' endif endif +pymod = import('python') +python = pymod.find_installation() +# Likewise, use files() here to make sure the Python script itself will always have the right path. +libui_testlist_py = files(['testlist.py']) + +libui_testlist_h = custom_target( + 'testlist.h', + input: libui_test_sources, + output: ['testlist.h'], + command: [python, libui_testlist_py, 'header', '@OUTPUT@', '@INPUT@']) +libui_testlist_c = custom_target( + 'testlist.c', + input: libui_test_sources, + output: ['testlist.c'], + command: [python, libui_testlist_py, 'source', '@OUTPUT@', '@INPUT@']) + # TODO once we upgrade to 0.49.0, add pie: true # TODO once we upgrade to 0.50.0, add protocol: 'exitcode' -libui_testparent = executable('testparent', libui_test_sources + libui_test_sources_without_cases, +libui_testparent = executable('testparent', libui_test_sources + libui_test_sources_without_cases + [libui_testlist_c, libui_testlist_h], dependencies: libui_binary_deps + libui_test_deps, link_with: libui_libui, gui_app: false, install: false) -pymod = import('python') -python = pymod.find_installation() -# Using files() is the cleanest way to ensure the python script gets the right filenames regardless of how meson sandboxes the command it's running. -libui_testlist_py = files(['testlist.py']) -libui_test_sources_files = files(libui_test_sources) -runresult = run_command(python, libui_testlist_py + ['list'] + libui_test_sources_files) +runresult = run_command(python, libui_testlist_py + ['list'] + libui_test_sources) if runresult.returncode() != 0 error('testlist.py failed; cannot compute list of test cases. Exit code @0@; stderr:\n@1@'.format(runresult.returncode(), runresult.stderr())) endif -# TODO make sure this works properly on Windows foreach casename : runresult.stdout().split() test(casename, libui_testparent, args: [casename], diff --git a/test/test.h b/test/test.h index 922e565c..eb40411c 100644 --- a/test/test.h +++ b/test/test.h @@ -93,6 +93,8 @@ sharedbitsPrintfFunc( 5, 6); #undef sharedbitsPrintfFunc +#include "testlist.h" + // end of test framework definitions #define diff(fmt) "\ngot " fmt "\nwant " fmt