gtest_dep = dependency('gtest', main: true, disabler: true, required: false)
gmock_dep = dependency('gmock', disabler: true, required: false)
if not gtest_dep.found() or not gmock_dep.found()
    gtest_proj = import('cmake').subproject('googletest', required: false)
    if gtest_proj.found()
        gtest_dep = declare_dependency(
            dependencies: [
                dependency('threads'),
                gtest_proj.dependency('gtest'),
                gtest_proj.dependency('gtest_main'),
            ]
        )
        gmock_dep = gtest_proj.dependency('gmock')
  else
        assert(
            not get_option('tests').enabled(),
            'Googletest is required if tests are enabled'
        )
  endif
endif

if not get_option('openpower-pel-extension').disabled()
    subdir('openpower-pels')
endif

tests = [
    'elog_quiesce_test',
    'elog_update_ts_test',
    'extensions_test',
    'remote_logging_test_address',
    'remote_logging_test_config',
    'remote_logging_test_port',
    'sdtest',
    'serialization_test_path',
    'serialization_test_properties',
    'elog_errorwrap_test',
]
foreach t : tests
    test(
        'test_' + t.underscorify(),
        executable(
            'test-' + t.underscorify(),
            t + '.cpp',
            log_manager_sources,
            '../phosphor-rsyslog-config/server-conf.cpp',
            link_with: libphosphor_logging,
            cpp_args: [
                '-DTESTCASE=' + t.underscorify(),
                '-DTESTCASE_' + t.underscorify(),
            ],
            dependencies: [
                gmock_dep,
                gtest_dep,
                log_manager_deps,
            ],
            include_directories: include_directories('..', '../gen'),
        )
    )
endforeach
