diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7cf35e3..5cccfa6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: - uses: actions/checkout@v3 - name: Install APT dependencies - run: sudo apt install libfuse3-dev libwebsockets-dev libgtest-dev libgmock-dev + run: sudo apt install libfuse3-dev libwebsockets-dev libgtest-dev libgmock-dev valgrind - name: Configure CMake run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} @@ -28,3 +28,6 @@ jobs: - name: Unit Test run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target test + + - name: Memcheck + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target memcheck diff --git a/CMakeLists.txt b/CMakeLists.txt index 44433ba..5d6503e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,15 +18,26 @@ target_link_libraries(webfuse PRIVATE webfuse_static) if(NOT(WITHOUT_TEST)) - pkg_check_modules(GTEST REQUIRED IMPORTED_TARGET gtest_main) + pkg_check_modules(GTEST REQUIRED gtest_main) + pkg_check_modules(GMOCK REQUIRED gmock) add_executable(alltests test/webfuse/test_app.cpp ) - target_link_libraries(alltests PRIVATE webfuse_static PkgConfig::GTEST) + target_include_directories(alltests PRIVATE ${GTEST_INCLUDE_DIRS} ${GMOCK_INCLUDE_DIRS}) + target_compile_options(alltests PRIVATE + ${GTEST_CFLAGS} ${GTEST_CFLAGS_OTHER} + ${GMOCK_CFLAGS} ${GMOCK_CFLAGS_OTHER} + ) + target_link_libraries(alltests PRIVATE webfuse_static ${GTEST_LIBRARIES} ${GMOCK_LIBRARIES}) enable_testing() add_test(NAME alltests COMMAND alltests) -endif() + find_program(VALGRIND valgrind REQUIRED) + if(VALGRIND) + add_custom_target(memcheck COMMAND valgrind --leak-check=full --error-exitcode=1 ./alltests) + endif() + +endif() \ No newline at end of file