yams/tests/meson.build
Trevon 6248c87bcc
Some checks are pending
Fuzz Smoke / libFuzzer smoke (push) Waiting to run
test(daemon): replay startup schedules under a fuzzer (#335)
Startup ordering defects were only observable by waiting minutes on a live
daemon, and the one that aborted it took a live restart loop to find. Give the
startup contracts a deterministic harness that runs in milliseconds.

+ startup_fuzz_support.h drives the real ServiceManagerFsm and the real
  DeferralGate with virtual time: legal phase advances, injected failure,
  shutdown and terminal reset, idle/busy, pressure/calm, starvation deadlines
  and cancellation
+ oracles fail closed on shutdown resurrection without reset, failure-to-ready,
  eligibility disagreeing with fsm.isReady(), admission outside the virtual
  deadline, and ineligible work touching the admission gate; fuzzed IEEE-754
  components must never yield non-finite or out-of-range scores
+ catch2_startup_replay runs named regressions plus 1024 seeded traces per run
  and reports the root seed and action offset for replay
+ fuzz_startup builds the same harness for libFuzzer/AFL, with a seed generator
  that refuses to overwrite different existing files
- the fuzzing lane no longer defaults to TSan: harnesses link
  -fsanitize=fuzzer,address,undefined and the two runtimes cannot share a
  process; combining them now fails with an explanation instead of producing a
  binary that cannot start
- documented the lane invocation, target naming and the coverage limits,
  including that governor call ordering inside the poller is not covered

Scope: contract-valid single-owner schedules. Executor interleavings, late
callbacks, concurrent FSM instances and filesystem/model faults are not modeled.

Signed-off-by: trvon <git@trevon.dev>
2026-10-22 16:48:50 -06:00

4698 lines
172 KiB
Meson
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!Meson configure - time test discovery without fs.glob / subdir_glob
#GTest / GMock migration complete(PBI - 068) : all tests now use Catch2.
#Catch2 dependency for modern test framework(PBI - 050)
#Prefer system installs, but fall back to Meson wrap subproject when available.
catch2_dep = dependency('catch2', required: false, fallback: ['catch2', 'catch2_dep'])
#Get Catch2 partial dependency with includes for test builds
catch2_compile_dep = []
if catch2_dep.found()
catch2_compile_dep = [catch2_dep.partial_dependency(compile_args: true, includes: true)]
endif
#Trailing link deps for Catch2 tests - ensure spdlog / fmt symbols are available
#after Catch2 libs(static link order matters : users before providers)
catch2_trailing_link_deps = [
dependency('spdlog'),
dependency('fmt', required: false),
]
catch2_incs = []
#TSAN suppressions file for tests(if TSAN is enabled)
#Must be defined early before subdirs are included
_tsan_suppressions_file = meson.project_source_root() / 'tsan.suppressions'
_test_tsan_options = 'suppressions=' + _tsan_suppressions_file
_test_thread_sanitizer = yams_sanitize_thread
_test_address_sanitizer = yams_sanitize_address
_test_debug_integrations = get_option('buildtype') == 'debug' and not _test_address_sanitizer
_test_timeout_scale = _test_thread_sanitizer ? 10 : get_option('test-timeout-scale')
_test_timeout_cpp_arg = '-DYAMS_TEST_TIMEOUT_SCALE=' + _test_timeout_scale.to_string()
fs = import('fs')
# Sanitized shared libraries must not introduce a different compiler's runtime.
# Inspect the built artifact without loading it, so mixed-runtime startup crashes
# are reported as a precise linkage assertion rather than hiding the regression.
if yams_sanitize_thread and host_machine.system() == 'linux' and is_variable('yams_onnx_resource_lib')
sanitizer_compiler = meson.get_compiler('cpp').get_id()
if sanitizer_compiler in ['clang', 'gcc']
sanitizer_readelf = find_program('readelf', required: true)
test('onnx_resource_tsan_linkage',
python_exe,
args: [
files('scripts/check_sanitizer_runtime_linkage.py'),
'--library', yams_onnx_resource_lib.full_path(),
'--compiler', sanitizer_compiler,
'--readelf', sanitizer_readelf.full_path(),
],
depends: [yams_onnx_resource_lib],
suite: ['unit', 'build', 'sanitizer'],
timeout: 30,
)
endif
endif
raw_environment_policy_script = files('scripts/check_raw_environment_calls.py')
raw_environment_policy_tests = files('scripts/test_check_raw_environment_calls.py')
raw_environment_allowlist = files('scripts/raw_environment_allowlist.txt')
benchmark_environment_policy_script = files('scripts/check_benchmark_environment_leaks.py')
benchmark_environment_policy_tests = files('scripts/test_check_benchmark_environment_leaks.py')
configuration_authority_policy_script = files('scripts/check_configuration_authority.py')
configuration_authority_policy_tests = files('scripts/test_check_configuration_authority.py')
production_environment_keys = files('scripts/production_environment_keys.txt')
configuration_reader_allowlist = files('scripts/configuration_reader_allowlist.txt')
retrieval_contract_tests = files('benchmarks/test_retrieval_contract.py')
config_key_usage_report_tests = files('scripts/test_report_config_key_usage.py')
portability_policy_script = files('scripts/check_portability.py')
portability_policy_tests = files('scripts/test_check_portability.py')
portability_allowlist = files('scripts/portability_allowlist.txt')
repository_metadata_policy_script = files('scripts/check_repository_metadata.py')
forgejo_mirror_policy_script = files('scripts/check_forgejo_mirror_workflow.py')
experimental_release_source_policy_script = files('scripts/check_experimental_release_source.py')
release_manifest_unit_tests = files('scripts/test_generate_release_manifest.py')
repository_publication_unit_tests = files('scripts/test_publish_repository.py')
test('release_manifest_unit',
python_exe,
args: [release_manifest_unit_tests],
suite: ['unit', 'release'],
timeout: 30,
)
test('repository_publication_unit',
python_exe,
args: [repository_publication_unit_tests],
suite: ['unit', 'policy', 'release', 'repository'],
timeout: 30,
)
test('experimental_release_source_policy',
python_exe,
args: [experimental_release_source_policy_script, '--root', meson.project_source_root()],
suite: ['unit', 'policy', 'release'],
timeout: 30,
)
test('forgejo_mirror_policy',
python_exe,
args: [forgejo_mirror_policy_script, '--root', meson.project_source_root()],
suite: ['unit', 'policy', 'repository'],
timeout: 30,
)
test('serve_runtime_environment_unit',
python_exe,
args: [files('scripts/test_serve_runtime_environment.py')],
suite: ['unit', 'cli', 'mcp'],
timeout: 30,
)
if is_variable('yams_cli_exe') and get_option('build-mcp-server') and host_machine.system() != 'windows'
serve_delegation_args = [files('scripts/test_serve_delegation.py'), '--cli', yams_cli_exe.full_path()]
serve_delegation_deps = [yams_cli_exe]
if is_variable('yams_onnx_resource_lib')
# The fixture relocates the executable, not its build-tree shared libraries.
serve_delegation_args += ['--runtime-library-dir', fs.parent(yams_onnx_resource_lib.full_path())]
serve_delegation_deps += [yams_onnx_resource_lib]
endif
test('serve_delegation',
python_exe,
args: serve_delegation_args,
depends: serve_delegation_deps,
suite: ['integration', 'cli', 'mcp'],
timeout: 90,
)
endif
test('repository_metadata_scan_unit',
python_exe,
args: [files('scripts/test_repository_metadata_scan.py')],
suite: ['unit', 'policy', 'repository'],
timeout: 30,
)
test('repository_metadata_policy',
python_exe,
args: [repository_metadata_policy_script, '--root', meson.project_source_root()],
suite: ['unit', 'policy', 'repository'],
timeout: 30,
)
test('raw_environment_policy_unit',
python_exe,
args: [raw_environment_policy_tests],
suite: ['unit', 'policy', 'environment'],
timeout: 30,
)
test('raw_environment_policy',
python_exe,
args: [
raw_environment_policy_script,
'--root', meson.project_source_root(),
'--allowlist', raw_environment_allowlist,
],
suite: ['unit', 'policy', 'environment'],
timeout: 30,
)
test('benchmark_environment_policy_unit',
python_exe,
args: [benchmark_environment_policy_tests],
suite: ['unit', 'policy', 'environment'],
timeout: 30,
)
test('benchmark_environment_policy',
python_exe,
args: [benchmark_environment_policy_script, '--root', meson.project_source_root()],
suite: ['unit', 'policy', 'environment'],
timeout: 30,
)
test('configuration_authority_policy_unit',
python_exe,
args: [configuration_authority_policy_tests],
suite: ['unit', 'policy', 'configuration'],
timeout: 30,
)
test('configuration_authority_policy',
python_exe,
args: [
configuration_authority_policy_script,
'--root', meson.project_source_root(),
'--environment-allowlist', production_environment_keys,
'--reader-allowlist', configuration_reader_allowlist,
],
suite: ['unit', 'policy', 'configuration'],
timeout: 30,
)
test('config_key_usage_report_unit',
python_exe,
args: [config_key_usage_report_tests],
suite: ['unit', 'policy', 'configuration'],
timeout: 30,
)
test('retrieval_contract_unit',
python_exe,
args: [retrieval_contract_tests],
workdir: meson.project_source_root() / 'tests' / 'benchmarks',
suite: ['unit', 'policy', 'benchmark'],
timeout: 30,
)
test('meson_failure_reporter_unit',
python_exe,
args: files('scripts/test_report_meson_failures.py'),
suite: ['unit', 'ci'],
timeout: 30,
)
test('portability_policy_unit',
python_exe,
args: [portability_policy_tests],
suite: ['unit', 'policy', 'portability'],
timeout: 30,
)
test('portability_policy',
python_exe,
args: [
portability_policy_script,
'--root', meson.project_source_root(),
'--allowlist', portability_allowlist,
],
suite: ['unit', 'policy', 'portability'],
timeout: 30,
)
release_candidate_unit_tests = files('scripts/test_validate_release_candidate.py')
test('release_candidate_unit',
python_exe,
args: [release_candidate_unit_tests],
suite: ['unit', 'policy', 'release'],
timeout: 30,
)
git_environment_isolation_tests = files('scripts/test_git_environment_isolation.py')
test('git_environment_isolation_unit',
python_exe,
args: [git_environment_isolation_tests],
suite: ['unit', 'policy', 'release'],
timeout: 60,
)
promotion_reconciliation_tests = files('scripts/test_reconcile_promotion_pr.py')
test('promotion_reconciliation',
python_exe,
args: [promotion_reconciliation_tests],
suite: ['unit', 'policy', 'release'],
timeout: 30,
)
cli11_dep = cli11_resolved_dep
if not cli11_dep.found()
cli11_dep = declare_dependency()
endif
#Common dependencies for tests; mirror CLI breadth to cover includes
test_deps = [
dependency('spdlog'),
dependency('nlohmann_json'),
dependency('sqlite3'),
dependency('OpenSSL'),
cli11_dep,
boost_dep,
dependency('libcurl', required: false),
dependency('zlib'),
dependency('fmt', required: false),
dependency('yams_core'),
dependency('yams_config'),
dependency('yams_crypto'),
dependency('yams_chunking'),
dependency('yams_compression'),
dependency('yams_storage_engine'),
dependency('yams_reference_counter'),
dependency('yams_manifest'),
dependency('yams_integrity'),
dependency('yams_metadata'),
dependency('yams_topology'),
dependency('yams_extraction'),
dependency('yams_detection'),
dependency('yams_content'),
dependency('yams_downloader'),
dependency('yams_vector'),
dependency('yams_search'),
dependency('yams_api'),
dependency('yams_repair'),
dependency('yams_app_services'),
dependency('yams_daemon_client'),
dependency('yams_daemon'),
]
# YAMS_TESTING build of TuneAdvisor's bodies must precede the production archive on every test
# link line (see src/daemon/tune_advisor/meson.build). Order is load-bearing: meson emits
# dependencies in list order, and the first archive that defines a symbol wins. Any executable
# compiled with -DYAMS_TESTING that does not use test_deps must list
# yams_tune_advisor_testing first itself.
test_deps = [dependency('yams_tune_advisor_testing')] + test_deps
yams_plugins_mgmt_dep = dependency('yams_plugins_mgmt', required: false)
if yams_plugins_mgmt_dep.found()
test_deps += yams_plugins_mgmt_dep
endif
yams_mcp_dep = dependency('yams_mcp', required: false)
if yams_mcp_dep.found()
test_deps += yams_mcp_dep
endif
onnxruntime_dep_opt = onnxruntime_resolved_dep
if onnxruntime_dep_opt.found()
test_deps += onnxruntime_dep_opt
endif
#Windows : stage runtime DLLs next to every test executable(mirrors Windows install).
#Placing DLLs alongside the test binaries prevents the loader from falling back to
#older System32 copies(e.g., onnxruntime.dll API 17) and keeps tests aligned with
#the Conan - shipped runtime used for installation.
if host_machine.system() == 'windows' and windows_runtime_dlls.length() > 0
py_mod = import('python')
python = py_mod.find_installation('python3', required: false)
if not python.found()
python = py_mod.find_installation('python', required: false)
endif
if python.found()
#All test binary directories(relative to builddir / tests)
test_runtime_dirs = [
'.',
'integration',
'integration/smoke',
'integration/daemon',
'integration/cli',
'integration/search',
'integration/services',
]
foreach dll_info : windows_runtime_dlls
dll_name = dll_info[0]
dll_src = dll_info[1]
foreach dest_rel : test_runtime_dirs
dest_path = join_paths(meson.current_build_dir(), dest_rel, dll_name)
stamp = 'dllcopy_@0@_@1@.stamp'.format(dll_name, dest_rel.replace('/', '_'))
custom_target(stamp,
input: dll_src,
output: stamp,
command: [python, '-c',
'import pathlib, shutil, sys; src=sys.argv[1]; dest=pathlib.Path(sys.argv[2]); stamp=pathlib.Path(sys.argv[3]); dest.parent.mkdir(parents=True, exist_ok=True); shutil.copy2(src, dest); stamp.parent.mkdir(parents=True, exist_ok=True); stamp.write_text("ok")',
dll_src, dest_path, '@OUTPUT@'],
build_by_default: true,
)
endforeach
endforeach
else
message('Python not found (python3/python); skipping Windows test runtime DLL staging')
endif
endif
# Snapshot non-CLI dependencies for component-only tests before the broad CLI lane.
embedding_service_test_deps = test_deps
tests_has_cli = false
tests_has_cli11 = cli11_dep.found()
if get_option('build-cli')
yams_cli_dep = dependency('yams_cli', required: false)
if yams_cli_dep.found()
test_deps += yams_cli_dep
tests_has_cli = true
else
message('build-cli enabled but yams_cli dependency not found; skipping CLI-dependent tests.')
endif
else
#If build - cli is disabled, still try to find yams_cli but don't error if missing
yams_cli_dep = dependency('yams_cli', required: false)
if yams_cli_dep.found()
test_deps += yams_cli_dep
tests_has_cli = true
endif
endif
incs = [
include_directories('..'), # project root
include_directories('.'), # tests/
include_directories('common'), # shared helpers
include_directories('../include'), # headers
generated_inc, # builddir/version_generated.h
] + catch2_incs
#Keep project strict, but don’t fail unit tests on common test - only warnings.
#We downgrade selective warnings to non - errors for test targets only.
cxx = meson.get_compiler('cpp')
test_cpp_noerror_args = cxx.get_supported_arguments([
'-Wno-error=sign-compare',
'-Wno-error=unused-variable',
'-Wno-error=unused-but-set-variable',
'-Wno-error=unused-result',
'-Wno-error=unused-lambda-capture',
'-Wno-error=missing-field-initializers',
])
catch2_main_dep = disabler()
if catch2_dep.found()
catch2_yams_main_lib = static_library('catch2_yams_main',
files('support/catch2_main.cpp'),
dependencies: [catch2_dep],
cpp_args: test_cpp_noerror_args,
install: false,
)
catch2_main_dep = declare_dependency(
link_with: catch2_yams_main_lib,
dependencies: [catch2_dep],
)
endif
#Meson - native test registration via structured subdirs(no shell globs).
#Unit tests are now individual Catch2 executables; tests / unit keeps only a
#compatibility stub for older yams_unit_objs references.
subdir('unit')
if get_option('build-plugins') and catch2_dep.found()
subdir('plugins')
endif
if get_option('enable-integration-tests') or _test_debug_integrations
subdir('integration/smoke')
subdir('integration/daemon')
subdir('integration/cli')
subdir('integration/search')
endif
if get_option('enable-mobile-tests')
subdir('mobile')
endif
stress_srcs = files(
'stress/storage/concurrent_catch2_test.cpp',
'stress/mcp_socket_stress_catch2_test.cpp',
)
#Prefer Conan CMake config before falling back to system discovery
onnx_dep = onnxruntime_resolved_dep
tbb_dep = tbb_resolved_dep
#Add TBB to test_deps if found(needed by yams_vector via ONNX runtime)
if tbb_dep.found()
test_deps += tbb_dep
endif
#Collect library directories for test runtime.
#
#Docker note : our Linux Docker build uses a BuildKit cache mount for / root /.conan2,
#which is not committed into the image layers.We therefore rely on Conan's
#runtime_deploy output in the build directory for running tests in later stages.
#Always include the build root in RPATH / LD_LIBRARY_PATH so tests can find
#deployed runtime libraries(e.g.ONNX, TBB) even when the Conan cache is absent.
_test_rpaths = [meson.project_build_root()]
_test_ld_library_path = [meson.project_build_root()]
if host_machine.system() == 'linux'
#Docker test stages install Conan - provided runtimes under / opt / yams / usr / local / lib
#before invoking meson test, so include that path in the test environment.
_test_ld_library_path += ['/opt/yams/usr/local/lib']
endif
foreach d : [onnx_dep, tbb_dep]
if d.found()
libdir = d.get_variable(pkgconfig: 'libdir', default_value: '')
if libdir != ''
_test_rpaths += libdir
_test_ld_library_path += libdir
endif
endif
endforeach
#Prepare LD_LIBRARY_PATH for test environment(needed for transitive TBB dependencies)
_test_env_ld_library_path = ':'.join(_test_ld_library_path)
#Bench timeout is referenced by standalone Catch2 benchmark targets below.
bench_timeout = get_option('bench-timeout')
## integration_smoke now defined in subdir('integration/smoke')
#Next integration group : Services(daemon ingestion / retrieval)
#Compile this group separately to avoid duplicate plugin symbols and to allow isolated serial runs.
#Prefer Meson - native subdirs over shell discovery for services integration tests.
#
#IMPORTANT : services integration includes both GTest - and Catch2 - based suites.
#Do not gate the entire subdir on GTest.
if get_option('enable-integration-tests') or _test_debug_integrations
subdir('integration/services')
endif
#Benchmarks(standalone executables).Register bench test target only when enabled.
if get_option('build-benchmarks')
subdir('benchmarks')
#Standalone, minimal daemon warm - latency bench(does not depend on unit object lib)
daemon_warm_bench = executable('yams_bench_daemon_warm',
files('benchmarks/daemon_warm_latency_main.cpp'),
include_directories: incs,
dependencies: [test_deps],
install: false,
)
if get_option('enable-bench-tests')
test('bench_daemon_warm_latency', daemon_warm_bench,
suite: ['bench', 'perf'],
env: {
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
'LD_LIBRARY_PATH': _test_env_ld_library_path,
},
timeout: bench_timeout,
)
endif
endif
#Stress tests can be heavy; register but mark as long - running via suite name
if catch2_dep.found() and get_option('enable-stress-tests') and stress_srcs.length() > 0
stress_exe = executable('yams_stress_tests', stress_srcs,
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep, test_deps],
cpp_args: ['-DYAMS_TESTING=1'],
install: false,
)
test('stress', stress_exe,
suite: 'stress',
args: ['[mcpsocketstresstest]'],
env: {
'LD_LIBRARY_PATH': _test_env_ld_library_path,
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
},
timeout: 300)
elif get_option('enable-stress-tests')
message('Catch2 not found; skipping stress test registration.')
endif
# ============================================================================
#Catch2 Test Executables(PBI - 068 : Separated for isolation)
#Each test suite gets its own executable to prevent resource conflicts
#and enable parallel execution.This resolves SIGABRT crashes from shared
#filesystem state and temp directory conflicts.
# ============================================================================
if catch2_dep.found()
catch2_retrieval_json_exe = executable('catch2_retrieval_json',
files('unit/cli/retrieval_json_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep, dependency('nlohmann_json')],
cpp_args: test_cpp_noerror_args,
install: false,
)
test('retrieval_json', catch2_retrieval_json_exe,
suite: ['catch2', 'unit', 'cli'], timeout: 30)
catch2_extraction_contracts_exe = executable('catch2_extraction_contracts',
files('unit/daemon/extraction_response_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep, dependency('nlohmann_json')],
cpp_args: test_cpp_noerror_args,
install: false,
)
test('extraction_contracts', catch2_extraction_contracts_exe,
suite: ['catch2', 'unit', 'daemon', 'extraction'], timeout: 30)
#Daemon Test Suites(6 consolidated executables)
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_daemon_fsm_exe = executable('catch2_daemon_fsm',
files('unit/daemon/daemon_fsm_suite_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_daemon_metrics_status_exe = executable('catch2_daemon_metrics_status',
files('unit/daemon/daemon_metrics_status_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_daemon_metrics_core_exe = executable('catch2_daemon_metrics_core',
files('unit/daemon/daemon_metrics_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_daemon_components_exe = executable('catch2_daemon_components',
files('unit/daemon/daemon_components_test.cpp', 'unit/daemon/systemd_user_unit_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_p2p_transport_exe = executable('catch2_p2p_transport',
files('unit/daemon/p2p_transport_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_p2p_protocol_exe = executable('catch2_p2p_protocol',
files('unit/daemon/p2p_protocol_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_p2p_delta_exe = executable('catch2_p2p_delta',
files('unit/daemon/p2p_delta_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_peer_registry_exe = executable('catch2_peer_registry',
files('unit/daemon/peer_registry_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_p2p_manager_exe = executable('catch2_p2p_manager',
files('unit/daemon/p2p_manager_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_admission_policy_exe = executable('catch2_admission_policy',
files('unit/daemon/admission_policy_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_grep_result_window_exe = executable('catch2_grep_result_window',
files(
'unit/daemon/grep_result_window_catch2_test.cpp',
'../src/daemon/components/grep_result_window.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_daemon_client_link_exe = executable('catch2_daemon_client_link',
files('unit/daemon/daemon_client_link_catch2_test.cpp'),
dependencies: [catch2_dep, catch2_main_dep, dependency('yams_daemon_client')],
cpp_args: test_cpp_noerror_args,
build_rpath: ':'.join(_test_rpaths),
install: false,
)
test('daemon_client_link', catch2_daemon_client_link_exe,
suite: ['unit', 'daemon', 'sdk'],
timeout: 30,
)
catch2_search_admission_controller_exe = executable('catch2_search_admission_controller',
files('unit/daemon/search_admission_controller_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_ingest_metrics_publisher_exe = executable('catch2_ingest_metrics_publisher',
files('unit/daemon/ingest_metrics_publisher_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_topology_manager_exe = executable('catch2_topology_manager',
files('unit/daemon/topology_manager_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_embedding_lifecycle_exe = executable('catch2_embedding_lifecycle',
files('unit/daemon/embedding_lifecycle_manager_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_daemon_protocol_exe = executable('catch2_daemon_protocol',
files(
'unit/daemon/daemon_protocol_test.cpp',
'unit/daemon/frame_reader_catch2_test.cpp',
'unit/daemon/dispatch_response_mapper_catch2_test.cpp',
'unit/daemon/request_handler_admission_reuse_catch2_test.cpp',
'unit/daemon/request_handler_repair_cancel_catch2_test.cpp',
'unit/daemon/request_handler_status_unary_catch2_test.cpp',
'unit/daemon/proto_serializer_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_daemon_background_exe = executable('catch2_daemon_background',
files('unit/daemon/daemon_background_processing_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_daemon_graph_component_exe = executable('catch2_daemon_graph_component',
files('unit/daemon/graph_component_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_graph_services_exe = executable('catch2_graph_services',
files(
'unit/app/services/graph_query_service_catch2_test.cpp',
'unit/app/services/graph_context_service_catch2_test.cpp',
'unit/metadata/delete_cascade_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Daemon component submodule tests(CheckpointManager, ConfigResolver, etc.)
#Migrated from GTest as part of yams - 3s4 / yams - zns
catch2_daemon_component_submodule_exe = executable('catch2_daemon_component_submodule',
files(
'unit/daemon/components/checkpoint_manager_test.cpp',
'unit/daemon/components/config_resolver_test.cpp',
'unit/daemon/components/database_manager_test.cpp',
'unit/daemon/components/plugin_manager_test.cpp',
'unit/daemon/plugin_manager_config_test.cpp',
'unit/daemon/components/topology_tuner_catch2_test.cpp',
'unit/daemon/components/vector_system_manager_test.cpp',
'unit/search/topological_quality_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
# Keep embedding/bootstrap regressions independent of unrelated component bootstrap.
catch2_embedding_service_timing_exe = executable('catch2_embedding_service_timing',
files('unit/daemon/components/embedding_service_timing_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + embedding_service_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
# Virtual-time startup contracts: no database, model, socket, CLI or live governor needed.
catch2_startup_replay_exe = executable('catch2_startup_replay',
files('unit/daemon/components/startup_replay_catch2_test.cpp',
'../tools/fuzzing/fuzz_startup.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep, dependency('yams_tune_advisor_testing'),
dependency('yams_daemon'), dependency('yams_core'), dependency('spdlog')],
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Gradient limiter tests(Netflix Gradient2 adaptive concurrency)
catch2_gradient_limiter_exe = executable('catch2_gradient_limiter',
files('unit/daemon/components/gradient_limiter_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#WorkCoordinator tests(async work coordination)
catch2_work_coordinator_exe = executable('catch2_work_coordinator',
files('unit/daemon/work_coordinator_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#PostIngestQueue unit tests(LruCache template + stage constants)
catch2_post_ingest_queue_unit_exe = executable('catch2_post_ingest_queue_unit',
files('unit/daemon/components/post_ingest_queue_unit_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#PressureLimitedPoller shutdown unit tests(capability - sleep / stop paths)
catch2_pressure_limited_poller_exe = executable('catch2_pressure_limited_poller',
files('unit/daemon/components/pressure_limited_poller_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Assertion validation tests(fork - based death tests for YAMS_ASSERT / YAMS_PRECONDITION)
catch2_assert_val_exe = executable('catch2_assert_val',
files('unit/core/assert_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Metrics consistency tests(migrated from GTest)
catch2_metrics_consistency_exe = executable('catch2_metrics_consistency',
files('unit/daemon/metrics_consistency_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#SearchService integration tests(migrated from GTest)
catch2_search_service_exe = executable('catch2_search_service',
files(
'unit/app/services/search_service_catch2_test.cpp',
'unit/app/services/search_hash_edge_cases_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#FTS5 performance / stress tests(migrated from GTest, opt - in via YAMS_RUN_STRESS_TESTS = 1)
catch2_fts5_stress_exe = executable('catch2_fts5_stress',
files('unit/metadata/fts5_performance_stress_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Add plugin path for plugin harness tests
plugin_test_cpp_args = test_cpp_noerror_args + ['-DYAMS_TESTING=1']
if get_option('plugin-onnx')
#Pass the expected plugin location to the test
onnx_plugin_name = 'libyams_onnx_plugin.so'
if host_machine.system() == 'darwin'
onnx_plugin_name = 'libyams_onnx_plugin.dylib'
elif host_machine.system() == 'windows'
onnx_plugin_name = 'yams_onnx_plugin.dll'
endif
onnx_plugin_path = join_paths(meson.project_build_root(), 'plugins', 'onnx', onnx_plugin_name)
plugin_test_cpp_args += ['-Dyams_onnx_plugin_BUILT="' + onnx_plugin_path + '"']
endif
# ONNX Runtime resolution policy (pure; no runtime needed): override >
# configured > system > bundled > legacy, skipping incompatible API versions.
# Fixtures use ELF/Mach-O library names; Windows resolution is the DLL search.
if host_machine.system() != 'windows'
catch2_ort_runtime_resolution_exe = executable('catch2_ort_runtime_resolution',
files(
'unit/plugins/ort_runtime_resolution_catch2_test.cpp',
'../plugins/ort_runtime/ort_runtime_resolution.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep],
install: false,
)
test('ort_runtime_resolution', catch2_ort_runtime_resolution_exe,
suite: ['catch2', 'unit', 'plugins', 'onnx'],
timeout: 30,
)
endif
catch2_daemon_plugin_exe = executable('catch2_daemon_plugin',
files('unit/daemon/onnx_plugin_harness_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: plugin_test_cpp_args,
build_rpath: ':'.join(_test_rpaths),
install: false,
)
if onnx_dep.found()
onnx_provider_test_deps = [catch2_dep, catch2_main_dep] + test_deps + onnx_dep
catch2_daemon_onnx_provider_exe = executable('catch2_daemon_onnx_provider',
files(
'unit/daemon/onnx_model_provider_config_test.cpp',
'../plugins/onnx/model_provider.cpp',
'../plugins/onnx/onnx_text_processing.cpp',
'../plugins/ort_runtime/ort_runtime_loader.cpp',
'../plugins/ort_runtime/ort_runtime_resolution.cpp',
'../plugins/onnx/onnx_model_pool.cpp',
'../plugins/onnx/onnx_colbert_session.cpp',
'../src/vector/tokenizer.cpp',
),
include_directories: incs,
dependencies: onnx_provider_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_gpu_provider_exe = executable('catch2_gpu_provider',
files(
'unit/daemon/onnx_gpu_provider_catch2_test.cpp',
'../plugins/ort_runtime/ort_runtime_loader.cpp',
'../plugins/ort_runtime/ort_runtime_resolution.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps + [onnx_dep],
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_onnx_embedding_diag_exe = executable('catch2_onnx_embedding_diag',
files(
'unit/daemon/onnx_embedding_diagnostic_test.cpp',
'../plugins/onnx/model_provider.cpp',
'../plugins/onnx/onnx_text_processing.cpp',
'../plugins/ort_runtime/ort_runtime_loader.cpp',
'../plugins/ort_runtime/ort_runtime_resolution.cpp',
'../plugins/onnx/onnx_model_pool.cpp',
'../plugins/onnx/onnx_colbert_session.cpp',
'../src/vector/tokenizer.cpp',
),
include_directories: incs,
dependencies: onnx_provider_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
test('onnx_embedding_diagnostic', catch2_onnx_embedding_diag_exe,
suite: ['catch2', 'unit', 'daemon', 'onnx', 'diagnostic'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
args: ['--allow-running-no-tests'],
timeout: 120,
)
endif
catch2_plugin_infrastructure_exe = executable('catch2_plugin_infrastructure',
files('unit/daemon/plugin_infrastructure_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: plugin_test_cpp_args,
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_external_plugin_host_exe = executable('catch2_external_plugin_host',
files('unit/daemon/external_plugin_host_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: plugin_test_cpp_args,
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_extractor_adapter_exe = executable('catch2_extractor_adapter',
files('unit/daemon/plugin_content_extractor_adapter_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_repair_scheduling_exe = executable('catch2_repair_scheduling',
files('unit/daemon/repair_scheduling_adapter_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_repair_service_exe = executable('catch2_repair_service',
files('unit/daemon/repair_service_post_ingest_channel_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_repair_maintenance_exe = executable('catch2_repair_maintenance',
files('unit/daemon/repair_maintenance_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_write_coordinator_exe = executable('catch2_write_coordinator',
files('unit/daemon/write_coordinator_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_service_manager_exe = executable('catch2_service_manager',
files('unit/daemon/service_manager_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_memory_sync_apply_exe = executable('catch2_memory_sync_apply',
files('unit/daemon/memory_sync_apply_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_db_recovery_exe = executable('catch2_db_recovery',
files('unit/daemon/db_recovery_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_db_salvage_exe = executable('catch2_db_salvage',
files('unit/daemon/db_salvage_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_db_recovery_vacuum_exe = executable('catch2_db_recovery_vacuum',
files('unit/daemon/db_recovery_vacuum_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_storage_preflight_exe = executable('catch2_storage_preflight',
files('unit/daemon/storage_preflight_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_tune_advisor_snapshot_exe = executable('catch2_tune_advisor_snapshot',
files('unit/daemon/tune_advisor_snapshot_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_repair_hold_hints_exe = executable('catch2_repair_hold_hints',
files('unit/daemon/repair_hold_hints_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_physical_walk_ttl_exe = executable('catch2_physical_walk_ttl',
files('unit/daemon/physical_walk_ttl_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_streaming_processor_exe = executable('catch2_streaming_processor',
files('unit/daemon/streaming_processor_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_in_process_transport_exe = executable('catch2_in_process_transport',
files('unit/daemon/in_process_transport_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep, dependency('yams_daemon_client_embedded')]
+ test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_sandbox_detection_exe = executable('catch2_sandbox_detection',
files('unit/daemon/sandbox_detection_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_multiplex_client_exe = executable('catch2_multiplex_client',
files('unit/daemon/multiplex_client_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_entity_graph_service_exe = executable('catch2_entity_graph_service',
files('unit/daemon/entity_graph_service_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_service_manager_shutdown_exe = executable('catch2_service_manager_shutdown',
files('unit/daemon/service_manager_shutdown_ownership_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_service_manager_degraded_exe = executable('catch2_service_manager_degraded',
files('unit/daemon/service_manager_provider_degraded_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_repair_binary_filter_exe = executable('catch2_repair_binary_filter',
files('unit/daemon/repair_binary_filter_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_abi_model_provider_dim_exe = executable('catch2_abi_model_provider_dim',
files('unit/daemon/abi_model_provider_dimension_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_status_readiness_vector_usable_exe = executable('catch2_status_readiness_vector_usable',
files('unit/daemon/status_readiness_vector_usable_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_model_provider_registry_exe = executable('catch2_model_provider_registry',
files('unit/daemon/model_provider_registry_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_simeon_model_provider_exe = executable('catch2_simeon_model_provider',
files('unit/daemon/simeon_model_provider_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_embedding_recovery_exe = executable('catch2_embedding_recovery',
files('unit/daemon/embedding_provider_recovery_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_request_io_edge_exe = executable('catch2_request_io_edge',
files('unit/daemon/request_handler_io_edge_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_daemon_warm_bench_exe = executable('catch2_daemon_warm_bench',
files('unit/daemon/daemon_warm_bench_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_daemon_idle_control_bench_exe = executable('catch2_daemon_idle_control_bench',
files('unit/daemon/daemon_idle_control_bench_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_request_lifetime_exe = executable('catch2_request_lifetime',
files('unit/daemon/request_handler_lifetime_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_writer_drain_cleanup_exe = executable('catch2_writer_drain_cleanup',
files('unit/daemon/request_handler_writer_drain_cleanup_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_asio_connection_pool_exe = executable('catch2_asio_connection_pool',
files('unit/daemon/asio_connection_pool_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_asio_transport_exhaustion_exe = executable('catch2_asio_transport_exhaustion',
files('unit/daemon/asio_transport_exhaustion_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_asio_transport_inflight_close_ipc_prefix_exe = executable('catch2_asio_transport_inflight_close_ipc_prefix',
files('unit/daemon/asio_transport_inflight_close_ipc_prefix_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_daemon_exe = executable('catch2_daemon',
files('unit/daemon/daemon_catch2_test.cpp'),
files('unit/daemon/streaming_handlers_catch2_test.cpp'),
files('unit/daemon/daemon_client_list_status_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_tune_advisor_threshold_exe = executable('catch2_tune_advisor_threshold',
files('unit/daemon/tune_advisor_threshold_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_tuning_allocation_exe = executable('catch2_tuning_allocation',
files('unit/daemon/tuning_allocation_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
# Real-service registry controls have process-global publication and bootstrap costs.
catch2_tuning_registry_activity_exe = executable('catch2_tuning_registry_activity',
files('unit/daemon/tuning_registry_activity_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
# Real proxy request wiring owns service executors and a separate socket I/O context.
catch2_socket_proxy_request_activity_exe = executable('catch2_socket_proxy_request_activity',
files('unit/daemon/socket_proxy_request_activity_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_tuning_reconciliation_exe = executable('catch2_tuning_reconciliation',
files('unit/daemon/tuning_reconciliation_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_post_ingest_dynamic_cap_recovery_exe = executable('catch2_post_ingest_dynamic_cap_recovery',
files('unit/daemon/post_ingest_dynamic_cap_recovery_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_resource_governance_exe = executable('catch2_resource_governance',
files('unit/daemon/resource_governance_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_host_pressure_exe = executable('catch2_host_pressure',
files('unit/daemon/host_pressure_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_timing_audit_exe = executable('catch2_timing_audit',
files('unit/daemon/timing_audit_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_dynamic_cap_sentinel_exe = executable('catch2_dynamic_cap_sentinel',
files('unit/daemon/dynamic_cap_sentinel_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_idle_zero_concurrency_exe = executable('catch2_idle_zero_concurrency',
files('unit/daemon/idle_zero_concurrency_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_health_check_isolation_exe = executable('catch2_health_check_isolation',
files('unit/daemon/health_check_isolation_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_socket_server_teardown_exe = executable('catch2_socket_server_teardown',
files('unit/daemon/socket_server_teardown_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_vector_index_coordinator_bulk_scope_exe = executable(
'catch2_vector_index_coordinator_bulk_scope',
files('unit/daemon/vector_index_coordinator_bulk_scope_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_vector_index_coordinator_coalesce_exe = executable(
'catch2_vector_index_coordinator_coalesce',
files('unit/daemon/vector_index_coordinator_coalesce_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_vector_index_coordinator_telemetry_exe = executable(
'catch2_vector_index_coordinator_telemetry',
files('unit/daemon/vector_index_coordinator_telemetry_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_tuning_loop_wakeup_exe = executable('catch2_tuning_loop_wakeup',
files('unit/daemon/tuning_loop_wakeup_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
if onnx_dep.found()
catch2_onnx_model_pool_exe = executable('catch2_onnx_model_pool',
files(
'unit/daemon/onnx_model_pool_catch2_test.cpp',
'../plugins/onnx/model_provider.cpp',
'../plugins/onnx/onnx_text_processing.cpp',
'../plugins/ort_runtime/ort_runtime_loader.cpp',
'../plugins/ort_runtime/ort_runtime_resolution.cpp',
'../plugins/onnx/onnx_model_pool.cpp',
'../plugins/onnx/onnx_colbert_session.cpp',
'../src/vector/tokenizer.cpp',
),
include_directories: incs,
dependencies: onnx_provider_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
endif
#CLI Test Suites(Catch2)
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_cli_init_command_exe = executable('catch2_cli_init_command',
files('unit/cli/init_command_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Storage Test Suites(Catch2)
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_storage_backend_exe = executable('catch2_storage_backend',
files('unit/storage/storage_backend_catch2_test.cpp',
'unit/storage/windows_path_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_version_vector_exe = executable('catch2_version_vector',
files('unit/memory_sync/version_vector_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep, dependency('nlohmann_json')],
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_memory_sync_apply_health_exe = executable('catch2_memory_sync_apply_health',
files('unit/memory_sync/apply_health_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep],
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_memory_sync_records_exe = executable('catch2_memory_sync_records',
files('unit/memory_sync/records_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep, dependency('nlohmann_json')],
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_memory_sync_exe = executable('catch2_memory_sync',
files('unit/memory_sync/memory_sync_catch2_test.cpp'),
include_directories: incs,
dependencies: [
catch2_dep,
catch2_main_dep,
dependency('nlohmann_json'),
dependency('OpenSSL'),
dependency('yams_storage_engine'),
dependency('yams_crypto'),
dependency('yams_memory_sync'),
dependency('yams_core'),
],
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_content_blob_sync_exe = executable('catch2_content_blob_sync',
files('unit/memory_sync/content_blob_sync_catch2_test.cpp'),
include_directories: incs,
dependencies: [
catch2_dep,
catch2_main_dep,
dependency('nlohmann_json'),
dependency('yams_storage_engine'),
dependency('yams_crypto'),
dependency('yams_memory_sync'),
dependency('yams_core'),
],
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_memory_sync_service_exe = executable('catch2_memory_sync_service',
files('unit/memory_sync/memory_sync_service_catch2_test.cpp'),
include_directories: incs,
dependencies: [
catch2_dep,
catch2_main_dep,
dependency('nlohmann_json'),
dependency('yams_storage_engine'),
dependency('yams_crypto'),
dependency('yams_memory_sync'),
dependency('yams_core'),
],
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_memory_sync_config_exe = executable('catch2_memory_sync_config',
files('unit/memory_sync/memory_sync_config_catch2_test.cpp'),
include_directories: incs,
dependencies: [
catch2_dep,
catch2_main_dep,
dependency('nlohmann_json'),
dependency('yams_storage_engine'),
dependency('yams_crypto'),
dependency('yams_memory_sync'),
dependency('yams_core'),
],
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_memory_sync_cli_exe = executable('catch2_memory_sync_cli',
files('unit/memory_sync/memory_sync_cli_catch2_test.cpp'),
include_directories: incs,
dependencies: [
catch2_dep,
catch2_main_dep,
dependency('nlohmann_json'),
dependency('yams_storage_engine'),
dependency('yams_crypto'),
dependency('yams_memory_sync'),
dependency('yams_core'),
],
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Storage submodule tests(StorageEngine, CompressedStorageEngine, ReferenceCounter, etc.)
#Migrated from GTest as part of yams - 3s4 / yams - 8b9
catch2_storage_submodule_exe = executable('catch2_storage_submodule',
files(
'unit/storage/compressed_storage_engine_catch2_test.cpp',
'unit/storage/compressed_storage_stats_catch2_test.cpp',
'unit/storage/storage_backend_engine_adapter_catch2_test.cpp',
'unit/storage/object_storage_adapter_catch2_test.cpp',
'unit/storage/reference_counter_catch2_test.cpp',
'unit/storage/reference_counter_stress_catch2_test.cpp',
'unit/storage/garbage_collector_catch2_test.cpp',
'unit/storage/sqlite_retry_catch2_test.cpp',
'unit/storage/s3_signer_catch2_test.cpp',
'unit/storage/storage_backend_factory_catch2_test.cpp',
'unit/storage/storage_runtime_resolver_catch2_test.cpp',
'unit/storage/storage_engine_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#WAL Entry tests - serialization, checksums, encode / decode round - trips
catch2_wal_entry_exe = executable('catch2_wal_entry',
files('unit/wal/wal_entry_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + [
'-DYAMS_TESTING=1',
'-DYAMS_WAL_FIXTURE_DIR="@0@"'.format(meson.current_source_dir() / 'fixtures' / 'wal'),
],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_wal_submodule_exe = executable('catch2_wal_submodule',
files(
'unit/wal/wal_file_catch2_test.cpp',
'unit/wal/wal_manager_catch2_test.cpp',
'unit/wal/wal_metrics_provider_catch2_test.cpp',
'unit/wal/wal_recovery_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Search submodule tests
#Migrated from GTest as part of yams - 3s4 / yams - 1yq
catch2_search_submodule_exe = executable('catch2_search_submodule',
files(
'unit/search/chunk_coverage_catch2_test.cpp',
'unit/search/graph_expansion_catch2_test.cpp',
'unit/search/hotzone_manager_catch2_test.cpp',
'unit/search/kg_scorer_simple_catch2_test.cpp',
'unit/search/lexical_scoring_catch2_test.cpp',
'unit/search/simeon_lexical_backend_catch2_test.cpp',
'unit/search/search_engine_simeon_lexical_catch2_test.cpp',
'unit/search/search_engine_topology_catch2_test.cpp',
'unit/search/simeon_bandit_catch2_test.cpp',
'unit/search/simeon_bandit_backend_catch2_test.cpp',
'unit/search/query_helpers_catch2_test.cpp',
'unit/search/query_router_catch2_test.cpp',
'unit/search/query_concept_extractor_catch2_test.cpp',
'unit/search/query_qualifiers_catch2_test.cpp',
'unit/search/search_engine_config_catch2_test.cpp',
'unit/search/search_config_environment_catch2_test.cpp',
'unit/search/search_tracing_catch2_test.cpp',
'unit/search/component_fanout_catch2_test.cpp',
'unit/search/concept_boost_catch2_test.cpp',
'unit/search/cross_rerank_catch2_test.cpp',
'unit/search/final_result_order_catch2_test.cpp',
'unit/search/search_vector_pipeline_catch2_test.cpp',
'unit/search/search_facets_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_search_vector_stage_exe = executable('catch2_search_vector_stage',
files('unit/search/search_vector_stage_characterization_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_search_vector_stage_route_only_exe = executable('catch2_search_vector_stage_route_only',
files('unit/search/search_vector_stage_route_only_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
# Road beam (search.topology.road_hops) in RouteOnly / Augment; kept apart from the RouteOnly
# cells so their goldens stay byte-identical.
catch2_search_vector_stage_road_beam_exe = executable('catch2_search_vector_stage_road_beam',
files('unit/search/search_vector_stage_road_beam_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
# Road walk (search.topology.road_walk_window) along ordered cluster members in RouteOnly /
# Augment; kept apart from the RouteOnly and road beam cells so their goldens stay byte-identical.
catch2_search_vector_stage_road_walk_exe = executable('catch2_search_vector_stage_road_walk',
files('unit/search/search_vector_stage_road_walk_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_symspell_search_exe = executable('catch2_symspell_search',
files('unit/search/symspell_search_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
# Executor-backed vector stage under a component deadline (lifetime of late completions).
catch2_search_vector_stage_timeout_exe = executable('catch2_search_vector_stage_timeout',
files('unit/search/search_vector_stage_timeout_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_evidence_search_pipeline_exe = executable('catch2_evidence_search_pipeline',
files('unit/search/evidence_search_pipeline_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#TuningSlot tests(provenance - tracking primitives for restructured tuning pipeline)
catch2_tuning_slot_exe = executable('catch2_tuning_slot',
files('unit/search/tuning_slot_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#R3 Tuning features + reward(featurize / bucketize / combineReward)
catch2_tuning_features_exe = executable('catch2_tuning_features',
files('unit/search/tuning_features_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
# SearchTuner tests: adaptive search engine tuning via corpus-aware FSM.
#Tests FSM state transitions, TunedParams matrix, and SearchEngineConfig generation
catch2_search_tuner_exe = executable('catch2_search_tuner',
files('unit/search/search_tuner_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#InternalBenchmark tests(Phase 3 of Epic yams - 7ez4 : Internal Benchmark Suite)
#Tests LatencyStats, BenchmarkResults, BenchmarkComparison, query generation configs
catch2_internal_benchmark_exe = executable('catch2_internal_benchmark',
files('unit/search/internal_benchmark_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_benchmark_history_store_exe = executable('catch2_benchmark_history_store',
files('unit/search/benchmark_history_store_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_benchmark_invocation_exe = executable('catch2_benchmark_invocation',
files('unit/benchmarks/benchmark_invocation_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep],
cpp_args: test_cpp_noerror_args,
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_retrieval_benchmark_support_exe = executable('catch2_retrieval_benchmark_support',
files(
'unit/search/retrieval_benchmark_support_catch2_test.cpp',
'benchmarks/search/retrieval_benchmark_support.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_search_bandit_bench_exe = executable('catch2_search_bandit_bench',
files('benchmarks/search_bandit_bench.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_relevance_label_store_exe = executable('catch2_relevance_label_store',
files('unit/search/relevance_label_store_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
# Compression submodule tests.
#Migrated from GTest as part of yams - 3s4 / yams - pmf
catch2_compression_submodule_exe = executable('catch2_compression_submodule',
files(
#basic_error_handler_catch2_test.cpp removed : fully covered by error_handler_catch2_test.cpp
# basic_integrity_validator_catch2_test.cpp removed: covered by the comprehensive test.
'unit/compression/compression_comprehensive_catch2_test.cpp',
'unit/compression/compression_monitor_catch2_test.cpp',
'unit/compression/compression_policy_catch2_test.cpp',
'unit/compression/error_handler_catch2_test.cpp',
'unit/compression/framed_payload_catch2_test.cpp',
#TODO(yams - 3s4) : Fix API mismatch - uses non - existent IntegrityValidator methods
#'unit/compression/integrity_validator_catch2_test.cpp',
'unit/compression/recovery_manager_catch2_test.cpp',
'unit/compression/transaction_manager_catch2_test.cpp',
'unit/compression/zstandard_compressor_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#MCP submodule tests(MCPServer, Transport, JSON - RPC, Tools Schema, etc.)
#Migrated from GTest as part of yams - 3s4 / yams - 84g
catch2_mcp_submodule_exe = executable('catch2_mcp_submodule',
files(
'unit/mcp/initialize_response_catch2_test.cpp',
'unit/mcp/mcp_add_disconnect_catch2_test.cpp',
'unit/mcp/mcp_apps/capability_negotiation_test.cpp',
'unit/mcp/mcp_apps/tool_metadata_test.cpp',
'unit/mcp/mcp_apps/ui_resource_handling_test.cpp',
'unit/mcp/mcp_daemon_dto_parsing_catch2_test.cpp',
'unit/mcp/mcp_daemon_dto_parsing_more_catch2_test.cpp',
'unit/mcp/mcp_error_handling_catch2_test.cpp',
'unit/mcp/mcp_context_suggestion_catch2_test.cpp',
'unit/mcp/mcp_semantic_dedupe_catch2_test.cpp',
'unit/mcp/mcp_disconnect_uniform_errors_catch2_test.cpp',
'unit/mcp/mcp_doctor_flags_catch2_test.cpp',
'unit/mcp/mcp_jsonrpc_roundtrip_catch2_test.cpp',
'unit/mcp/mcp_protocol_version_features_test.cpp',
'unit/mcp/mcp_prompts_catch2_test.cpp',
'unit/mcp/mcp_resource_read_catch2_test.cpp',
'unit/mcp/mcp_request_routing_catch2_test.cpp',
'unit/mcp/mcp_search_dto_catch2_test.cpp',
'unit/mcp/mcp_tool_registry_dto_roundtrip_catch2_test.cpp',
'unit/mcp/mcp_server_catch2_test.cpp',
'unit/mcp/mcp_server_exec_catch2_test.cpp',
'unit/mcp/mcp_socket_resolution_catch2_test.cpp',
'unit/mcp/mcp_timeout_catch2_test.cpp',
'unit/mcp/mcp_code_mode_catch2_test.cpp',
'unit/mcp/mcp_composite_dispatch_catch2_test.cpp',
'unit/mcp/mcp_mode_router_catch2_test.cpp',
'unit/mcp/mcp_tool_registry_wrappers_catch2_test.cpp',
'unit/mcp/mcp_tools_schema_and_smoke_catch2_test.cpp',
'unit/mcp/stdio_transport_catch2_test.cpp',
'unit/mcp/websocket_transport_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#CLI submodule tests split by behavior cluster to improve Meson parallelism
#and keep failures localized without dropping coverage.
#Migrated from GTest as part of yams - 3s4 / yams - cli
cli_test_deps = [version_generated_dep, catch2_dep, catch2_main_dep] + test_deps
cli_test_cpp_args = test_cpp_noerror_args + ['-DYAMS_TESTING=1']
catch2_cli_common_exe = executable('catch2_cli_common',
version_header,
files(
'unit/common/format_catch2_test.cpp',
'unit/common/crc32_catch2_test.cpp',
'unit/common/hash_predicates_catch2_test.cpp',
'unit/common/log_rate_limiter_catch2_test.cpp',
'unit/common/path_alias_catch2_test.cpp',
'unit/common/pattern_utils_catch2_test.cpp',
'unit/common/string_utils_catch2_test.cpp',
'unit/common/test_rusage_catch2_test.cpp',
'unit/common/test_state_isolation_catch2_test.cpp',
'unit/common/test_utils_catch2_test.cpp',
'unit/common/time_utils_catch2_test.cpp',
'unit/common/utf8_utils_catch2_test.cpp',
'unit/cli/cli_test_cleanup_listener.cpp',
'unit/cli/error_hints_catch2_test.cpp',
'unit/cli/homebrew_service_formula_catch2_test.cpp',
'unit/cli/pipeline_stage_render_catch2_test.cpp',
'unit/cli/prompt_util_catch2_test.cpp',
'unit/cli/recommendation_util_catch2_test.cpp',
'unit/cli/status_metrics_catch2_test.cpp',
'unit/cli/time_filters_catch2_test.cpp',
'unit/cli/stream_heuristics_catch2_test.cpp',
'unit/cli/time_parser_catch2_test.cpp',
'unit/cli/version_generated_header_catch2_test.cpp',
),
include_directories: incs,
dependencies: cli_test_deps,
cpp_args: cli_test_cpp_args,
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_cli_config_exe = executable('catch2_cli_config',
version_header,
files(
'unit/cli/cli_test_cleanup_listener.cpp',
'unit/cli/cli_option_isolation_catch2_test.cpp',
'unit/cli/cli_utility_coverage_catch2_test.cpp',
'unit/cli/config_command_catch2_test.cpp',
'unit/cli/data_dir_resolution_catch2_test.cpp',
),
include_directories: incs,
dependencies: cli_test_deps,
cpp_args: cli_test_cpp_args,
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_cli_commands_exe = executable('catch2_cli_commands',
version_header,
files(
'unit/cli/cli_test_cleanup_listener.cpp',
'unit/cli/add_command_stdin_catch2_test.cpp',
'unit/cli/command_registry_catch2_test.cpp',
'unit/cli/content_roundtrip_catch2_test.cpp',
'unit/cli/completion_command_catch2_test.cpp',
'unit/cli/delete_command_catch2_test.cpp',
'unit/cli/download_command_catch2_test.cpp',
'unit/cli/init_command_catch2_test.cpp',
'unit/cli/list_command_catch2_test.cpp',
'unit/cli/update_command_catch2_test.cpp',
),
include_directories: incs,
dependencies: cli_test_deps,
cpp_args: cli_test_cpp_args,
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_cli_model_plugin_exe = executable('catch2_cli_model_plugin',
version_header,
files(
'unit/cli/cli_test_cleanup_listener.cpp',
'unit/cli/model_command_catch2_test.cpp',
'unit/cli/plugin_command_catch2_test.cpp',
'unit/cli/repair_command_catch2_test.cpp',
'unit/cli/session_command_catch2_test.cpp',
),
include_directories: incs,
dependencies: cli_test_deps,
cpp_args: cli_test_cpp_args,
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_cli_doctor_exe = executable('catch2_cli_doctor',
version_header,
files(
'unit/cli/cli_test_cleanup_listener.cpp',
'unit/cli/doctor_command_catch2_test.cpp',
'unit/cli/doctor_repair_renderers_catch2_test.cpp',
'unit/cli/doctor/db_integrity_catch2_test.cpp',
'unit/cli/doctor/dim_consistency_catch2_test.cpp',
'unit/cli/doctor/storage_blob_check_catch2_test.cpp',
'unit/cli/doctor/ref_count_check_catch2_test.cpp',
),
include_directories: incs,
dependencies: cli_test_deps,
cpp_args: cli_test_cpp_args,
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_cli_graph_exe = executable('catch2_cli_graph',
version_header,
files(
'unit/cli/cli_test_cleanup_listener.cpp',
'unit/cli/graph_explore_presenter_catch2_test.cpp',
'unit/cli/graph_helpers_catch2_test.cpp',
'unit/cli/graph_query_presenter_catch2_test.cpp',
'unit/cli/graph_topology_support_catch2_test.cpp',
'unit/cli/grep_command_path_tree_catch2_test.cpp',
'unit/cli/vector_db_util_catch2_test.cpp',
),
include_directories: incs,
dependencies: cli_test_deps,
cpp_args: cli_test_cpp_args,
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_cli_daemon_exe = executable('catch2_cli_daemon',
version_header,
files(
'unit/cli/cli_test_cleanup_listener.cpp',
'unit/cli/daemon_helpers_pool_catch2_test.cpp',
'unit/cli/daemon_command_catch2_test.cpp',
'unit/cli/daemon_status_render_catch2_test.cpp',
'unit/cli/p2p_status_format_catch2_test.cpp',
),
include_directories: incs,
dependencies: cli_test_deps,
cpp_args: cli_test_cpp_args,
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Vector Test Suites(Catch2) - requires enable - vector - tests
#Migrated from GTest as part of yams - 3s4 / yams - 1d4
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
if get_option('enable-vector-tests')
vector_test_cpp_args = test_cpp_noerror_args + ['-DYAMS_TESTING=1']
catch2_vector_submodule_exe = executable('catch2_vector_submodule',
files(
'unit/vector/document_chunker_catch2_test.cpp',
'unit/vector/dim_resolver_catch2_test.cpp',
'unit/vector/embedding_service_synthetic_catch2_test.cpp',
'unit/vector/sqlite_vec_backend_comprehensive_catch2_test.cpp',
'unit/vector/sqlite_vec_backend_persistence_catch2_test.cpp',
'unit/vector/static_cosine_ann_index_catch2_test.cpp',
'unit/vector/sqlite_vec_c_api_smoke_catch2_test.cpp',
'unit/vector/vector_schema_migration_vec0_catch2_test.cpp',
'unit/vector/vector_dimension_validation_catch2_test.cpp',
'unit/vector/vector_smoke_catch2_test.cpp',
'unit/vector/simeon_backend_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: vector_test_cpp_args,
build_rpath: ':'.join(_test_rpaths),
install: false,
)
endif
catch2_vector_vec0_cosine_order_exe = executable('catch2_vector_vec0_cosine_order',
files('unit/vector/vec0_cosine_order_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_vector_sync_adapter_exe = executable('catch2_vector_sync_adapter',
files('unit/vector/vector_sync_adapter_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Tokenizer Tests(Catch2) - HuggingFaceTokenizer WordPiece, Unigram, special token injection
#Always - on : uses synthetic tokenizer.json files, no model downloads or sqlite - vec required.
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_tokenizer_exe = executable('catch2_tokenizer',
files(
'unit/vector/tokenizer_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#API Test Suites(Catch2) - content store API tests
#Migrated from GTest as part of yams - 3s4 / api
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_api_submodule_exe = executable('catch2_api_submodule',
files(
'unit/api/content_store_catch2_test.cpp',
'unit/api/content_store_builder_compression_catch2_test.cpp',
'unit/api/metadata_api_catch2_test.cpp',
'unit/api/semantic_search_api_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Downloader Test Suites(Catch2) - download manager, resume store, CAS helpers
#Migrated from GTest as part of yams - 3s4 / downloader
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_downloader_submodule_exe = executable('catch2_downloader_submodule',
files(
'unit/downloader/downloader_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Resolve Test Suites(Catch2) - resolver, backend implementations
#Migrated from GTest as part of yams - 3s4 / resolve
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_resolve_submodule_exe = executable('catch2_resolve_submodule',
files(
'unit/resolve/resolver_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Manifest Test Suites(Catch2) - manifest manager, serialization, reconstruction
#Migrated from GTest as part of yams - 3s4 / yams - 1jm
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_manifest_submodule_exe = executable('catch2_manifest_submodule',
files(
'unit/manifest/manifest_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Repair Test Suites(Catch2) - embedding repair scan
#Migrated from GTest as part of yams - 3s4 / yams - 1jm
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_repair_submodule_exe = executable('catch2_repair_submodule',
files(
'unit/repair/embedding_repair_scan_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Versioning Test Suites(Catch2) - versioning utility
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_versioning_submodule_exe = executable('catch2_versioning_submodule',
files(
'unit/metadata/versioning_util_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Metadata Test Suites(4 executables)
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_metadata_retrieval_exe = executable('catch2_metadata_retrieval',
files('unit/app/services/retrieval_schema_validation_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Removed : catch2_metadata_search(search_metadata_interface_test.cpp) - HybridSearchEngine specific
catch2_metadata_migration_exe = executable('catch2_metadata_migration',
files('unit/metadata/migration_validation_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Metadata Unit Tests(Catch2) - concepts, database, query_helpers, sql, value_variant
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_metadata_unit_exe = executable('catch2_metadata_unit',
files('unit/metadata/metadata_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Connection Pool Tests(Catch2) - pool maintenance, waiting guard
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_connection_pool_exe = executable('catch2_connection_pool',
files('unit/metadata/connection_pool_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
# Document snapshot membership and the legacy per-snapshot key backfill
catch2_document_snapshots_exe = executable('catch2_document_snapshots',
files('unit/metadata/document_snapshots_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#KG Store Tests(Catch2) - knowledge graph store operations
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_kg_store_exe = executable('catch2_kg_store',
files(
'unit/metadata/kg_store_catch2_test.cpp',
'unit/metadata/kg_relation_summary_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#KG Write Buffer Tests(Catch2) - in - memory edge / entity coalescing
catch2_kg_write_buffer_exe = executable('catch2_kg_write_buffer',
files('unit/metadata/kg_write_buffer_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Database Tests(Catch2) - database operations, connection pool, migrations
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_database_exe = executable('catch2_database',
files('unit/metadata/database_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Metadata Corruption Tests(Catch2) - corruption injection, detection, recovery
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_metadata_corruption_exe = executable('catch2_metadata_corruption',
files(
'unit/metadata/database_corruption_catch2_test.cpp',
'unit/metadata/migration_corruption_catch2_test.cpp',
'unit/metadata/kg_store_corruption_catch2_test.cpp',
'unit/metadata/connection_pool_corruption_catch2_test.cpp',
'unit/metadata/writer_corruption_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#FTS5 Tests(Catch2) - FTS5 support detection and fallback
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_fts5_exe = executable('catch2_fts5',
files(
'unit/metadata/fts5_catch2_test.cpp',
'unit/metadata/fts5_query_sanitizer_catch2_test.cpp',
'unit/metadata/search_query_helpers_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Tree Builder Tests(Catch2) - tree node operations and directory tree building
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_tree_builder_exe = executable('catch2_tree_builder',
files('unit/metadata/tree_builder_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Tree Differ Tests(Catch2) - tree diffing operations
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_tree_differ_exe = executable('catch2_tree_differ',
files('unit/metadata/tree_differ_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Path Tree Delete Tests(Catch2) - path tree removal operations
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_path_tree_delete_exe = executable('catch2_path_tree_delete',
files('unit/metadata/path_tree_delete_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Session Isolation Tests(Catch2) - session - isolated memory operations
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_session_isolation_exe = executable('catch2_session_isolation',
files('unit/metadata/session_isolation_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Metadata Repository Tests(Catch2) - repository operations
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_metadata_repository_exe = executable('catch2_metadata_repository',
files(
'unit/metadata/metadata_repository_catch2_test.cpp',
'unit/metadata/metadata_repository_tag_stats_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_metadata_content_transaction_exe = executable(
'catch2_metadata_content_transaction',
files('unit/metadata/metadata_content_transaction_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_metadata_sync_adapter_exe = executable(
'catch2_metadata_sync_adapter',
files('unit/metadata/metadata_sync_adapter_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_topology_sync_adapter_exe = executable(
'catch2_topology_sync_adapter',
files('unit/metadata/topology_sync_adapter_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Metadata Repository Cache Tests(Catch2) - cache operations
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_metadata_repository_cache_exe = executable('catch2_metadata_repository_cache',
files('unit/metadata/metadata_repository_cache_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_topology_baseline_exe = executable('catch2_topology_baseline',
files('unit/topology/topology_baseline_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_topology_identity_exe = executable('catch2_topology_identity',
files('unit/topology/protected_relation_identity_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_topology_factory_exe = executable('catch2_topology_factory',
files('unit/topology/topology_factory_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_topology_kmeans_exe = executable('catch2_topology_kmeans',
files('unit/topology/kmeans_engine_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_topology_representative_rule_exe = executable('catch2_topology_representative_rule',
files('unit/topology/topology_representative_rule_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_topology_roads_exe = executable('catch2_topology_roads',
files('unit/topology/topology_roads_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_topology_road_sidecar_exe = executable('catch2_topology_road_sidecar',
files('unit/topology/topology_road_sidecar_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_topology_roads_incremental_exe = executable('catch2_topology_roads_incremental',
files('unit/topology/topology_roads_incremental_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_topology_input_event_time_exe = executable('catch2_topology_input_event_time',
files('unit/topology/topology_input_event_time_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_topology_ordered_members_exe = executable('catch2_topology_ordered_members',
files('unit/topology/topology_ordered_members_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_topology_codec_exe = executable('catch2_topology_codec',
files('unit/topology/topology_codec_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_topology_metadata_store_exe = executable('catch2_topology_metadata_store',
files('unit/topology/topology_metadata_store_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_string_interner_exe = executable('catch2_string_interner',
files('unit/search/string_interner_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
catch2_binary_quantization_exe = executable('catch2_binary_quantization',
files('unit/vector/binary_quantization_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Fuzzy Index Prioritization Tests(Catch2) - fuzzy index scoring
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_fuzzy_index_prioritization_exe = executable('catch2_fuzzy_index_prioritization',
files('unit/metadata/fuzzy_index_prioritization_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#KG Store Alias and Entities Tests(Catch2) - KG alias and entity operations
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_kg_store_alias_entities_exe = executable('catch2_kg_store_alias_entities',
files('unit/metadata/kg_store_alias_and_entities_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#FTS Query Spec Integration Tests(Catch2) - FTS search integration
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_fts_queryspec_integration_exe = executable('catch2_fts_queryspec_integration',
files('unit/metadata/fts_queryspec_integration_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Tags Query Spec Integration Tests(Catch2) - tags query integration
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_tags_queryspec_integration_exe = executable('catch2_tags_queryspec_integration',
files('unit/metadata/tags_queryspec_integration_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Query Helpers Integration Tests(Catch2) - query helper integration
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_query_helpers_integration_exe = executable('catch2_query_helpers_integration',
files('unit/metadata/query_helpers_integration_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Metadata Schema Tests(Catch2) - comprehensive schema, CRUD, FTS, migrations
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_metadata_schema_exe = executable('catch2_metadata_schema',
files('unit/metadata/metadata_schema_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#FTS5 Failure Scenarios Tests(Catch2) - FTS5 edge cases and failure modes
#Migrated from GTest as part of yams - 3s4 / yams - aqc
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_fts5_failure_scenarios_exe = executable('catch2_fts5_failure_scenarios',
files('unit/metadata/fts5_failure_scenarios_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Corpus Stats Tests(Catch2) - corpus statistics for adaptive search tuning
#Phase 1 of Epic yams - 7ez4 : Adaptive Search Engine Tuning via Corpus - Aware FSM
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_corpus_stats_exe = executable('catch2_corpus_stats',
files('unit/metadata/corpus_stats_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Repository Foundation Tests(Catch2) - entity_traits, result_helpers, crud_ops
#Phase 1 of ADR - 0004 : MetadataRepository Refactor with Templates and Metaprogramming
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
catch2_repository_foundation_exe = executable('catch2_repository_foundation',
files('unit/metadata/repository_foundation_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Core tests(minimal dependencies - no daemon)
core_test_deps = [
dependency('spdlog'),
dependency('yams_core'),
]
core_cpp23_features_exe = executable('core_cpp23_features',
files('unit/core/cpp23_features_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + core_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
core_cpp23_features_fallback_exe = executable('core_cpp23_features_fallback',
files('unit/core/cpp23_features_fallback_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + core_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
core_magic_numbers_exe = executable('core_magic_numbers',
files('unit/core/magic_numbers_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + core_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
core_uuid_exe = executable('core_uuid',
files('unit/core/uuid_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + core_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
core_checked_arithmetic_exe = executable('core_checked_arithmetic',
files('unit/core/checked_arithmetic_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + core_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
config_parse_utils_exe = executable('config_parse_utils',
files(
'unit/config/config_parse_utils_catch2_test.cpp',
'unit/config/environment_catch2_test.cpp',
'unit/config/flat_toml_reader_catch2_test.cpp',
),
include_directories: incs,
dependencies: [
catch2_dep,
catch2_main_dep,
dependency('threads'),
dependency('yams_config'),
dependency('spdlog'),
],
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
tune_advisor_environment_snapshot_exe = executable(
'tune_advisor_environment_snapshot',
files('unit/daemon/tune_advisor_environment_snapshot_catch2_test.cpp'),
include_directories: incs,
dependencies: [
catch2_dep,
catch2_main_dep,
dependency('threads'),
dependency('yams_config'),
dependency('yams_tune_advisor'),
dependency('spdlog'),
],
cpp_args: test_cpp_noerror_args,
build_rpath: ':'.join(_test_rpaths),
install: false,
)
test('tune_advisor_environment_snapshot', tune_advisor_environment_snapshot_exe,
timeout: 30,
)
config_reader_link_smoke_exe = executable('config_reader_link_smoke',
files('unit/config/config_reader_link_smoke.cpp'),
include_directories: incs,
dependencies: [dependency('yams_api')],
install: false,
)
detection_exe = executable('detection',
files(
'unit/detection/command_integration_test.cpp',
'unit/detection/detection_test_helpers.h',
'unit/detection/file_type_detector_test.cpp',
'unit/detection/file_type_graceful_fallback_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Plugins tests(Catch2 - migrated from GTest)
plugins_catch2_exe = executable('plugins_catch2',
files(
'unit/plugins/plugin_installer_test.cpp',
'unit/plugins/plugin_repo_client_test.cpp',
'unit/plugins/onnx_request_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Integrity tests(Catch2 - migrated from GTest)
integrity_test_deps = [
dependency('spdlog'),
dependency('yams_core'),
dependency('yams_crypto'),
dependency('yams_integrity'),
dependency('yams_storage_engine'),
dependency('yams_reference_counter'),
dependency('yams_metadata'),
dependency('yams_search'),
dependency('yams_daemon'),
]
integrity_catch2_exe = executable('integrity_catch2',
files(
'unit/integrity/chunk_validator_test.cpp',
'unit/integrity/integrity_verifier_simple_test.cpp',
'unit/integrity/integrity_verifier_catch2_test.cpp',
'unit/integrity/repair_manager_test.cpp',
'unit/integrity/verification_monitor_test.cpp',
'unit/integrity/verification_scheduler_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + integrity_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Content tests(depends on content, extraction, detection modules)
content_test_deps = [
dependency('spdlog'),
dependency('yams_core'),
dependency('yams_content'),
dependency('yams_extraction'),
dependency('yams_detection'),
dependency('sqlite3'),
]
content_handlers_exe = executable('content_handlers',
files('unit/content/content_handlers_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + content_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Archive content handler tests(formatToString, ProcessingStats, helper functions, canHandle)
archive_content_handler_exe = executable('archive_content_handler',
files('unit/content/archive_content_handler_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + content_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
html_extractor_robust_exe = executable('html_extractor_robust',
files('unit/extraction/html_extractor_robust_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + content_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
plain_text_extractor_exe = executable('plain_text_extractor',
files('unit/extraction/plain_text_extractor_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + content_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
text_basic_handler_exe = executable('text_basic_handler',
files('unit/extraction/text_basic_handler_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + content_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
builtin_content_extractor_exe = executable('builtin_content_extractor',
files('unit/extraction/builtin_content_extractor_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + content_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Text extraction to FTS5 pipeline test(detection->extraction->indexing->search)
text_extraction_fts5_pipeline_exe = executable('text_extraction_fts5_pipeline',
files('unit/extraction/text_extraction_fts5_pipeline_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + content_test_deps + [dependency('yams_metadata')],
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Plugin process tests(external plugin infrastructure)
plugin_process_test_deps = [
dependency('spdlog'),
dependency('yams_core'),
dependency('yams_extraction'),
dependency('nlohmann_json'),
]
plugin_process_exe = executable('plugin_process',
files('unit/extraction/plugin_process_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + plugin_process_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
plugin_process_minimal_exe = executable('plugin_process_minimal',
files('unit/extraction/plugin_process_minimal_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + plugin_process_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
plugin_process_launcher_exe = executable('plugin_process_launcher',
files('unit/extraction/plugin_process_launcher_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + plugin_process_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
jsonrpc_client_exe = executable('jsonrpc_client',
files('unit/extraction/jsonrpc_client_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + plugin_process_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
external_plugin_extractor_exe = executable('external_plugin_extractor',
files('unit/extraction/external_plugin_extractor_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + plugin_process_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Chunking tests(depends on chunking module)
chunking_test_deps = [
dependency('spdlog'),
dependency('yams_core'),
dependency('yams_chunking'),
dependency('yams_crypto'),
]
chunking_exe = executable('chunking',
files('unit/chunking/chunking_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + chunking_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Crypto tests(depends on crypto module)
crypto_test_deps = [
dependency('spdlog'),
dependency('yams_core'),
dependency('yams_crypto'),
]
crypto_exe = executable('crypto',
files('unit/crypto/crypto_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + crypto_test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
grep_service_exe = executable('grep_service',
files('unit/app/services/grep_service_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
indexing_service_exe = executable('indexing_service',
files('unit/app/services/indexing_service_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
document_service_exe = executable('document_service',
files('unit/app/services/document_service_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
document_service_update_metadata_exe = executable('document_service_update_metadata',
files('unit/app/services/document_service_update_metadata_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
document_ingestion_batch_exe = executable('document_ingestion_batch',
files('unit/app/services/document_ingestion_batch_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
service_utilities_exe = executable('service_utilities',
files(
'unit/app/services/service_utilities_test.cpp',
'unit/app/services/download_metadata_entries_test.cpp',
'unit/app/services/enhanced_search_config_catch2_test.cpp',
'unit/app/services/retrieval_service_mapping_catch2_test.cpp',
),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
service_deadline_exe = executable('service_deadline',
files('unit/app/services/service_deadline_catch2_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
simd_memmem_exe = executable('simd_memmem',
files('unit/app/services/simd_memmem_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
grep_regex_exe = executable('grep_regex',
files('unit/app/services/grep_regex_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
literal_extractor_exe = executable('literal_extractor',
files('unit/app/services/literal_extractor_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + test_deps,
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
search_test_deps = [
dependency('spdlog'),
dependency('yams_core'),
dependency('yams_search'),
dependency('yams_vector'),
dependency('yams_metadata'),
dependency('yams_app_services'),
dependency('yams_api'),
boost_dep,
]
#Re - enabled with mock - based tests disabled, placeholder integration test added
#TODO PBI - 071 : Implement full integration tests with real components
hybrid_search_exe = executable('hybrid_search',
files('unit/search/hybrid_search_comprehensive_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + search_test_deps + [
dependency('yams_daemon'),
dependency('yams_daemon_client'),
],
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
#Corpus Stats Search Integration Tests(Catch2)
#Phase 1 of Epic yams - 7ez4 : Validates corpus stats collection from real document store
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
if not _test_address_sanitizer
corpus_stats_search_integration_exe = executable('corpus_stats_search_integration',
files('unit/search/corpus_stats_search_integration_test.cpp'),
include_directories: incs,
dependencies: [catch2_dep, catch2_main_dep] + search_test_deps + [
dependency('yams_daemon'),
dependency('yams_daemon_client'),
],
cpp_args: test_cpp_noerror_args + ['-DYAMS_TESTING=1'],
build_rpath: ':'.join(_test_rpaths),
install: false,
)
endif
#Test Registrations
#-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
#Metadata tests
test('metadata_retrieval_schema', catch2_metadata_retrieval_exe,
suite: ['catch2', 'unit', 'metadata', 'retrieval'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
#Removed : metadata_search test - HybridSearchEngine specific
test('metadata_migration_validation', catch2_metadata_migration_exe,
suite: ['catch2', 'unit', 'metadata', 'migration'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('metadata_unit', catch2_metadata_unit_exe,
suite: ['catch2', 'unit', 'metadata', 'yams-metadata'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('connection_pool', catch2_connection_pool_exe,
suite: ['catch2', 'unit', 'metadata', 'connection_pool'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('document_snapshots', catch2_document_snapshots_exe,
suite: ['catch2', 'unit', 'metadata', 'snapshots'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('kg_store', catch2_kg_store_exe,
suite: ['catch2', 'unit', 'metadata', 'kg'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('kg_write_buffer', catch2_kg_write_buffer_exe,
suite: ['catch2', 'unit', 'metadata', 'kg'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('database', catch2_database_exe,
suite: ['catch2', 'unit', 'metadata', 'database'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('metadata_corruption', catch2_metadata_corruption_exe,
suite: ['catch2', 'unit', 'metadata', 'corruption'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('fts5', catch2_fts5_exe,
suite: ['catch2', 'unit', 'metadata', 'fts5'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('tree_builder', catch2_tree_builder_exe,
suite: ['catch2', 'unit', 'metadata', 'tree_builder'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('tree_differ', catch2_tree_differ_exe,
suite: ['catch2', 'unit', 'metadata', 'tree_differ'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('path_tree_delete', catch2_path_tree_delete_exe,
suite: ['catch2', 'unit', 'metadata', 'path_tree'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('session_isolation', catch2_session_isolation_exe,
suite: ['catch2', 'unit', 'metadata', 'session'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('metadata_repository', catch2_metadata_repository_exe,
suite: ['catch2', 'unit', 'metadata', 'repository'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
test('metadata_content_transaction', catch2_metadata_content_transaction_exe,
suite: ['catch2', 'unit', 'metadata', 'repository', 'transaction'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('metadata_sync_adapter', catch2_metadata_sync_adapter_exe,
suite: ['catch2', 'unit', 'metadata', 'memory-sync'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('topology_sync_adapter', catch2_topology_sync_adapter_exe,
suite: ['catch2', 'unit', 'metadata', 'topology', 'memory-sync'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('metadata_repository_cache', catch2_metadata_repository_cache_exe,
suite: ['catch2', 'unit', 'metadata', 'cache'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('topology_baseline', catch2_topology_baseline_exe,
suite: ['catch2', 'unit', 'topology'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('topology_identity', catch2_topology_identity_exe,
suite: ['catch2', 'unit', 'topology'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('topology_factory', catch2_topology_factory_exe,
suite: ['catch2', 'unit', 'topology'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('topology_kmeans', catch2_topology_kmeans_exe,
suite: ['catch2', 'unit', 'topology'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('topology_representative_rule', catch2_topology_representative_rule_exe,
suite: ['catch2', 'unit', 'topology'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('topology_roads', catch2_topology_roads_exe,
suite: ['catch2', 'unit', 'topology'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('topology_road_sidecar', catch2_topology_road_sidecar_exe,
suite: ['catch2', 'unit', 'topology'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('topology_roads_incremental', catch2_topology_roads_incremental_exe,
suite: ['catch2', 'unit', 'topology'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('topology_input_event_time', catch2_topology_input_event_time_exe,
suite: ['catch2', 'unit', 'topology'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('topology_ordered_members', catch2_topology_ordered_members_exe,
suite: ['catch2', 'unit', 'topology'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('topology_codec', catch2_topology_codec_exe,
suite: ['catch2', 'unit', 'topology'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('topology_metadata_store', catch2_topology_metadata_store_exe,
suite: ['catch2', 'unit', 'topology'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('string_interner', catch2_string_interner_exe,
suite: ['catch2', 'unit', 'search'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('binary_quantization', catch2_binary_quantization_exe,
suite: ['catch2', 'unit', 'vector'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('fuzzy_index_prioritization', catch2_fuzzy_index_prioritization_exe,
suite: ['catch2', 'unit', 'metadata', 'fuzzy'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('kg_store_alias_entities', catch2_kg_store_alias_entities_exe,
suite: ['catch2', 'unit', 'metadata', 'kg'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('fts_queryspec_integration', catch2_fts_queryspec_integration_exe,
suite: ['catch2', 'unit', 'metadata', 'fts'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('tags_queryspec_integration', catch2_tags_queryspec_integration_exe,
suite: ['catch2', 'unit', 'metadata', 'tags'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('query_helpers_integration', catch2_query_helpers_integration_exe,
suite: ['catch2', 'unit', 'metadata', 'query_helpers'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('metadata_schema', catch2_metadata_schema_exe,
suite: ['catch2', 'unit', 'metadata', 'schema'],
args: ['~[slow]', '--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 300
)
test('metadata_schema_slow', catch2_metadata_schema_exe,
suite: ['catch2', 'slow', 'metadata', 'schema'],
args: ['[slow]', '--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 300,
is_parallel: false
)
test('fts5_failure_scenarios', catch2_fts5_failure_scenarios_exe,
suite: ['catch2', 'unit', 'metadata', 'fts5', 'failure'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180 # Includes concurrent and large content tests
)
test('corpus_stats', catch2_corpus_stats_exe,
suite: ['catch2', 'unit', 'metadata', 'corpus_stats'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('repository_foundation', catch2_repository_foundation_exe,
suite: ['catch2', 'unit', 'metadata', 'repository', 'foundation'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
#Core tests
test('core_cpp23_features', core_cpp23_features_exe,
suite: ['catch2', 'unit', 'core', 'cpp23'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('core_cpp23_features_fallback', core_cpp23_features_fallback_exe,
suite: ['catch2', 'unit', 'core', 'cpp23'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('core_magic_numbers', core_magic_numbers_exe,
suite: ['catch2', 'unit', 'core', 'magic'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('core_uuid', core_uuid_exe,
suite: ['catch2', 'unit', 'core', 'uuid'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('core_checked_arithmetic', core_checked_arithmetic_exe,
suite: ['catch2', 'unit', 'core', 'arithmetic'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('config_parse_utils', config_parse_utils_exe,
suite: ['catch2', 'unit', 'config', 'parse'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('config_environment_random_order', config_parse_utils_exe,
suite: ['catch2', 'unit', 'config', 'environment', 'order'],
args: ['[config][environment]', '--order', 'rand', '--rng-seed', '66'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('config_reader_link_smoke', config_reader_link_smoke_exe,
suite: ['unit', 'config', 'link'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('detection', detection_exe,
suite: ['catch2', 'unit', 'detection'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('plugins_catch2', plugins_catch2_exe,
suite: ['catch2', 'unit', 'plugins'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('integrity_catch2', integrity_catch2_exe,
suite: ['catch2', 'unit', 'integrity'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: host_machine.system() == 'windows' ? 600 : 120
)
#Content tests
test('content_handlers', content_handlers_exe,
suite: ['catch2', 'unit', 'content', 'handlers'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('archive_content_handler', archive_content_handler_exe,
suite: ['catch2', 'unit', 'content', 'archive'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('html_extractor_robust', html_extractor_robust_exe,
suite: ['catch2', 'unit', 'extraction', 'html'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120 # Allow longer timeout for large file tests
)
test('plain_text_extractor', plain_text_extractor_exe,
suite: ['catch2', 'unit', 'extraction'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('text_basic_handler', text_basic_handler_exe,
suite: ['catch2', 'unit', 'extraction'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('builtin_content_extractor', builtin_content_extractor_exe,
suite: ['catch2', 'unit', 'extraction', 'content_extractor'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('text_extraction_fts5_pipeline', text_extraction_fts5_pipeline_exe,
suite: ['catch2', 'unit', 'extraction', 'pipeline', 'fts5'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('plugin_process', plugin_process_exe,
suite: ['catch2', 'unit', 'extraction', 'plugin'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('plugin_process_minimal', plugin_process_minimal_exe,
suite: ['catch2', 'unit', 'extraction', 'plugin', 'debug'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120,
is_parallel: false
)
test('plugin_process_launcher', plugin_process_launcher_exe,
suite: ['catch2', 'unit', 'extraction', 'plugin', 'launcher'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path, 'YAMS_SOURCE_DIR': meson.project_source_root() },
timeout: host_machine.system() == 'windows' ? 180 : 120,
#PyInstaller process tests have resource contention when run in parallel
is_parallel: false
)
test('jsonrpc_client', jsonrpc_client_exe,
suite: ['catch2', 'unit', 'extraction', 'jsonrpc'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('external_plugin_extractor', external_plugin_extractor_exe,
suite: ['catch2', 'unit', 'extraction', 'plugin'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
#Chunking tests
test('chunking', chunking_exe,
suite: ['catch2', 'unit', 'chunking'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
#Crypto tests
test('crypto', crypto_exe,
suite: ['catch2', 'unit', 'crypto'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
#Service tests
test('grep_service', grep_service_exe,
suite: ['catch2', 'unit', 'services', 'grep'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('indexing_service', indexing_service_exe,
suite: ['catch2', 'unit', 'services', 'indexing'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
test('document_service', document_service_exe,
suite: ['catch2', 'unit', 'services', 'document'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
test('document_ingestion_batch', document_ingestion_batch_exe,
suite: ['catch2', 'unit', 'services', 'ingestion', 'batch'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('service_utilities', service_utilities_exe,
suite: ['catch2', 'unit', 'services', 'utilities'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('service_deadline', service_deadline_exe,
suite: ['catch2', 'unit', 'services', 'deadline'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('simd_memmem', simd_memmem_exe,
suite: ['catch2', 'unit', 'services', 'simd'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('grep_regex', grep_regex_exe,
suite: ['catch2', 'unit', 'services', 'grep'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('literal_extractor', literal_extractor_exe,
suite: ['catch2', 'unit', 'services', 'literal'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
#Search tests
test('hybrid_search', hybrid_search_exe,
suite: ['catch2', 'unit', 'search', 'hybrid'],
args: ['~[slow]', '--allow-running-no-tests'],
env: {
'LD_LIBRARY_PATH': _test_env_ld_library_path,
'YAMS_DISABLE_VECTORS': '1',
},
timeout: 120
)
test('hybrid_search_slow', hybrid_search_exe,
suite: ['catch2', 'slow', 'search', 'hybrid'],
args: ['[slow]', '--allow-running-no-tests'],
env: {
'LD_LIBRARY_PATH': _test_env_ld_library_path,
'YAMS_DISABLE_VECTORS': '1',
},
timeout: 120
)
if not _test_address_sanitizer
test('corpus_stats_search_integration', corpus_stats_search_integration_exe,
suite: ['catch2', 'integration', 'search', 'corpus_stats'],
env: {
'LD_LIBRARY_PATH': _test_env_ld_library_path,
'YAMS_DISABLE_VECTORS': '1',
},
timeout: 180
)
endif
#Daemon tests
test('daemon_fsm_suite', catch2_daemon_fsm_exe,
suite: ['catch2', 'unit', 'daemon', 'fsm'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
daemon_metrics_timeout = (yams_sanitize_thread or yams_sanitize_address) ? 240 : 180
test('daemon_metrics_status', catch2_daemon_metrics_status_exe,
suite: ['catch2', 'unit', 'daemon', 'metrics', 'status'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: daemon_metrics_timeout,
is_parallel: false
)
test('daemon_metrics_core', catch2_daemon_metrics_core_exe,
suite: ['catch2', 'unit', 'daemon', 'metrics', 'core'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('daemon_components', catch2_daemon_components_exe,
suite: ['catch2', 'unit', 'daemon', 'components'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('p2p_transport', catch2_p2p_transport_exe,
suite: ['catch2', 'unit', 'daemon', 'p2p', 'network'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('p2p_protocol', catch2_p2p_protocol_exe,
args: ['~[fuzz]'],
suite: ['catch2', 'unit', 'daemon', 'p2p', 'network'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('p2p_protocol_fuzz_controls', catch2_p2p_protocol_exe,
args: ['[daemon][p2p][protocol][fuzz]'],
suite: ['catch2', 'unit', 'daemon', 'p2p', 'fuzz-smoke'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('p2p_delta', catch2_p2p_delta_exe,
args: ['~[fuzz]'],
suite: ['catch2', 'unit', 'daemon', 'p2p', 'network'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('p2p_delta_fuzz_controls', catch2_p2p_delta_exe,
args: ['[daemon][p2p][delta][fuzz]'],
suite: ['catch2', 'unit', 'daemon', 'p2p', 'fuzz-smoke'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('p2p_delta_large_history', catch2_p2p_delta_exe,
args: ['direct P2P catch-up advances beyond 1024 retained operations'],
suite: ['catch2', 'slow', 'daemon', 'p2p', 'network'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 1200,
is_parallel: false
)
test('peer_registry', catch2_peer_registry_exe,
suite: ['catch2', 'unit', 'daemon', 'p2p', 'sqlite'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('p2p_manager', catch2_p2p_manager_exe,
suite: ['catch2', 'unit', 'daemon', 'p2p', 'network', 'sqlite'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('admission_policy', catch2_admission_policy_exe,
suite: ['catch2', 'unit', 'daemon', 'admission-policy'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('grep_result_window', catch2_grep_result_window_exe,
suite: ['catch2', 'unit', 'daemon', 'grep'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('search_admission_controller', catch2_search_admission_controller_exe,
suite: ['catch2', 'unit', 'daemon', 'search-admission'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('ingest_metrics_publisher', catch2_ingest_metrics_publisher_exe,
suite: ['catch2', 'unit', 'daemon', 'ingest-metrics'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('topology_manager', catch2_topology_manager_exe,
suite: ['catch2', 'unit', 'daemon', 'topology-manager'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('embedding_lifecycle', catch2_embedding_lifecycle_exe,
suite: ['catch2', 'unit', 'daemon', 'embedding-lifecycle'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('write_coordinator', catch2_write_coordinator_exe,
suite: ['catch2', 'unit', 'daemon', 'write-coordinator'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('repair_service', catch2_repair_service_exe,
suite: ['catch2', 'unit', 'daemon', 'repair', 'stuck-docs'],
env: {
'LD_LIBRARY_PATH': _test_env_ld_library_path,
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
'YAMS_SQLITE_MINIMAL_PRAGMAS': '1',
'YAMS_SQLITE_BUSY_TIMEOUT_MS': '1000',
'YAMS_SQLITE_VEC_SKIP_INIT': '1',
'YAMS_DISABLE_VECTORS': '1',
'YAMS_DISABLE_VECTOR_DB': '1',
'YAMS_DISABLE_SESSION_WATCHER': '1',
'YAMS_SKIP_MODEL_LOADING': '1',
'YAMS_TESTING': '1',
},
timeout: 120,
is_parallel: false
)
test('daemon_protocol', catch2_daemon_protocol_exe,
suite: ['catch2', 'unit', 'daemon', 'protocol'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('daemon_background_processing', catch2_daemon_background_exe,
suite: ['catch2', 'unit', 'daemon', 'background'],
args: ['~[slow]', '--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('daemon_background_processing_slow', catch2_daemon_background_exe,
suite: ['catch2', 'slow', 'daemon', 'background'],
args: ['[slow]', '--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('daemon_graph_component', catch2_daemon_graph_component_exe,
suite: ['catch2', 'unit', 'daemon', 'graph', 'pbi-009'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('graph_services', catch2_graph_services_exe,
suite: ['catch2', 'unit', 'services', 'graph'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('daemon_component_submodule', catch2_daemon_component_submodule_exe,
suite: ['catch2', 'unit', 'daemon', 'components', 'yams-zns'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('embedding_service_timing', catch2_embedding_service_timing_exe,
suite: ['catch2', 'unit', 'daemon', 'embedding', 'startup'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('startup_replay', catch2_startup_replay_exe,
suite: ['catch2', 'unit', 'daemon', 'startup', 'fuzz-smoke'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('gradient_limiter', catch2_gradient_limiter_exe,
suite: ['catch2', 'unit', 'daemon', 'gradient'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('work_coordinator', catch2_work_coordinator_exe,
suite: ['catch2', 'unit', 'daemon', 'work-coordinator'],
args: ['~[slow]', '--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('work_coordinator_slow', catch2_work_coordinator_exe,
suite: ['catch2', 'slow', 'daemon', 'work-coordinator'],
args: ['[slow]', '--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('post_ingest_queue_unit', catch2_post_ingest_queue_unit_exe,
suite: ['catch2', 'unit', 'daemon', 'post-ingest'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('pressure_limited_poller', catch2_pressure_limited_poller_exe,
suite: ['catch2', 'unit', 'daemon', 'poller'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('assert_val', catch2_assert_val_exe,
suite: ['catch2', 'unit', 'core', 'assert'],
args: ['--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: host_machine.system() == 'windows' ? 60 : 30,
is_parallel: false
)
test('metrics_consistency', catch2_metrics_consistency_exe,
suite: ['catch2', 'unit', 'daemon', 'metrics'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('search_service', catch2_search_service_exe,
suite: ['catch2', 'unit', 'services', 'search'],
env: {
'LD_LIBRARY_PATH': _test_env_ld_library_path,
'YAMS_TEST_SAFE_SINGLE_INSTANCE': '1',
'YAMS_SQLITE_MINIMAL_PRAGMAS': '1',
'YAMS_SQLITE_BUSY_TIMEOUT_MS': '1000',
'YAMS_SQLITE_VEC_SKIP_INIT': '1',
'YAMS_DISABLE_VECTORS': '1',
'YAMS_TESTING': '1',
},
timeout: 180,
is_parallel: false
)
test('fts5_stress', catch2_fts5_stress_exe,
suite: ['catch2', 'stress', 'metadata', 'fts5'],
args: ['--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 300,
is_parallel: false
)
test('daemon_plugin_harness', catch2_daemon_plugin_exe,
suite: ['catch2', 'unit', 'daemon', 'plugin'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
if onnx_dep.found()
test('daemon_onnx_provider_config', catch2_daemon_onnx_provider_exe,
suite: ['catch2', 'unit', 'daemon', 'onnx'],
env: {
'LD_LIBRARY_PATH': _test_env_ld_library_path,
'YAMS_TEST_MODE': '1',
},
timeout: 60,
is_parallel: true
)
if host_machine.system() == 'darwin'
test('gpu_provider_coreml', catch2_gpu_provider_exe,
suite: ['catch2', 'unit', 'daemon', 'gpu'],
env: {
'LD_LIBRARY_PATH': _test_env_ld_library_path,
},
timeout: 30,
is_parallel: true
)
endif
endif
test('plugin_infrastructure', catch2_plugin_infrastructure_exe,
suite: ['catch2', 'unit', 'daemon', 'plugin', 'infrastructure'],
args: ['~[slow]', '--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('plugin_infrastructure_slow', catch2_plugin_infrastructure_exe,
suite: ['catch2', 'slow', 'daemon', 'plugin', 'infrastructure'],
args: ['[slow]', '--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('external_plugin_host', catch2_external_plugin_host_exe,
suite: ['catch2', 'unit', 'daemon', 'plugin', 'external'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('extractor_adapter', catch2_extractor_adapter_exe,
suite: ['catch2', 'unit', 'daemon', 'extractor'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('repair_scheduling_adapter', catch2_repair_scheduling_exe,
suite: ['catch2', 'unit', 'daemon', 'repair', 'yams-3s4'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('repair_maintenance', catch2_repair_maintenance_exe,
suite: ['catch2', 'unit', 'daemon', 'repair'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('service_manager', catch2_service_manager_exe,
suite: ['catch2', 'unit', 'daemon', 'service_manager', 'yams-3s4'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('memory_sync_apply', catch2_memory_sync_apply_exe,
suite: ['catch2', 'unit', 'daemon', 'memory-sync'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('db_recovery', catch2_db_recovery_exe,
suite: ['catch2', 'unit', 'daemon', 'db_recovery'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('db_salvage', catch2_db_salvage_exe,
suite: ['catch2', 'unit', 'daemon', 'db_salvage'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('db_recovery_vacuum', catch2_db_recovery_vacuum_exe,
suite: ['catch2', 'unit', 'daemon', 'db_recovery'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('storage_preflight', catch2_storage_preflight_exe,
suite: ['catch2', 'unit', 'daemon', 'storage_preflight'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('tune_advisor_snapshot', catch2_tune_advisor_snapshot_exe,
suite: ['catch2', 'unit', 'daemon', 'tune_advisor'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('repair_hold_hints', catch2_repair_hold_hints_exe,
suite: ['catch2', 'unit', 'daemon', 'tuning'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('physical_walk_ttl', catch2_physical_walk_ttl_exe,
suite: ['catch2', 'unit', 'daemon', 'tuning'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('streaming_processor', catch2_streaming_processor_exe,
suite: ['catch2', 'unit', 'daemon', 'streaming', 'yams-3s4'],
args: ['--allow-running-no-tests'], # Skips entirely on Windows
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('in_process_transport', catch2_in_process_transport_exe,
suite: ['catch2', 'unit', 'daemon', 'streaming', 'inprocess'],
args: ['--allow-running-no-tests'], # Skips entirely on Windows
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('sandbox_detection', catch2_sandbox_detection_exe,
suite: ['catch2', 'unit', 'daemon', 'sandbox'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('multiplex_client', catch2_multiplex_client_exe,
suite: ['catch2', 'unit', 'daemon', 'multiplex', 'yams-3s4'],
args: ['--allow-running-no-tests'], # All tests have [.requires_daemon] tag
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('entity_graph_service', catch2_entity_graph_service_exe,
suite: ['catch2', 'unit', 'daemon', 'yams-3s4'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
#These tests use ServiceManager / WorkCoordinator which have resource contention
#when run in parallel with other daemon tests - run sequentially
test('service_manager_shutdown', catch2_service_manager_shutdown_exe,
suite: ['catch2', 'unit', 'daemon', 'service_manager', 'yams-3s4'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120,
is_parallel: false
)
test('service_manager_degraded', catch2_service_manager_degraded_exe,
suite: ['catch2', 'unit', 'daemon', 'service_manager', 'yams-3s4'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120,
is_parallel: false
)
test('repair_binary_filter', catch2_repair_binary_filter_exe,
suite: ['catch2', 'unit', 'daemon', 'repair', 'yams-3s4'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120,
is_parallel: false
)
test('abi_model_provider_dim', catch2_abi_model_provider_dim_exe,
suite: ['catch2', 'unit', 'daemon', 'yams-3s4'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('status_readiness_vector_usable', catch2_status_readiness_vector_usable_exe,
suite: ['catch2', 'unit', 'daemon', 'readiness'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('model_provider_registry', catch2_model_provider_registry_exe,
suite: ['catch2', 'unit', 'daemon', 'model_provider'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('simeon_model_provider', catch2_simeon_model_provider_exe,
suite: ['catch2', 'unit', 'daemon', 'model_provider', 'simeon'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('embedding_recovery', catch2_embedding_recovery_exe,
suite: ['catch2', 'unit', 'daemon', 'yams-3s4'],
args: ['--allow-running-no-tests'], # Skips entirely on Windows
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120,
is_parallel: false
)
test('request_io_edge', catch2_request_io_edge_exe,
suite: ['catch2', 'unit', 'daemon', 'yams-3s4'],
args: ['--allow-running-no-tests'], # Placeholder tests - all skipped
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120,
is_parallel: false
)
test('daemon_warm_bench', catch2_daemon_warm_bench_exe,
suite: ['catch2', 'unit', 'daemon', 'bench', 'yams-3s4'],
args: ['--allow-running-no-tests'], # Bench only runs when YAMS_BENCH_FAST=1
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('request_lifetime', catch2_request_lifetime_exe,
suite: ['catch2', 'unit', 'daemon', 'yams-3s4'],
args: ['--allow-running-no-tests'], # Skips when streaming disabled
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120,
is_parallel: false
)
test('writer_drain_cleanup', catch2_writer_drain_cleanup_exe,
suite: ['catch2', 'unit', 'daemon', 'ipc', 'mux'],
args: ['--allow-running-no-tests'], # Skips entirely on Windows
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60,
is_parallel: false
)
test('asio_connection_pool', catch2_asio_connection_pool_exe,
suite: ['catch2', 'unit', 'daemon', 'connection-pool'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120,
is_parallel: false
)
test('asio_transport_exhaustion', catch2_asio_transport_exhaustion_exe,
suite: ['catch2', 'unit', 'daemon', 'transport', 'max-inflight'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120,
is_parallel: false,
#Test skips on Windows(Unix domain sockets not supported)
should_fail: host_machine.system() == 'windows'
)
test('asio_transport_inflight_close_ipc_prefix', catch2_asio_transport_inflight_close_ipc_prefix_exe,
suite: ['catch2', 'unit', 'daemon', 'transport', 'ipc'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120,
is_parallel: false,
#Test skips on Windows(Unix domain sockets not supported)
should_fail: host_machine.system() == 'windows'
)
test('daemon', catch2_daemon_exe,
suite: ['catch2', 'unit', 'daemon', 'yams-3s4'],
env: {
'LD_LIBRARY_PATH': _test_env_ld_library_path,
#Disable ABI plugins to avoid TSAN + ONNX memory pressure causing SIGKILL
'YAMS_DISABLE_ABI_PLUGINS': '1',
},
timeout: 120
)
test('tune_advisor_threshold', catch2_tune_advisor_threshold_exe,
suite: ['catch2', 'unit', 'daemon', 'tune', 'advisor'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('tuning_allocation', catch2_tuning_allocation_exe,
suite: ['catch2', 'unit', 'daemon', 'tune', 'allocation'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('tuning_registry_activity', catch2_tuning_registry_activity_exe,
suite: ['catch2', 'slow', 'daemon', 'tune', 'registry', 'activity'],
env: {
'LD_LIBRARY_PATH': _test_env_ld_library_path,
'YAMS_SQLITE_MINIMAL_PRAGMAS': '1',
'YAMS_SQLITE_BUSY_TIMEOUT_MS': '1000',
'YAMS_TESTING': '1',
},
timeout: 120,
is_parallel: false
)
test('socket_proxy_request_activity', catch2_socket_proxy_request_activity_exe,
suite: ['catch2', 'slow', 'daemon', 'socket', 'proxy', 'activity'],
env: {
'LD_LIBRARY_PATH': _test_env_ld_library_path,
'YAMS_SQLITE_MINIMAL_PRAGMAS': '1',
'YAMS_SQLITE_BUSY_TIMEOUT_MS': '1000',
'YAMS_TESTING': '1',
},
timeout: 120,
is_parallel: false
)
test('tuning_reconciliation', catch2_tuning_reconciliation_exe,
suite: ['catch2', 'unit', 'daemon', 'tune', 'reconciliation'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('post_ingest_dynamic_cap_recovery', catch2_post_ingest_dynamic_cap_recovery_exe,
suite: ['catch2', 'unit', 'daemon', 'tune', 'post-ingest'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('resource_governance', catch2_resource_governance_exe,
suite: ['catch2', 'unit', 'daemon', 'governance'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('host_pressure', catch2_host_pressure_exe,
suite: ['catch2', 'unit', 'daemon', 'governance'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('timing_audit', catch2_timing_audit_exe,
suite: ['catch2', 'unit', 'daemon', 'timing-audit'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('dynamic_cap_sentinel', catch2_dynamic_cap_sentinel_exe,
suite: ['catch2', 'unit', 'daemon', 'tune', 'dynamic-cap'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('idle_zero_concurrency', catch2_idle_zero_concurrency_exe,
suite: ['catch2', 'unit', 'daemon', 'tune', 'idle'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('health_check_isolation', catch2_health_check_isolation_exe,
suite: ['catch2', 'unit', 'daemon', 'state', 'health-check'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
if host_machine.system() != 'windows'
test('socket_server_teardown', catch2_socket_server_teardown_exe,
suite: ['catch2', 'unit', 'daemon', 'socket', 'shutdown'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
endif
test('vector_index_coordinator_bulk_scope', catch2_vector_index_coordinator_bulk_scope_exe,
suite: ['catch2', 'unit', 'daemon', 'vector', 'coordinator'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('vector_index_coordinator_coalesce', catch2_vector_index_coordinator_coalesce_exe,
suite: ['catch2', 'unit', 'daemon', 'vector', 'coordinator'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('vector_index_coordinator_telemetry', catch2_vector_index_coordinator_telemetry_exe,
suite: ['catch2', 'unit', 'daemon', 'vector', 'coordinator'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('tuning_loop_wakeup', catch2_tuning_loop_wakeup_exe,
suite: ['catch2', 'unit', 'daemon', 'tune', 'wakeup'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
if onnx_dep.found()
test('onnx_model_pool', catch2_onnx_model_pool_exe,
suite: ['catch2', 'unit', 'daemon', 'onnx', 'pool'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120,
)
endif
test('cli_init_command', catch2_cli_init_command_exe,
suite: ['catch2', 'unit', 'cli', 'init'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120,
is_parallel: false
)
test('storage_backend', catch2_storage_backend_exe,
suite: ['catch2', 'unit', 'storage', 'backend'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('version_vector', catch2_version_vector_exe,
suite: ['catch2', 'unit', 'memory-sync'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('memory_sync_apply_health', catch2_memory_sync_apply_health_exe,
suite: ['catch2', 'unit', 'memory-sync'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('memory_sync_records', catch2_memory_sync_records_exe,
suite: ['catch2', 'unit', 'memory-sync'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('memory_sync', catch2_memory_sync_exe,
suite: ['catch2', 'unit', 'memory-sync'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('content_blob_sync', catch2_content_blob_sync_exe,
suite: ['catch2', 'unit', 'memory-sync'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('memory_sync_service', catch2_memory_sync_service_exe,
suite: ['catch2', 'unit', 'memory-sync'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('memory_sync_config', catch2_memory_sync_config_exe,
suite: ['catch2', 'unit', 'memory-sync'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('memory_sync_cli', catch2_memory_sync_cli_exe,
suite: ['catch2', 'unit', 'memory-sync'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('storage_submodule', catch2_storage_submodule_exe,
suite: ['catch2', 'unit', 'storage', 'yams-8b9'],
args: ['~[slow]', '--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 300
)
test('storage_submodule_slow', catch2_storage_submodule_exe,
suite: ['catch2', 'slow', 'storage', 'yams-8b9'],
args: ['[slow]', '--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 300
)
test('wal_entry', catch2_wal_entry_exe,
suite: ['catch2', 'unit', 'wal'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('wal_submodule', catch2_wal_submodule_exe,
suite: ['catch2', 'unit', 'wal'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('search_submodule', catch2_search_submodule_exe,
suite: ['catch2', 'unit', 'search', 'yams-1yq'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
test('search_vector_stage', catch2_search_vector_stage_exe,
suite: ['catch2', 'unit', 'search', 'vector_stage'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
test('search_vector_stage_route_only', catch2_search_vector_stage_route_only_exe,
suite: ['catch2', 'unit', 'search', 'vector_stage'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
test('search_vector_stage_road_beam', catch2_search_vector_stage_road_beam_exe,
suite: ['catch2', 'unit', 'search', 'vector_stage'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
test('search_vector_stage_road_walk', catch2_search_vector_stage_road_walk_exe,
suite: ['catch2', 'unit', 'search', 'vector_stage'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
test('symspell_search', catch2_symspell_search_exe,
suite: ['catch2', 'unit', 'search', 'symspell'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('search_vector_stage_timeout', catch2_search_vector_stage_timeout_exe,
suite: ['catch2', 'unit', 'search', 'vector_stage'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('evidence_search_pipeline', catch2_evidence_search_pipeline_exe,
suite: ['catch2', 'unit', 'search', 'evidence_pipeline'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
#TuningSlot provenance tests
test('tuning_slot', catch2_tuning_slot_exe,
suite: ['catch2', 'unit', 'search', 'tuner'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
#R3 tuning features + reward tests
test('tuning_features', catch2_tuning_features_exe,
suite: ['catch2', 'unit', 'search', 'tuner'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
#SearchTuner FSM tests(Phase 2 of Epic yams - 7ez4)
test('search_tuner', catch2_search_tuner_exe,
suite: ['catch2', 'unit', 'search', 'tuner', 'yams-7ez4'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
#InternalBenchmark tests(Phase 3 of Epic yams - 7ez4)
test('internal_benchmark', catch2_internal_benchmark_exe,
suite: ['catch2', 'unit', 'search', 'benchmark', 'yams-7ez4'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
test('benchmark_invocation', catch2_benchmark_invocation_exe,
suite: ['catch2', 'unit', 'benchmark', 'harness'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
workdir: meson.project_source_root(),
timeout: 30
)
test('retrieval_benchmark_support', catch2_retrieval_benchmark_support_exe,
suite: ['catch2', 'unit', 'search', 'benchmark'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
test('relevance_label_store', catch2_relevance_label_store_exe,
suite: ['catch2', 'unit', 'search', 'relevance'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 30
)
heavy_submodule_timeout = (yams_sanitize_thread or yams_sanitize_address) ? 600 : 300
test('compression_submodule', catch2_compression_submodule_exe,
suite: ['catch2', 'unit', 'compression', 'yams-pmf'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: heavy_submodule_timeout
)
test('mcp_submodule', catch2_mcp_submodule_exe,
suite: ['catch2', 'unit', 'mcp', 'yams-84g'],
args: ['~[slow]', '--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
test('mcp_submodule_slow', catch2_mcp_submodule_exe,
suite: ['catch2', 'slow', 'mcp', 'yams-84g'],
args: ['[slow]', '--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
cli_test_env = {
'LD_LIBRARY_PATH': _test_env_ld_library_path,
'TSAN_OPTIONS': _test_tsan_options,
'YAMS_SOURCE_DIR': meson.project_source_root(),
'MESON_BUILD_ROOT': meson.project_build_root(),
'YAMS_DAEMON_SOCKET': meson.project_build_root() / 'cli-tests-no-daemon.sock',
'YAMS_DAEMON_SOCKET_PATH': meson.project_build_root() / 'cli-tests-no-daemon.sock',
'YAMS_CLI_DISABLE_DAEMON_AUTOSTART': '1',
}
test('cli_common', catch2_cli_common_exe,
suite: ['catch2', 'unit', 'cli', 'yams-cli', 'common'],
env: cli_test_env,
depends: [yams_cli_exe, version_header],
timeout: 120
)
test('cli_config', catch2_cli_config_exe,
suite: ['catch2', 'unit', 'cli', 'yams-cli', 'config'],
env: cli_test_env,
depends: [yams_cli_exe, version_header],
timeout: 180
)
test('cli_commands', catch2_cli_commands_exe,
suite: ['catch2', 'unit', 'cli', 'yams-cli', 'commands'],
env: cli_test_env,
depends: [yams_cli_exe, version_header],
timeout: 180
)
test('cli_model_plugin', catch2_cli_model_plugin_exe,
suite: ['catch2', 'unit', 'cli', 'yams-cli', 'model-plugin'],
env: cli_test_env,
depends: [yams_cli_exe, version_header],
timeout: 120
)
test('cli_doctor', catch2_cli_doctor_exe,
suite: ['catch2', 'unit', 'cli', 'yams-cli', 'doctor'],
env: cli_test_env,
depends: [yams_cli_exe, version_header],
timeout: 180
)
test('cli_graph', catch2_cli_graph_exe,
suite: ['catch2', 'unit', 'cli', 'yams-cli', 'graph'],
env: cli_test_env,
depends: [yams_cli_exe, version_header],
timeout: 120
)
test('cli_daemon', catch2_cli_daemon_exe,
suite: ['catch2', 'unit', 'cli', 'yams-cli', 'daemon'],
env: cli_test_env,
depends: [yams_cli_exe, version_header],
timeout: 120
)
#Vector test suite(requires enable - vector - tests)
#Migrated from GTest as part of yams - 3s4 / yams - 1d4
if get_option('enable-vector-tests')
test('vector_submodule', catch2_vector_submodule_exe,
suite: ['catch2', 'unit', 'vector', 'yams-1d4'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: heavy_submodule_timeout
)
endif
test('vector_vec0_cosine_order', catch2_vector_vec0_cosine_order_exe,
suite: ['catch2', 'unit', 'vector'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
test('vector_sync_adapter', catch2_vector_sync_adapter_exe,
suite: ['catch2', 'unit', 'vector', 'memory-sync'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 120
)
#API submodule tests(content store, metadata API)
#Migrated from GTest as part of yams - 3s4 / api
test('api_submodule', catch2_api_submodule_exe,
suite: ['catch2', 'unit', 'api', 'yams-api'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
#Tokenizer tests(WordPiece, Unigram, special token injection)
test('tokenizer', catch2_tokenizer_exe,
suite: ['catch2', 'unit', 'vector', 'yams-tokenizer'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 60
)
#Downloader submodule tests(download manager, resume, CAS)
#Migrated from GTest as part of yams - 3s4 / downloader
test('downloader_submodule', catch2_downloader_submodule_exe,
suite: ['catch2', 'unit', 'downloader', 'yams-downloader'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
#Resolve submodule tests(resolver, backends)
#Migrated from GTest as part of yams - 3s4 / resolve
test('resolve_submodule', catch2_resolve_submodule_exe,
suite: ['catch2', 'unit', 'resolve', 'yams-resolve'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
#Manifest submodule tests(manifest manager, serialization, reconstruction)
#Migrated from GTest as part of yams - 3s4 / yams - 1jm
test('manifest_submodule', catch2_manifest_submodule_exe,
suite: ['catch2', 'unit', 'manifest', 'yams-manifest'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
#Repair submodule tests(embedding repair scan)
#Migrated from GTest as part of yams - 3s4 / yams - 1jm
#Note : --allow - running - no - tests needed because tests skip when YAMS_DISABLE_VECTORS = 1
test('repair_submodule', catch2_repair_submodule_exe,
suite: ['catch2', 'unit', 'repair', 'yams-repair'],
args: ['--allow-running-no-tests'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
#Versioning submodule tests(document versioning, indexer)
#Migrated from GTest as part of yams - 3s4 / yams - 1jm
test('versioning_submodule', catch2_versioning_submodule_exe,
suite: ['catch2', 'unit', 'versioning', 'yams-versioning'],
env: { 'LD_LIBRARY_PATH': _test_env_ld_library_path },
timeout: 180
)
endif