107f94f02SGeorge Liugtest_dep = dependency('gtest', main: true, disabler: true, required: false)
207f94f02SGeorge Liugmock_dep = dependency('gmock', disabler: true, required: false)
307f94f02SGeorge Liuif not gtest_dep.found() or not gmock_dep.found()
407f94f02SGeorge Liu    gtest_proj = import('cmake').subproject('googletest', required: false)
507f94f02SGeorge Liu    if gtest_proj.found()
607f94f02SGeorge Liu        gtest_dep = declare_dependency(
707f94f02SGeorge Liu            dependencies: [
807f94f02SGeorge Liu                dependency('threads'),
907f94f02SGeorge Liu                gtest_proj.dependency('gtest'),
1007f94f02SGeorge Liu                gtest_proj.dependency('gtest_main'),
1107f94f02SGeorge Liu            ]
1207f94f02SGeorge Liu        )
1307f94f02SGeorge Liu        gmock_dep = gtest_proj.dependency('gmock')
1407f94f02SGeorge Liu    else
1507f94f02SGeorge Liu        assert(
1607f94f02SGeorge Liu            not get_option('tests').enabled(),
1707f94f02SGeorge Liu            'Googletest is required if tests are enabled'
1807f94f02SGeorge Liu        )
1907f94f02SGeorge Liu    endif
2007f94f02SGeorge Liuendif
2107f94f02SGeorge Liu
2207f94f02SGeorge Liutest_sources = [
2307f94f02SGeorge Liu    generated_cpp,
2407f94f02SGeorge Liu    gen_serialization_hpp,
2507f94f02SGeorge Liu    '../association_manager.cpp',
2607f94f02SGeorge Liu    '../manager.cpp',
2707f94f02SGeorge Liu    '../functor.cpp',
2807f94f02SGeorge Liu    '../errors.cpp',
2907f94f02SGeorge Liu]
3007f94f02SGeorge Liu
3107f94f02SGeorge Liutests = [
3207f94f02SGeorge Liu    'associations_test.cpp',
3307f94f02SGeorge Liu    'interface_ops_test.cpp',
3407f94f02SGeorge Liu    'manager_test.cpp',
3507f94f02SGeorge Liu    'serialize_test.cpp',
3607f94f02SGeorge Liu    'types_test.cpp',
3707f94f02SGeorge Liu    'utils_test.cpp',
3807f94f02SGeorge Liu]
3907f94f02SGeorge Liu
4007f94f02SGeorge Liutest_deps = [
4107f94f02SGeorge Liu    sdbusplus_dep,
4207f94f02SGeorge Liu    phosphor_dbus_interfaces_dep,
4307f94f02SGeorge Liu    phosphor_logging_dep,
44*58a0c359SKonstantin Aladyshev    nlohmann_json_dep,
45*58a0c359SKonstantin Aladyshev    cereal_dep
4607f94f02SGeorge Liu]
4707f94f02SGeorge Liu
4807f94f02SGeorge Liuforeach t : tests
4907f94f02SGeorge Liu    test(t, executable(t.underscorify(), t,
5007f94f02SGeorge Liu                     test_sources,
5107f94f02SGeorge Liu                     include_directories: ['..'],
5207f94f02SGeorge Liu                     dependencies: [
5307f94f02SGeorge Liu                         gtest_dep,
5407f94f02SGeorge Liu                         gmock_dep,
5507f94f02SGeorge Liu                         test_deps,
5607f94f02SGeorge Liu                         ]),
5707f94f02SGeorge Liu        workdir: meson.current_source_dir())
5807f94f02SGeorge Liuendforeach
59