diff --git a/cogl/cogl/libmutter-cogl.map b/cogl/cogl/libmutter-cogl.map.in similarity index 98% rename from cogl/cogl/libmutter-cogl.map rename to cogl/cogl/libmutter-cogl.map.in index 9f2f16ba0..4e31a157b 100644 --- a/cogl/cogl/libmutter-cogl.map +++ b/cogl/cogl/libmutter-cogl.map.in @@ -29,8 +29,6 @@ global: _cogl_texture_can_hardware_repeat; _cogl_pipeline_prune_to_n_layers; _cogl_primitive_draw; - #test_; - #unit_test_; _cogl_winsys_glx_get_vtable; _cogl_winsys_egl_xlib_get_vtable; _cogl_winsys_egl_get_vtable; @@ -48,6 +46,7 @@ global: _cogl_pixel_format_get_bytes_per_pixel*; _cogl_system_error_quark; _cogl_util_next_p2; + @unit_tests_symbols@ local: *; }; diff --git a/cogl/cogl/meson.build b/cogl/cogl/meson.build index 38ac9a10c..527c50528 100644 --- a/cogl/cogl/meson.build +++ b/cogl/cogl/meson.build @@ -455,16 +455,24 @@ cogl_headers_all = [ ] cogl_test_deps = [] +cogl_unit_tests_map_data = configuration_data() if have_cogl_tests cogl_test_deps += [libmutter_cogl_test_fixtures_dep] + + cogl_unit_tests_map_data.set('unit_tests_symbols', 'test_*; unit_test_*;') endif +libmutter_cogl_map = configure_file( + input: 'libmutter-cogl.map.in', + output: 'libmutter-cogl.map', + configuration: cogl_unit_tests_map_data, + install: false, +) + libmutter_cogl_name = 'mutter-cogl-' + libmutter_api_version -libmutter_cogl_map = 'libmutter-cogl.map' libmutter_cogl_link_args = [ - '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), - libmutter_cogl_map), + '-Wl,--version-script,@0@'.format(libmutter_cogl_map), ] libmutter_cogl = shared_library(libmutter_cogl_name, sources: [cogl_sources, cogl_headers_all], diff --git a/cogl/tests/conform/meson/find-conform-unit-tests.sh b/cogl/tests/conform/meson/find-conform-unit-tests.sh index acbc40903..3c42b0a89 100755 --- a/cogl/tests/conform/meson/find-conform-unit-tests.sh +++ b/cogl/tests/conform/meson/find-conform-unit-tests.sh @@ -3,8 +3,6 @@ inputfile="$1" outputfile="$2" -echo > "$outputfile" - sed -n -e 's/^ \{1,\}ADD_TEST *( *\([a-zA-Z0-9_]\{1,\}\).*/\1/p' "$inputfile" | while read -r test; do echo "$test" >> "$outputfile" done diff --git a/cogl/tests/unit/meson.build b/cogl/tests/unit/meson.build index 39693443d..2869764f3 100644 --- a/cogl/tests/unit/meson.build +++ b/cogl/tests/unit/meson.build @@ -23,20 +23,20 @@ libmutter_cogl_test_unit = executable('test-unit', install: false, ) -find_unit_tests = find_program('meson/find-unit-tests.sh') -cogl_unit_unit_tests = custom_target('cogl-tests-unit-unit-tests', - output: 'unit-tests', - input: libmutter_cogl, - command: [find_unit_tests, '@INPUT@', '@OUTPUT@'], - install: false, -) +cogl_unit_tests = run_command( + find_program('meson/find-unit-tests.sh'), cogl_srcdir, '/dev/stdout', + check: true, +).stdout().strip().split('\n') -test('unit', cogl_run_tests, - suite: ['cogl'], - args: [ - cogl_config_env, - libmutter_cogl_test_unit, - cogl_unit_unit_tests - ], - is_parallel: false, -) +foreach test_target: cogl_unit_tests + test_name = '-'.join(test_target.split('_')) + test(test_name, cogl_run_tests, + suite: ['cogl', 'cogl/unit'], + args: [ + cogl_config_env, + libmutter_cogl_test_unit, + 'unit_test_' + test_target + ], + is_parallel: false, + ) +endforeach diff --git a/cogl/tests/unit/meson/find-unit-tests.sh b/cogl/tests/unit/meson/find-unit-tests.sh index 14370fb73..dc8ceb2bc 100755 --- a/cogl/tests/unit/meson/find-unit-tests.sh +++ b/cogl/tests/unit/meson/find-unit-tests.sh @@ -1,6 +1,9 @@ #!/bin/sh -inputfile="$1" +inputdir="$1" outputfile="$2" -nm "$inputfile" | grep '[DR] _\?unit_test_'|sed 's/.\+ [DR] _\?//' > "$outputfile" +echo > "$outputfile" + +grep -h -r --include \*.c UNIT_TEST "$inputdir" | \ + sed -n -e 's/^UNIT_TEST *( *\([a-zA-Z0-9_]\{1,\}\).*/\1/p' > "$outputfile"