From 794ada056a26d45246ac229136b8a4a01ade19d8 Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Thu, 18 May 2017 22:02:38 +0200 Subject: [PATCH] tests: start porting to meson Incomplete port, to get the ball rolling https://bugzilla.gnome.org/show_bug.cgi?id=782962 --- meson.build | 5 +++ tests/check/meson.build | 110 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/meson.build | 4 ++ 3 files changed, 119 insertions(+) create mode 100644 tests/check/meson.build create mode 100644 tests/meson.build diff --git a/meson.build b/meson.build index b057a7f..cc6f245 100644 --- a/meson.build +++ b/meson.build @@ -308,6 +308,10 @@ gsttag_dep = dependency('gstreamer-tag-1.0', version : gst_req, fallback : ['gst-plugins-base', 'tag_dep']) gstvideo_dep = dependency('gstreamer-video-1.0', version : gst_req, fallback : ['gst-plugins-base', 'video_dep']) +if host_machine.system() != 'windows' + gstcheck_dep = dependency('gstreamer-check-1.0', version : gst_req, + fallback : ['gstreamer', 'gst_check_dep']) +endif libm = cc.find_library('m', required : false) glib_dep = dependency('glib-2.0', version : glib_req) @@ -407,6 +411,7 @@ subdir('gst-libs') subdir('gst') subdir('sys') subdir('ext') +subdir('tests') subdir('pkgconfig') python3 = find_program('python3') diff --git a/tests/check/meson.build b/tests/check/meson.build new file mode 100644 index 0000000..01943ec --- /dev/null +++ b/tests/check/meson.build @@ -0,0 +1,110 @@ +have_registry = true # FIXME not get_option('disable_registry') + +libparser = library('parser', + 'elements/parser.c', 'elements/parser.h', + install : false, + dependencies : [gst_dep, gstcheck_dep], +) + +libparser_dep = declare_dependency(link_with: libparser, + sources: ['elements/parser.h']) + +exif_dep = dependency('libexif', version : '>= 0.6.16', required : false) + +# name, condition when to skip the test and extra dependencies +base_tests = [ + [['elements/aiffparse.c']], + [['elements/asfmux.c']], + [['elements/assrender.c'], not ass_dep.found(), [ass_dep]], + [['elements/audiointerleave.c']], + [['elements/audiomixer.c']], + [['elements/autoconvert.c']], + [['elements/autovideoconvert.c']], + [['elements/camerabin.c']], + [['elements/compositor.c']], + [['elements/curlhttpsink.c'], not curl_dep.found(), [curl_dep]], + [['elements/curlfilesink.c'], not curl_dep.found(), [curl_dep]], + [['elements/curlftpsink.c'], not curl_dep.found(), [curl_dep]], + [['elements/curlsmtpsink.c'], not curl_dep.found(), [curl_dep]], + [['elements/dash_isoff.c'], not xml2_dep.found(), [xml2_dep]], + [['elements/dash_mpd.c'], not xml2_dep.found(), [xml2_dep]], + [['elements/faac.c'], not faac_dep.found() or not cc.has_header_symbol('faac.h', 'faacEncOpen'), [faac_dep]], + [['elements/faad.c'], not faad_dep.found() or not have_faad_2_7, [faad_dep]], + [['elements/gdpdepay.c']], + [['elements/gdppay.c']], + [['elements/h263parse.c']], + [['elements/h264parse.c']], + [['elements/id3mux.c']], + [['elements/jifmux.c'], not exif_dep.found(), [exif_dep]], + [['elements/jpegparse.c']], + [['elements/kate.c'], not kate_dep.found(), [kate_dep]], + [['elements/mpeg4videoparse.c']], + [['elements/mpegtsmux.c']], + [['elements/mpegvideoparse.c']], + [['elements/mssdemux.c', 'elements/test_http_src.c', 'elements/adaptive_demux_engine.c', 'elements/adaptive_demux_common.c'], not xml28_dep.found(), [xml28_dep]], + [['elements/mxfdemux.c']], + [['elements/mxfmux.c']], + [['elements/pcapparse.c']], + [['elements/pnm.c']], + [['elements/schroenc.c'], not schro_dep.found(), [schro_dep]], + [['elements/rtponvifparse.c']], + [['elements/rtponviftimestamp.c']], + [['elements/videoframe-audiolevel.c']], + [['elements/viewfinderbin.c']], + [['elements/voaacenc.c'], not voaac_dep.found(), [voaac_dep]], + [['elements/x265enc.c'], not x265_dep.found(), [x265_dep]], + [['elements/zbar.c'], not zbar_dep.found(), [zbar_dep]], +] + +test_defines = [ + '-UG_DISABLE_ASSERT', + '-UG_DISABLE_CAST_CHECKS', + '-DGST_CHECK_TEST_ENVIRONMENT_BEACON="GST_STATE_IGNORE_ELEMENTS"', + '-DGST_TEST_FILES_PATH="' + meson.current_source_dir() + '/../files"', + '-DDASH_MPD_DATADIR=' + meson.current_source_dir() + '/elements/dash_mpd_data', + '-DGST_USE_UNSTABLE_API', +] + +test_deps = [gst_dep, gstapp_dep, gstbase_dep, gstbasecamerabin_dep, gstphotography_dep, gstpbutils_dep, gstcontroller_dep, gstaudio_dep, gstvideo_dep, gstrtp_dep, gsturidownloader_dep, gstcheck_dep, gio_dep, glib_dep, libparser_dep] + +pluginsdirs = [ ] + +if gst_dep.type_name() == 'pkgconfig' + pluginsdirs = [gst_dep.get_pkgconfig_variable('pluginsdir')] + [gst_base_dep.get_pkgconfig_variable('pluginsdir')] +endif + +foreach t : base_tests + fnames = t.get(0) + test_name = fnames[0].split('.').get(0) + skip_test = false + extra_deps = [ ] + + if t.length() >= 3 + extra_deps = t.get(2) + endif + + if t.length() >= 2 + skip_test = t.get(1) + endif + + if not skip_test + exe = executable(test_name, fnames, + include_directories : [configinc], + c_args : ['-DHAVE_CONFIG_H=1' ] + test_defines, + cpp_args : gst_plugins_bad_args, + dependencies : [libm] + test_deps + extra_deps, + ) + + env = environment() + env.set('GST_PLUGIN_PATH_1_0', meson.build_root()) + env.set('GST_PLUGIN_SYSTEM_PATH_1_0', '') + env.set('CK_DEFAULT_TIMEOUT', '20') + env.set('GST_STATE_IGNORE_ELEMENTS', '') + + foreach plugindir: pluginsdirs + env.append('GST_PLUGIN_PATH_1_0', plugindir) + endforeach + env.set('GST_REGISTRY', '@0@/@1@.registry'.format(meson.current_build_dir(), test_name)) + test(test_name, exe, env: env, timeout: 3 * 60) + endif +endforeach diff --git a/tests/meson.build b/tests/meson.build new file mode 100644 index 0000000..b964a35 --- /dev/null +++ b/tests/meson.build @@ -0,0 +1,4 @@ +# FIXME: make check work on windows +if host_machine.system() != 'windows' + subdir('check') +endif -- 2.7.4