meson: Add meson build for test
This commit is to add meson build for test.
and later, we will remove autotools and replace it with meson.
Signed-off-by: George Liu <liuxiwei@inspur.com>
Change-Id: I79c72ca9c508bb5a807d078537bc135af836acdb
diff --git a/meson.build b/meson.build
index 4005e39..73ca4a6 100644
--- a/meson.build
+++ b/meson.build
@@ -95,3 +95,7 @@
subdir: '.',
)
+build_tests = get_option('tests')
+if not build_tests.disabled()
+ subdir('test')
+endif
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..f1c7bd8
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1 @@
+option('tests', type : 'feature', description : 'Build tests')
\ No newline at end of file
diff --git a/test/meson.build b/test/meson.build
new file mode 100644
index 0000000..6e7cabb
--- /dev/null
+++ b/test/meson.build
@@ -0,0 +1,47 @@
+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
+
+test_sources = [
+ '../snmp_conf_manager.cpp',
+ '../snmp_client.cpp',
+ '../snmp_serialize.cpp',
+ '../snmp_util.cpp',
+]
+
+tests = [
+ 'test_error_notification.cpp',
+ 'test_snmp_conf_manager.cpp',
+ 'test_snmp_util.cpp',
+ 'test_snmp_serialize.cpp',
+ 'test_snmp_client.cpp',
+]
+
+foreach t : tests
+ test(t, executable(t.underscorify(), t,
+ test_sources,
+ include_directories: ['..'],
+ dependencies: [
+ gtest_dep,
+ gmock_dep,
+ deps
+ ]),
+ workdir: meson.current_source_dir())
+endforeach