tests: Enable unit test on Windows
authorSeungha Yang <seungha.yang@navercorp.com>
Fri, 7 Dec 2018 12:46:12 +0000 (21:46 +0900)
committerSeungha Yang <seungha.yang@navercorp.com>
Tue, 18 Dec 2018 13:52:24 +0000 (22:52 +0900)
Allow run some unit tests on Windows.
* Remove hardcoded path separator in whitelist env for Meson to choose
  OS-specific separator automatically (i.e., ';' for windows and ':' for *nix)
* Add dependency explicitly for some test cases, otherwise plugins couldn't be
  loaded on uninstalled environment of Windows.

meson.build
tests/check/meson.build
tests/meson.build

index f3f8800..0da37dd 100644 (file)
@@ -240,12 +240,9 @@ gstnet_dep = dependency('gstreamer-net-1.0', version : gst_req,
   fallback : ['gstreamer', 'gst_net_dep'])
 gstcontroller_dep = dependency('gstreamer-controller-1.0', version : gst_req,
   fallback : ['gstreamer', 'gst_controller_dep'])
-if host_system != 'windows'
-  gstcheck_dep = dependency('gstreamer-check-1.0', version : gst_req,
-    required : get_option('tests'),
-    fallback : ['gstreamer', 'gst_check_dep'])
-endif
-
+gstcheck_dep = dependency('gstreamer-check-1.0', version : gst_req,
+  required : get_option('tests'),
+  fallback : ['gstreamer', 'gst_check_dep'])
 gstpbutils_dep = dependency('gstreamer-pbutils-1.0', version : gst_req,
     fallback : ['gst-plugins-base', 'pbutils_dep'])
 gstallocators_dep = dependency('gstreamer-allocators-1.0', version : gst_req,
index c4e0c8d..48fbab9 100644 (file)
@@ -15,17 +15,13 @@ libparser_dep = declare_dependency(link_with : libparser,
 
 # name, condition when to skip the test and extra dependencies
 good_tests = [
-  [ 'elements/audioamplify' ],
-  [ 'elements/audiochebband' ],
-  [ 'elements/audiocheblimit' ],
-  [ 'elements/audiodynamic' ],
-  [ 'elements/audioecho' ],
-  [ 'elements/audiofirfilter' ],
-  [ 'elements/audioiirfilter' ],
-  [ 'elements/audioinvert' ],
-  [ 'elements/audiopanorama' ],
-  [ 'elements/audiowsincband' ],
-  [ 'elements/audiowsinclimit' ],
+  [ 'elements/audiochebband', false, [gstfft_dep] ],
+  [ 'elements/audiocheblimit', false, [gstfft_dep] ],
+  [ 'elements/audioecho', false, [gstfft_dep] ],
+  [ 'elements/audiofirfilter', false, [gstfft_dep] ],
+  [ 'elements/audioiirfilter', false, [gstfft_dep] ],
+  [ 'elements/audiowsincband', false, [gstfft_dep] ],
+  [ 'elements/audiowsinclimit', false, [gstfft_dep] ],
   [ 'elements/alphacolor' ],
   [ 'elements/alpha' ],
   [ 'elements/aacparse', false, [libparser_dep] ],
@@ -33,40 +29,23 @@ good_tests = [
   [ 'elements/amrparse', false, [libparser_dep] ],
   [ 'elements/flacparse', false, [libparser_dep] ],
   [ 'elements/mpegaudioparse', false, [libparser_dep] ],
-  [ 'elements/wavpackparse' ],
   [ 'elements/autodetect' ],
-  [ 'elements/avimux' ],
-  [ 'elements/avisubtitle' ],
-  [ 'elements/capssetter' ],
   [ 'elements/deinterlace' ],
   [ 'elements/dtmf' ],
-  [ 'pipelines/flacdec', not flac_dep.found() ],
   [ 'elements/flvdemux' ],
   [ 'elements/flvmux' ],
-  [ 'elements/qtmux' ],
-  [ 'elements/qtdemux' ],
   [ 'elements/mulawdec' ],
   [ 'elements/mulawenc' ],
-  [ 'elements/gdkpixbufsink', not gdkpixbuf_dep.found(), [gdkpixbuf_dep] ],
-  [ 'elements/gdkpixbufoverlay', not gdkpixbuf_dep.found() ],
   [ 'elements/icydemux' ],
   [ 'elements/id3demux' ],
   [ 'elements/imagefreeze' ],
   [ 'elements/deinterleave' ],
   [ 'elements/interleave' ],
-  [ 'elements/jpegdec', not jpeglib.found() ],
-  [ 'elements/jpegenc', not jpeglib.found() ],
-  [ 'elements/level' ],
-  [ 'elements/matroskademux' ],
-  [ 'elements/matroskamux' ],
-  [ 'elements/matroskaparse' ],
-  [ 'elements/mpg123audiodec', not mpg123_dep.found(),  [gstfft_dep]],
-  [ 'elements/multifile' ],
-  [ 'elements/splitmux' ],
+  [ 'elements/matroskademux', false, [gstriff_dep] ],
+  [ 'elements/matroskaparse', false, [gstriff_dep] ],
   [ 'elements/rganalysis' ],
   [ 'elements/rglimiter' ],
   [ 'elements/rgvolume' ],
-  [ 'elements/rtp-payloading' ],
   [ 'elements/rtph261' ],
   [ 'elements/rtph263' ],
   [ 'elements/rtpvp9' ],
@@ -83,31 +62,12 @@ good_tests = [
   [ 'elements/rtpred' ],
   [ 'elements/rtpulpfec' ],
   [ 'elements/rtpssrcdemux' ],
-  [ 'elements/souphttpsrc', not libsoup_dep.found(), [libsoup_dep] ],
-  [ 'elements/spectrum' ],
-  [ 'elements/shapewipe' ],
-  [ 'elements/id3v2mux', not taglib_dep.found() ],
-  [ 'elements/apev2mux', not taglib_dep.found() ],
   [ 'elements/udpsink' ],
-  [ 'elements/udpsrc' ],
-  [ 'elements/videobox' ],
   [ 'elements/aspectratiocrop' ],
-  [ 'elements/videocrop' ],
-  [ 'elements/videofilter' ],
-  [ 'elements/videomixer' ],
-  [ 'elements/vp8enc', not vpx_dep.found() or not have_vp8_encoder ],
-  [ 'elements/vp8dec', not vpx_dep.found() or not have_vp8_decoder ],
-  [ 'elements/vp9enc', not vpx_dep.found() or not have_vp9_encoder ],
-  [ 'pipelines/lame', not lame_dep.found() ],
   [ 'pipelines/wavenc' ],
-  [ 'elements/wavpackdec', not wavpack_dep.found() ],
-  [ 'elements/wavpackenc', not wavpack_dep.found() ],
-  [ 'pipelines/wavpack', not wavpack_dep.found() ],
-  [ 'elements/wavparse' ],
-  [ 'elements/y4menc' ],
+  [ 'elements/wavparse', false, [gstriff_dep] ],
   [ 'pipelines/effectv' ],
   [ 'elements/equalizer' ],
-  [ 'generic/states' ],
   [ 'pipelines/simple-launch-lines' ],
   [ 'pipelines/tagschecking' ],
 ]
@@ -115,6 +75,52 @@ good_tests = [
 # FIXME: valgrind elements/rtp-payloading - needs fixing
 # elements/videocrop should be disabled since it takes way too long in valgrind
 
+# FIXME: unistd dependency or not tested yet on windows
+if host_machine.system() != 'windows'
+  good_tests += [
+    [ 'elements/audioamplify', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/audiodynamic', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/audioinvert', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/audiopanorama', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/wavpackparse', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/avimux', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/avisubtitle', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/capssetter', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/qtmux', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/qtdemux', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'pipelines/flacdec', not flac_dep.found() ],
+    [ 'elements/gdkpixbufsink', not gdkpixbuf_dep.found(), [gdkpixbuf_dep] ],
+    [ 'elements/gdkpixbufoverlay', not gdkpixbuf_dep.found() ],
+    [ 'elements/jpegdec', not jpeglib.found() ],
+    [ 'elements/jpegenc', not jpeglib.found() ],
+    [ 'elements/level', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/matroskamux', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/mpg123audiodec', not mpg123_dep.found(),  [gstfft_dep]],
+    [ 'elements/multifile', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/splitmux', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/rtp-payloading', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/souphttpsrc', not libsoup_dep.found(), [libsoup_dep] ],
+    [ 'elements/spectrum', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/shapewipe', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/id3v2mux', not taglib_dep.found() ],
+    [ 'elements/apev2mux', not taglib_dep.found() ],
+    [ 'elements/udpsrc', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/videobox', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/videocrop', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/videofilter', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/videomixer', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'elements/vp8enc', not vpx_dep.found() or not have_vp8_encoder ],
+    [ 'elements/vp8dec', not vpx_dep.found() or not have_vp8_decoder ],
+    [ 'elements/vp9enc', not vpx_dep.found() or not have_vp9_encoder ],
+    [ 'pipelines/lame', not lame_dep.found() ],
+    [ 'elements/wavpackdec', not wavpack_dep.found() ],
+    [ 'elements/wavpackenc', not wavpack_dep.found() ],
+    [ 'pipelines/wavpack', not wavpack_dep.found() ],
+    [ 'elements/y4menc', not cdata.has('HAVE_UNISTD_H') ],
+    [ 'generic/states', not cdata.has('HAVE_UNISTD_H')],
+  ]
+endif
+
 foo='''
 if HAVE_ORC
 check_orc = orc/deinterlace orc/videomixer orc/videobox
@@ -179,7 +185,7 @@ foreach t : good_tests
     env.set('GST_STATE_IGNORE_ELEMENTS', state_ignore_elements)
     env.set('CK_DEFAULT_TIMEOUT', '20')
     env.set('GST_PLUGIN_LOADING_WHITELIST', 'gstreamer', 'gst-plugins-base',
-      'gst-plugins-good@' + meson.build_root(), separator: ':')
+      'gst-plugins-good@' + meson.build_root())
     env.set('GST_PLUGIN_PATH_1_0', [meson.build_root()] + pluginsdirs)
     env.set('GSETTINGS_BACKEND', 'memory')
 
index 55d144f..d55175a 100644 (file)
@@ -1,8 +1,5 @@
-# FIXME: make check work on windows
-if host_system != 'windows'
-  if not get_option('tests').disabled() and gstcheck_dep.found()
-    subdir('check')
-  endif
+if not get_option('tests').disabled() and gstcheck_dep.found()
+  subdir('check')
 endif
 
 subdir('icles')