CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(app2ext C)
+PROJECT(app2ext C CXX)
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -g -Wall -Werror")
+SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/")
+
INCLUDE(FindPkgConfig)
-pkg_check_modules(app2ext_libpkgs REQUIRED dlog glib-2.0)
+INCLUDE(ApplyPkgConfig)
+PKG_CHECK_MODULES(app2ext_libpkgs REQUIRED dlog glib-2.0)
+PKG_CHECK_MODULES(GMOCK_DEPS REQUIRED gmock)
FOREACH(flag ${app2ext_libpkgs_CFLAGS})
SET(APP2EXT_CFLAGS "${APP2EXT_CFLAGS} ${flag}")
ADD_SUBDIRECTORY(plugin/app2sd)
ADD_SUBDIRECTORY(test)
+ADD_SUBDIRECTORY(unit-tests)
--- /dev/null
+# Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+#
+# This function applies external (out of source tree) dependencies
+# to given target. Arguments are:
+# TARGET - valid cmake target
+# PRIVACY - dependency can be inherited by dependent targets or not:
+# PUBLIC - this should be used by default, cause compile/link flags passing
+# PRIVATE - do not passes any settings to dependent targets,
+# may be usefull for static libraries from the inside of the project
+# Argument ARGV2 and following are supposed to be names of checked pkg config
+# packages. This function will use variables created by check_pkg_modules().
+# - ${DEP_NAME}_LIBRARIES
+# - ${DEP_NAME}_INCLUDE_DIRS
+# - ${DEP_NAME}_CFLAGS
+#
+FUNCTION(APPLY_PKG_CONFIG TARGET PRIVACY)
+ MATH(EXPR DEST_INDEX "${ARGC}-1")
+ FOREACH(I RANGE 2 ${DEST_INDEX})
+ IF(NOT ${ARGV${I}}_FOUND)
+ MESSAGE(FATAL_ERROR "Not found dependency - ${ARGV${I}}_FOUND")
+ ENDIF(NOT ${ARGV${I}}_FOUND)
+ TARGET_LINK_LIBRARIES(${TARGET} ${PRIVACY} "${${ARGV${I}}_LIBRARIES}")
+ TARGET_INCLUDE_DIRECTORIES(${TARGET} ${PRIVACY} SYSTEM "${${ARGV${I}}_INCLUDE_DIRS}")
+ STRING(REPLACE ";" " " CFLAGS_STR "${${ARGV${I}}_CFLAGS}")
+ SET(CFLAGS_LIST ${CFLAGS_STR})
+ SEPARATE_ARGUMENTS(CFLAGS_LIST)
+ FOREACH(OPTION ${CFLAGS_LIST})
+ TARGET_COMPILE_OPTIONS(${TARGET} ${PRIVACY} ${OPTION})
+ ENDFOREACH(OPTION)
+ SET_TARGET_PROPERTIES(${TARGET} PROPERTIES SKIP_BUILD_RPATH true)
+ ENDFOREACH(I RANGE 2 ${DEST_INDEX})
+ENDFUNCTION(APPLY_PKG_CONFIG TARGET PRIVACY)
BuildRequires: pkgconfig(libtzplatform-config)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(gmock)
BuildRequires: pkgconfig(aul)
BuildRequires: pkgconfig(storage)
BuildRequires: pkgconfig(pkgmgr)
rm -rf %{buildroot}
%make_install
+%check
+cd unit-tests
+ctest -V
+
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
--- /dev/null
+AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/ TEST_SRCS)
+
+ENABLE_TESTING()
+
+SET(TARGET_TEST "app2sd-test")
+
+ADD_EXECUTABLE(${TARGET_TEST} ${TEST_SRCS})
+
+APPLY_PKG_CONFIG(${TARGET_TEST} PUBLIC
+ GMOCK_DEPS
+)
+
+TARGET_LINK_LIBRARIES(${TARGET_TEST} PUBLIC ${TARGET_LIB_COMMON} pthread)
+
+ADD_TEST(${TARGET_TEST} ${TARGET_TEST})
--- /dev/null
+/*
+ * app2sd-unittest
+ *
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <gmock/gmock.h>
+
+namespace {
+const ::testing::Environment* env = nullptr;
+}
+
+namespace app2sd {
+
+class App2sdEnvironment : public ::testing::Environment {
+ public:
+ void SetUp() override {
+
+ }
+
+ void TearDown() override {
+
+ }
+};
+
+} // namespace app2sd
+
+int main(int argc, char* argv[]) {
+ ::testing::InitGoogleTest(&argc, argv);
+ ::env = testing::AddGlobalTestEnvironment(new app2sd::App2sdEnvironment);
+ return RUN_ALL_TESTS();
+}