zxing: initial plugin revision
[platform/upstream/gstreamer.git] / tests / check / meson.build
1 have_registry = true # FIXME get_option('registry')
2
3 libparser = static_library('parser',
4   'elements/parser.c',
5   install : false,
6   dependencies : [gst_dep, gstcheck_dep],
7 )
8
9 libparser_dep = declare_dependency(link_with: libparser,
10   sources: ['elements/parser.h'])
11
12 # FIXME: automagic
13 exif_dep = dependency('libexif', version : '>= 0.6.16', required : false)
14
15 enable_gst_player_tests = get_option('gst_player_tests')
16
17 # name, condition when to skip the test and extra dependencies
18 base_tests = [
19   [['elements/aiffparse.c']],
20   [['elements/asfmux.c']],
21   [['elements/autoconvert.c']],
22   [['elements/autovideoconvert.c']],
23   [['elements/avwait.c']],
24   [['elements/camerabin.c']],
25   [['elements/d3d11colorconvert.c'], host_machine.system() != 'windows', ],
26   [['elements/gdpdepay.c']],
27   [['elements/gdppay.c']],
28   [['elements/h263parse.c'], false, [libparser_dep, gstcodecparsers_dep]],
29   [['elements/h264parse.c'], false, [libparser_dep, gstcodecparsers_dep]],
30   [['elements/h265parse.c'], false, [libparser_dep, gstcodecparsers_dep]],
31   [['elements/hlsdemux_m3u8.c'], not hls_dep.found(), [hls_dep]],
32   [['elements/id3mux.c']],
33   [['elements/jpeg2000parse.c'], false, [libparser_dep, gstcodecparsers_dep]],
34   [['elements/mpegtsmux.c'], false, [gstmpegts_dep]],
35   [['elements/mpeg4videoparse.c'], false, [libparser_dep, gstcodecparsers_dep]],
36   [['elements/mpegvideoparse.c'], false, [libparser_dep, gstcodecparsers_dep]],
37   [['elements/msdkh264enc.c'], not have_msdk, [msdk_dep]],
38   [['elements/mxfdemux.c']],
39   [['elements/mxfmux.c']],
40   [['elements/nvenc.c'], false, [gmodule_dep, gstgl_dep]],
41   [['elements/nvdec.c'], not gstgl_dep.found(), [gmodule_dep, gstgl_dep]],
42   [['elements/svthevcenc.c'], not svthevcenc_dep.found(), [svthevcenc_dep]],
43   [['elements/pcapparse.c'], false, [libparser_dep]],
44   [['elements/pnm.c']],
45   [['elements/rtponvifparse.c']],
46   [['elements/rtponviftimestamp.c']],
47   [['elements/rtpsrc.c']],
48   [['elements/rtpsink.c']],
49   [['elements/switchbin.c']],
50   [['elements/videoframe-audiolevel.c']],
51   [['elements/viewfinderbin.c']],
52   [['libs/h264parser.c'], false, [gstcodecparsers_dep]],
53   [['libs/h265parser.c'], false, [gstcodecparsers_dep]],
54   [['libs/insertbin.c'], false, [gstinsertbin_dep]],
55   [['libs/isoff.c'], false, [gstisoff_dep]],
56   [['libs/mpegts.c'], false, [gstmpegts_dep]],
57   [['libs/mpegvideoparser.c'], false, [gstcodecparsers_dep]],
58   [['libs/planaraudioadapter.c'], false, [gstbadaudio_dep]],
59   [['libs/player.c'], not enable_gst_player_tests, [gstplayer_dep]],
60   [['libs/vc1parser.c'], false, [gstcodecparsers_dep]],
61   [['libs/vp8parser.c'], false, [gstcodecparsers_dep]],
62   [['libs/vkmemory.c'], not gstvulkan_dep.found(), [gstvulkan_dep]],
63   [['elements/vkcolorconvert.c'], not gstvulkan_dep.found(), [gstvulkan_dep]],
64   [['libs/vkwindow.c'], not gstvulkan_dep.found(), [gstvulkan_dep]],
65   [['libs/vkdevice.c'], not gstvulkan_dep.found(), [gstvulkan_dep]],
66   [['elements/vkdeviceprovider.c'], not gstvulkan_dep.found(), [gstvulkan_dep]],
67   [['libs/vkcommandpool.c'], not gstvulkan_dep.found(), [gstvulkan_dep]],
68   [['libs/vkimage.c'], not gstvulkan_dep.found(), [gstvulkan_dep]],
69 ]
70
71 # FIXME: unistd dependency, unstable or not tested yet on windows
72 if host_machine.system() != 'windows'
73   base_tests += [
74     [['elements/assrender.c'], not ass_dep.found(), [ass_dep]],
75     [['elements/avtpaafpay.c'], not avtp_dep.found(), [avtp_dep]],
76     [['elements/avtpaafdepay.c'], not avtp_dep.found(), [avtp_dep]],
77     [['elements/avtpcvfpay.c'], not avtp_dep.found(), [avtp_dep]],
78     [['elements/avtpcvfdepay.c'], not avtp_dep.found(), [avtp_dep]],
79     [['elements/avtpsink.c'], not avtp_dep.found(), [avtp_dep]],
80     [['elements/avtpsrc.c'], not avtp_dep.found(), [avtp_dep]],
81     [['elements/ccconverter.c']],
82     [['elements/cccombiner.c']],
83     [['elements/ccextractor.c']],
84     [['elements/clockselect.c']],
85     [['elements/line21.c']],
86     [['elements/curlhttpsink.c'], not curl_dep.found(), [curl_dep]],
87     [['elements/curlhttpsrc.c'], not curl_dep.found(), [curl_dep, gio_dep]],
88     [['elements/curlfilesink.c'],
89         not curl_dep.found() or not cdata.has('HAVE_UNISTD_H'), [curl_dep]],
90     [['elements/curlftpsink.c'], not curl_dep.found(), [curl_dep]],
91     [['elements/curlsmtpsink.c'], not curl_dep.found(), [curl_dep]],
92     [['elements/dash_mpd.c'], not xml2_dep.found(), [xml2_dep]],
93     [['elements/dtls.c'], not libcrypto_dep.found(), [libcrypto_dep]],
94     [['elements/faac.c'],
95         not faac_dep.found() or not cc.has_header_symbol('faac.h', 'faacEncOpen') or not cdata.has('HAVE_UNISTD_H'),
96         [faac_dep]],
97     [['elements/faad.c'],
98         not faad_dep.found() or not have_faad_2_7 or not cdata.has('HAVE_UNISTD_H'),
99         [faad_dep]],
100     [['elements/jifmux.c'],
101         not exif_dep.found() or not cdata.has('HAVE_UNISTD_H'), [exif_dep]],
102     [['elements/jpegparse.c'], not cdata.has('HAVE_UNISTD_H')],
103     [['elements/kate.c'],
104         not kate_dep.found() or not cdata.has('HAVE_UNISTD_H'), [kate_dep]],
105     [['elements/netsim.c']],
106     [['elements/shm.c'], not shm_enabled, shm_deps],
107     [['elements/voaacenc.c'],
108         not voaac_dep.found() or not cdata.has('HAVE_UNISTD_H'), [voaac_dep]],
109     [['elements/webrtcbin.c'], not libnice_dep.found(), [gstwebrtc_dep]],
110     [['elements/x265enc.c'], not x265_dep.found(), [x265_dep]],
111     [['elements/zbar.c'], not zbar_dep.found(), [zbar_dep]],
112     [['elements/zxing.c'], not zxing_dep.found(), [zxing_dep]],
113   ]
114 endif
115
116 test_defines = [
117   '-UG_DISABLE_ASSERT',
118   '-UG_DISABLE_CAST_CHECKS',
119   '-DGST_CHECK_TEST_ENVIRONMENT_BEACON="GST_STATE_IGNORE_ELEMENTS"',
120   '-DGST_TEST_FILES_PATH="' + meson.current_source_dir() + '/../files"',
121   '-DTEST_PATH="' + meson.current_build_dir() + '/media"',
122   '-DDASH_MPD_DATADIR=' + meson.current_source_dir() + '/elements/dash_mpd_data',
123   '-DGST_USE_UNSTABLE_API',
124 ]
125
126 test_deps = [gst_dep, gstapp_dep, gstbase_dep,
127              gstbasecamerabin_dep, gstphotography_dep,
128              gstpbutils_dep, gstcontroller_dep, gstaudio_dep,
129              gstvideo_dep, gstrtp_dep, gsturidownloader_dep,
130              gstcheck_dep, gio_dep, glib_dep, gsttag_dep]
131
132 pluginsdirs = [  ]
133
134 if gst_dep.type_name() == 'pkgconfig'
135   pbase = dependency('gstreamer-plugins-base-' + api_version)
136
137   pluginsdirs = [gst_dep.get_pkgconfig_variable('pluginsdir')] + [pbase.get_pkgconfig_variable('pluginsdir')]
138 endif
139
140 foreach t : base_tests
141   fnames = t.get(0)
142   test_name = fnames[0].split('.').get(0).underscorify()
143   skip_test = false
144   extra_deps = [ ]
145
146   if t.length() >= 3
147     extra_deps = t.get(2)
148   endif
149
150   if t.length() >= 2
151     skip_test = t.get(1)
152   endif
153
154   if not skip_test
155     exe = executable(test_name, fnames,
156       include_directories : [configinc],
157       c_args : ['-DHAVE_CONFIG_H=1' ] + test_defines,
158       cpp_args : gst_plugins_bad_args,
159       dependencies : [libm] + test_deps + extra_deps,
160     )
161
162     env = environment()
163     env.set('GST_PLUGIN_SYSTEM_PATH_1_0', '')
164     env.set('CK_DEFAULT_TIMEOUT', '20')
165     env.set('GST_STATE_IGNORE_ELEMENTS', '')
166     env.set('GST_PLUGIN_PATH_1_0', [meson.build_root()] + pluginsdirs)
167     env.set('GST_REGISTRY', join_paths(meson.current_build_dir(), '@0@.registry'.format(test_name)))
168     env.set('GST_PLUGIN_LOADING_WHITELIST', 'gstreamer', 'gst-plugins-base',
169       'gst-plugins-good', 'gst-plugins-ugly','gst-libav',
170       'gst-plugins-bad@' + meson.build_root())
171     test(test_name, exe, env: env, timeout: 3 * 60)
172   endif
173 endforeach
174
175 # orc tests
176 orc_tests = [
177   ['orc_bayer', files('../../gst/bayer/gstbayerorc.orc')],
178 ]
179
180 orc_test_dep = dependency('', required : false)
181 if have_orcc
182   # FIXME: there should really just be a separate orc-test-0.4.pc file for this
183   if orc_dep.type_name() == 'pkgconfig'
184     orc_test_dep = cc.find_library('orc-test-0.4', required : false)
185   else
186     orc_test_dep = dependency('', fallback: ['orc', 'orc_test_dep'], required: false)
187   endif
188 endif
189
190 if have_orcc and orc_test_dep.found()
191   foreach t : orc_tests
192     tname = t[0]
193     torcfile = t[1]
194     tcfilename = '@0@.c'.format(tname)
195     test_c = custom_target(tcfilename,
196       output: tcfilename,
197       input: torcfile,
198       command: [orcc, '--include', 'stdint.h', '--test', '-o', '@OUTPUT@', '@INPUT@'])
199     test_exe = executable(tname, test_c, dependencies: [orc_dep, orc_test_dep])
200     test(tname, test_exe)
201   endforeach
202 endif
203
204 if enable_gst_player_tests
205   subdir ('media')
206 endif