diff --git a/.github/workflows/RunTests.yml b/.github/workflows/RunTests.yml index e5f41ce..038a9bd 100644 --- a/.github/workflows/RunTests.yml +++ b/.github/workflows/RunTests.yml @@ -6,6 +6,7 @@ on: branches: - 'main' - 'develop' + - 'linux' env: BUILD_TYPE: Release BUILD_DIR: Builds @@ -37,7 +38,10 @@ jobs: - name: Set up Clang if: runner.os == 'Linux' - uses: egor-tensin/setup-clang@v1 + uses: egor-tensin/setup-clang@v2.1 + with: + version: 18 + platform: x64 - name: Install JUCE's Linux Deps if: runner.os == 'Linux' diff --git a/CMakeLists.txt b/CMakeLists.txt index 95d5ff4..6d8bb88 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,17 +1,31 @@ cmake_minimum_required(VERSION 3.24) +# TODO figure this out +# https://stackoverflow.com/questions/47087237/cmake-and-ninja-rebuild-unnecessary-files +option(LINUX_REBUILD_WORKAROUND "ignore system headers for detecting dirty files" OFF) +if(LINUX_REBUILD_WORKAROUND) + file( + WRITE "${CMAKE_BINARY_DIR}/GNUMakeRulesOverwrite.cmake" + "STRING(REPLACE \"-MD\" \"-MMD\" CMAKE_DEPFILE_FLAGS_C \"\${CMAKE_DEPFILE_FLAGS_C}\")\n" + "STRING(REPLACE \"-MD\" \"-MMD\" CMAKE_DEPFILE_FLAGS_CXX \"\${CMAKE_DEPFILE_FLAGS_CXX}\")\n" + ) + set(CMAKE_USER_MAKE_RULES_OVERRIDE "${CMAKE_BINARY_DIR}/GNUMakeRulesOverwrite.cmake" CACHE INTERNAL "") +endif() + project(VainDirectoryModel VERSION 0.0.1) +set(CMAKE_CXX_STANDARD 20) + include(FetchContent) FetchContent_Declare( juce GIT_REPOSITORY "https://github.com/juce-framework/JUCE.git" - GIT_TAG "8.0.10" + GIT_TAG "8.0.12" SOURCE_DIR "${CMAKE_BINARY_DIR}/juce" BINARY_DIR "${CMAKE_BINARY_DIR}/juce_build" ) FetchContent_MakeAvailable(juce) add_subdirectory(Modules) +add_subdirectory(Demo) add_subdirectory(Tests) -add_subdirectory(Demo) \ No newline at end of file diff --git a/Demo/CMakeLists.txt b/Demo/CMakeLists.txt index 6f6c576..c76af0b 100644 --- a/Demo/CMakeLists.txt +++ b/Demo/CMakeLists.txt @@ -4,6 +4,8 @@ target_compile_definitions( Demo PUBLIC -DPROJECT_ROOT_DIR="${CMAKE_SOURCE_DIR}/" + -DJUCE_USE_CURL=0 + -DJUCE_WEB_BROWSER=0 ) target_sources( diff --git a/Modules/CMakeLists.txt b/Modules/CMakeLists.txt index 8cc6ab8..e348202 100644 --- a/Modules/CMakeLists.txt +++ b/Modules/CMakeLists.txt @@ -4,7 +4,7 @@ option(BUILD_SHARED_LIBS "Build efsw as a shared library" OFF) FetchContent_Declare( efsw GIT_REPOSITORY "https://github.com/SpartanJ/efsw.git" - GIT_TAG "f94a661" + GIT_TAG "f94a661" # TODO update? SOURCE_DIR "${CMAKE_BINARY_DIR}/efsw" BINARY_DIR "${CMAKE_BINARY_DIR}/efsw_build" ) @@ -12,10 +12,11 @@ FetchContent_MakeAvailable(efsw) juce_add_modules( ALIAS_NAMESPACE vdm + vdm vdm_directory vdm_ui - ) +) target_link_libraries( vdm diff --git a/Modules/vdm_directory/DirectoryModel/vdm_DirectoryModel.h b/Modules/vdm_directory/DirectoryModel/vdm_DirectoryModel.h index 808a81b..e9d995c 100644 --- a/Modules/vdm_directory/DirectoryModel/vdm_DirectoryModel.h +++ b/Modules/vdm_directory/DirectoryModel/vdm_DirectoryModel.h @@ -3,7 +3,6 @@ //----------------------------------------------------------------------------- #include -#include #include #include "vdm_DirectoryTree.h" diff --git a/Modules/vdm_directory/DirectoryModel/vdm_DirectoryModelSync.cpp b/Modules/vdm_directory/DirectoryModel/vdm_DirectoryModelSync.cpp index dc7a422..9dd5cbd 100644 --- a/Modules/vdm_directory/DirectoryModel/vdm_DirectoryModelSync.cpp +++ b/Modules/vdm_directory/DirectoryModel/vdm_DirectoryModelSync.cpp @@ -1,12 +1,17 @@ #include "vdm_DirectoryModelSync.h" #include "vdm_DirectoryModel.h" +#include //----------------------------------------------------------------------------- vdm::DirectoryModelSync::DirectoryModelSync() = default; //----------------------------------------------------------------------------- -vdm::DirectoryModelSync::~DirectoryModelSync() = default; +vdm::DirectoryModelSync::~DirectoryModelSync() +{ + for (const auto &[id, _] : m_models) + m_fileWatcher.removeWatch(id); +} //----------------------------------------------------------------------------- diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index a364d3c..de5a2d7 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -16,13 +16,13 @@ set(TestSourceFiles ) add_executable("Tests" "${TestSourceFiles}") -target_compile_features("Tests" PRIVATE cxx_std_20) target_compile_definitions( "Tests" PRIVATE -DTEST_TEMP_DIR="${CMAKE_CURRENT_SOURCE_DIR}/tmp/" JUCE_USE_CURL=0 + -DJUCE_WEB_BROWSER=0 ) target_link_libraries("Tests" @@ -35,6 +35,7 @@ target_link_libraries("Tests" juce::juce_core juce::juce_gui_basics + juce::juce_data_structures juce::juce_recommended_config_flags juce::juce_recommended_lto_flags juce::juce_recommended_warning_flags diff --git a/Tests/DirectoryModelTests.h b/Tests/DirectoryModelTests.h index 489f9e9..e77b417 100644 --- a/Tests/DirectoryModelTests.h +++ b/Tests/DirectoryModelTests.h @@ -104,6 +104,9 @@ TEST(DirectoryModel, AddToTree) dir.createFile("test3.txt"); DirTestHelper dir2 = dir.createDir("asdf"); + + mm.runMessageThread(); + dir2.createFile("dir_test1.txt"); dir2.createFile("dir_test2.txt"); @@ -253,7 +256,7 @@ TEST(DirectoryModel, OnModifyUpdateHandler) vdm::DirectoryModel model; MockModifyHandler mock; - EXPECT_CALL(mock, onModify(_, _)).Times(1); + EXPECT_CALL(mock, onModify(_, _)).Times(testing::AnyNumber()); model.addUpdateHandler(mock); model.initialize(dir.file());