summaryrefslogtreecommitdiffstats
path: root/build/meson/meson/tests/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'build/meson/meson/tests/meson.build')
-rw-r--r--build/meson/meson/tests/meson.build158
1 files changed, 158 insertions, 0 deletions
diff --git a/build/meson/meson/tests/meson.build b/build/meson/meson/tests/meson.build
new file mode 100644
index 0000000..df47b83
--- /dev/null
+++ b/build/meson/meson/tests/meson.build
@@ -0,0 +1,158 @@
+# #############################################################################
+# Copyright (c) 2018-present lzutao <taolzu(at)gmail.com>
+# Copyright (c) 2022-present Tristan Partin <tristan(at)partin.io>
+# All rights reserved.
+#
+# This source code is licensed under both the BSD-style license (found in the
+# LICENSE file in the root directory of this source tree) and the GPLv2 (found
+# in the COPYING file in the root directory of this source tree).
+# #############################################################################
+
+lz4_source_root = '../../../..'
+
+fuzzer_time = 90
+test_exes = {
+ 'abiTest': {
+ 'sources': files(lz4_source_root / 'tests/abiTest.c'),
+ 'test': false,
+ },
+ 'checkFrame': {
+ 'sources': files(lz4_source_root / 'tests/checkFrame.c'),
+ 'include_directories': include_directories(lz4_source_root / 'programs'),
+ },
+ 'checkTag': {
+ 'sources': files(lz4_source_root / 'tests/checkTag.c'),
+ 'test': false,
+ },
+ 'datagen': {
+ 'sources': files(lz4_source_root / 'tests/datagencli.c'),
+ 'objects': lz4.extract_objects(lz4_source_root / 'programs/datagen.c'),
+ 'include_directories': include_directories(lz4_source_root / 'programs'),
+ },
+ 'decompress-partial-usingDict.c': {
+ 'sources': files(lz4_source_root / 'tests/decompress-partial-usingDict.c'),
+ },
+ 'decompress-partial.c': {
+ 'sources': files(lz4_source_root / 'tests/decompress-partial.c'),
+ },
+ 'frametest': {
+ 'sources': files(lz4_source_root / 'tests/frametest.c'),
+ 'include_directories': include_directories(lz4_source_root / 'programs'),
+ 'args': ['-v', '-T@0@s'.format(fuzzer_time)],
+ 'test': false,
+ },
+ 'freestanding': {
+ 'sources': files(lz4_source_root / 'tests/freestanding.c'),
+ 'c_args': ['-ffreestanding', '-Wno-unused-parameter', '-Wno-declaration-after-statement'],
+ 'link_args': ['-nostdlib'],
+ 'build': cc.get_id() in ['gcc', 'clang'] and
+ host_machine.system() == 'linux' and host_machine.cpu_family() == 'x86_64',
+ 'override_options': ['optimization=1'],
+ },
+ 'fullbench': {
+ 'sources': files(lz4_source_root / 'tests/fullbench.c'),
+ 'include_directories': include_directories(lz4_source_root / 'programs'),
+ 'args': ['--no-prompt', '-i1', files(lz4_source_root / 'tests/COPYING')],
+ 'test': false,
+ },
+ 'fuzzer': {
+ 'sources': files(lz4_source_root / 'tests/fuzzer.c'),
+ 'include_directories': include_directories(lz4_source_root / 'programs'),
+ 'args': ['-T@0@s'.format(fuzzer_time)],
+ 'test': false,
+ },
+ 'roundTripTest': {
+ 'sources': files(lz4_source_root / 'tests/roundTripTest.c'),
+ 'test': false,
+ },
+}
+
+targets = {}
+
+foreach e, attrs : test_exes
+ if not attrs.get('build', true)
+ targets += {e: disabler()}
+ continue
+ endif
+
+ t = executable(
+ e,
+ attrs.get('sources'),
+ c_args: attrs.get('c_args', []),
+ link_args: attrs.get('link_args', []),
+ objects: attrs.get('objects', []),
+ dependencies: [liblz4_internal_dep],
+ include_directories: attrs.get('include_directories', []),
+ install: false,
+ override_options: attrs.get('override_options', [])
+ )
+
+ targets += {e: t}
+
+ if not attrs.get('test', true)
+ continue
+ endif
+
+ test(
+ e,
+ t,
+ args: attrs.get('params', []),
+ timeout: 120
+ )
+endforeach
+
+fs = import('fs')
+
+run_env.prepend('PATH', meson.current_build_dir())
+
+test_scripts = {
+ 'lz4-basic': {
+ 'depends': [lz4, lz4cat, unlz4, targets['datagen']],
+ },
+ 'lz4-dict': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-contentSize': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-fast-hugefile': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-frame-concatenation': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-multiple': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-multiple-legacy': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-opt-parser': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-skippable': {
+ 'depends': [lz4],
+ },
+ 'lz4-sparse': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-testmode': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4hc-hugefile': {
+ 'depends': [lz4, targets['datagen']],
+ },
+}
+
+foreach s, attrs : test_scripts
+ script = find_program(lz4_source_root / 'tests/test-@0@.sh'.format(s))
+
+ test(
+ '@0@'.format(s),
+ script,
+ depends: attrs.get('depends', []),
+ workdir: fs.parent(script.full_path()),
+ env: run_env,
+ timeout: 360
+ )
+endforeach