From 5583ed224f815e329375553995d26a709c6b539b Mon Sep 17 00:00:00 2001 From: vvish Date: Sat, 8 Aug 2026 21:09:03 +0200 Subject: [PATCH 1/9] Update CI to use build_type from matrix --- .github/workflows/cmake-clang.yml | 2 +- .github/workflows/cmake-gcc.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake-clang.yml b/.github/workflows/cmake-clang.yml index 73fb7e3..96f6cf3 100644 --- a/.github/workflows/cmake-clang.yml +++ b/.github/workflows/cmake-clang.yml @@ -39,4 +39,4 @@ jobs: - name: Test working-directory: ${{env.BUILD_DIR}} - run: ctest -C ${{env.BUILD_TYPE}} + run: ctest -C ${{matrix.build_type}} diff --git a/.github/workflows/cmake-gcc.yml b/.github/workflows/cmake-gcc.yml index e68df6b..f9a9079 100644 --- a/.github/workflows/cmake-gcc.yml +++ b/.github/workflows/cmake-gcc.yml @@ -32,7 +32,7 @@ jobs: - name: Test working-directory: ${{env.BUILD_DIR}} - run: ctest -C ${{env.BUILD_TYPE}} + run: ctest -C ${{matrix.build_type}} - name: Generate coverage report if: ${{matrix.build_type == 'Debug'}} From 52f5e35ad3fad4c48b6469028138210baa85c4e5 Mon Sep 17 00:00:00 2001 From: vvish Date: Sat, 8 Aug 2026 21:18:42 +0200 Subject: [PATCH 2/9] Update gcc in CI to v. 14 --- .github/workflows/cmake-gcc.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cmake-gcc.yml b/.github/workflows/cmake-gcc.yml index f9a9079..0635782 100644 --- a/.github/workflows/cmake-gcc.yml +++ b/.github/workflows/cmake-gcc.yml @@ -7,8 +7,8 @@ on: branches: [ "main" ] env: - CXX_COMPILER: g++-12 - C_COMPILER: gcc-12 + CXX_COMPILER: g++-14 + C_COMPILER: gcc-14 jobs: build: @@ -39,8 +39,8 @@ jobs: working-directory: ${{github.workspace}} run: | sudo apt-get install lcov - lcov --gcov-tool gcov-12 --base-directory . --directory ${{env.BUILD_DIR}} -c -o coverage.info - lcov --gcov-tool gcov-12 --remove coverage.info "test/*" -o coverage.info + lcov --gcov-tool gcov-14 --base-directory . --directory ${{env.BUILD_DIR}} -c -o coverage.info + lcov --gcov-tool gcov-14 --remove coverage.info "test/*" -o coverage.info - name: Upload coverage to Codecov if: ${{matrix.build_type == 'Debug'}} From 15e737fd3542571fe612e0aa51cb9b02b8f15387 Mon Sep 17 00:00:00 2001 From: vvish Date: Sun, 9 Aug 2026 10:18:23 +0200 Subject: [PATCH 3/9] Switch to gcovr to collect coverage due to lcov 'mismatch' issue --- .github/workflows/cmake-gcc.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cmake-gcc.yml b/.github/workflows/cmake-gcc.yml index 0635782..a5b0e01 100644 --- a/.github/workflows/cmake-gcc.yml +++ b/.github/workflows/cmake-gcc.yml @@ -38,9 +38,13 @@ jobs: if: ${{matrix.build_type == 'Debug'}} working-directory: ${{github.workspace}} run: | - sudo apt-get install lcov - lcov --gcov-tool gcov-14 --base-directory . --directory ${{env.BUILD_DIR}} -c -o coverage.info - lcov --gcov-tool gcov-14 --remove coverage.info "test/*" -o coverage.info + set -eux + python3 -m pip install --upgrade pip + python3 -m pip install gcovr + g++-14 --version + gcov-14 --version + gcovr --version + gcovr -r . --gcov-executable gcov-14 --object-directory ${{env.BUILD_DIR}} --exclude 'test/.*' --exclude '3p/.*' --lcov -o coverage.info - name: Upload coverage to Codecov if: ${{matrix.build_type == 'Debug'}} From 064870c09bdaf4bfb143ede231494072e5f02f74 Mon Sep 17 00:00:00 2001 From: vvish Date: Sun, 9 Aug 2026 17:06:54 +0200 Subject: [PATCH 4/9] Use token for codecov --- .github/workflows/cmake-gcc.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cmake-gcc.yml b/.github/workflows/cmake-gcc.yml index a5b0e01..572c17d 100644 --- a/.github/workflows/cmake-gcc.yml +++ b/.github/workflows/cmake-gcc.yml @@ -53,3 +53,4 @@ jobs: fail_ci_if_error: true verbose: true files: coverage.info + token: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file From 7aee7dff6cbdd930db5bfec4b2ed1b5722545fe6 Mon Sep 17 00:00:00 2001 From: vvish Date: Sun, 9 Aug 2026 18:24:48 +0200 Subject: [PATCH 5/9] Update clang CI toolchain --- .github/workflows/cmake-clang.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cmake-clang.yml b/.github/workflows/cmake-clang.yml index 96f6cf3..3c505d8 100644 --- a/.github/workflows/cmake-clang.yml +++ b/.github/workflows/cmake-clang.yml @@ -7,8 +7,8 @@ on: branches: [ "main" ] env: - CXX_COMPILER: clang++-17 - C_COMPILER: clang-17 + CXX_COMPILER: clang++-20 + C_COMPILER: clang-20 jobs: build: @@ -27,9 +27,9 @@ jobs: - name: Prepare environment run: | wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && \ - sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main' && \ + sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main' && \ sudo apt update && \ - sudo apt-get install clang-17 lldb-17 lld-17 libc++-17-dev libc++abi-17-dev + sudo apt-get install clang-20 lldb-20 lld-20 libc++-20-dev libc++abi-20-dev - name: Configure CMake run: cmake -B ${{env.BUILD_DIR}} -DCMAKE_CXX_COMPILER=${{env.CXX_COMPILER}} -DCMAKE_C_COMPILER=${{env.C_COMPILER}} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} From 18cb0027290ab2ff8665787ca207a465ccf4ea6c Mon Sep 17 00:00:00 2001 From: vvish Date: Sun, 9 Aug 2026 18:39:07 +0200 Subject: [PATCH 6/9] Fix clang install --- .github/workflows/cmake-clang.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cmake-clang.yml b/.github/workflows/cmake-clang.yml index 3c505d8..75c6ea1 100644 --- a/.github/workflows/cmake-clang.yml +++ b/.github/workflows/cmake-clang.yml @@ -26,10 +26,8 @@ jobs: - name: Prepare environment run: | - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && \ - sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main' && \ - sudo apt update && \ - sudo apt-get install clang-20 lldb-20 lld-20 libc++-20-dev libc++abi-20-dev + sudo apt-get update + sudo apt-get install -y clang-20 lld-20 libc++-20-dev libc++abi-20-dev - name: Configure CMake run: cmake -B ${{env.BUILD_DIR}} -DCMAKE_CXX_COMPILER=${{env.CXX_COMPILER}} -DCMAKE_C_COMPILER=${{env.C_COMPILER}} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} From 599e34ea973d73a52eb7ad0fe951fca3934590bc Mon Sep 17 00:00:00 2001 From: vvish Date: Fri, 21 Aug 2026 22:38:07 +0200 Subject: [PATCH 7/9] Code fix after clang update --- .clang-format | 1 - .github/workflows/cmake-gcc.yml | 2 +- test/unit/test_transaction.cpp | 16 +++++----------- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/.clang-format b/.clang-format index 18ddea3..734b084 100644 --- a/.clang-format +++ b/.clang-format @@ -5,7 +5,6 @@ AlignConsecutiveDeclarations: false AlignEscapedNewlines: Left AlignOperands: true AlignTrailingComments: true -AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: false AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: None diff --git a/.github/workflows/cmake-gcc.yml b/.github/workflows/cmake-gcc.yml index 572c17d..d910eaa 100644 --- a/.github/workflows/cmake-gcc.yml +++ b/.github/workflows/cmake-gcc.yml @@ -53,4 +53,4 @@ jobs: fail_ci_if_error: true verbose: true files: coverage.info - token: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/test/unit/test_transaction.cpp b/test/unit/test_transaction.cpp index dbeca2a..383c672 100644 --- a/test/unit/test_transaction.cpp +++ b/test/unit/test_transaction.cpp @@ -213,7 +213,7 @@ TEST_F(test_transaction, trivial_types_transaction_get_not_found) template concept env_has_iterate_by_key_v - = requires(T t) { t.template iterate_by_key(std::declval()); }; + = requires(T t) { t.iterate_by_key(std::declval()); }; TEST_F(test_transaction, trivial_types_transaction_iterate) { @@ -231,13 +231,7 @@ TEST_F(test_transaction, trivial_types_transaction_iterate) EXPECT_CALL(api, mdb_cursor_open(test_txn, test_dbi, _)) .WillOnce(DoAll(SetArgPointee<2>(cursor), Return(MDB_SUCCESS))); - EXPECT_CALL( - api, - mdb_cursor_get( - cursor, - _, - _, - MDB_FIRST)) + EXPECT_CALL(api, mdb_cursor_get(cursor, _, _, MDB_FIRST)) .WillOnce(Return(MDB_SUCCESS)); EXPECT_CALL(api, mdb_cursor_close(cursor)); @@ -247,7 +241,7 @@ TEST_F(test_transaction, trivial_types_transaction_iterate) const auto result = transaction.iterate(); ASSERT_TRUE(result); - auto const& db_view = *result; + auto const &db_view = *result; auto const it = db_view.begin(); ASSERT_NE(it, db_view.end()); } @@ -292,11 +286,11 @@ TEST_F(test_transaction, trivial_types_dup_iterate_by_key) const auto result = transaction.iterate_by_key(0x12345678); ASSERT_TRUE(result); - auto const& db_view = *result; + auto const &db_view = *result; auto const it = db_view.begin(); ASSERT_NE(it, db_view.end()); - auto const& db_item = *it; + auto const &db_item = *it; EXPECT_EQ(db_item.key(), 0x12345678); EXPECT_EQ(db_item.value(), 0x20000030); } From 6416f715893a33dea518b6e2c9c239f0930a75c7 Mon Sep 17 00:00:00 2001 From: vvish Date: Sun, 23 Aug 2026 14:11:22 +0200 Subject: [PATCH 8/9] Extract versions and simplify commands --- .github/workflows/cmake-clang.yml | 11 +++++------ .github/workflows/cmake-gcc.yml | 13 +++++-------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/.github/workflows/cmake-clang.yml b/.github/workflows/cmake-clang.yml index 75c6ea1..d57908c 100644 --- a/.github/workflows/cmake-clang.yml +++ b/.github/workflows/cmake-clang.yml @@ -7,8 +7,7 @@ on: branches: [ "main" ] env: - CXX_COMPILER: clang++-20 - C_COMPILER: clang-20 + CLANG_VERSION: "20" jobs: build: @@ -27,14 +26,14 @@ jobs: - name: Prepare environment run: | sudo apt-get update - sudo apt-get install -y clang-20 lld-20 libc++-20-dev libc++abi-20-dev + sudo apt-get install -y clang-${CLANG_VERSION} lld-${CLANG_VERSION} libc++-${CLANG_VERSION}-dev libc++abi-${CLANG_VERSION}-dev - name: Configure CMake - run: cmake -B ${{env.BUILD_DIR}} -DCMAKE_CXX_COMPILER=${{env.CXX_COMPILER}} -DCMAKE_C_COMPILER=${{env.C_COMPILER}} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} + run: cmake -B ${{env.BUILD_DIR}} -DCMAKE_CXX_COMPILER=clang++-${CLANG_VERSION} -DCMAKE_C_COMPILER=clang-${CLANG_VERSION} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} - name: Build - run: cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} + run: cmake --build ${{env.BUILD_DIR}} - name: Test working-directory: ${{env.BUILD_DIR}} - run: ctest -C ${{matrix.build_type}} + run: ctest diff --git a/.github/workflows/cmake-gcc.yml b/.github/workflows/cmake-gcc.yml index d910eaa..4a45777 100644 --- a/.github/workflows/cmake-gcc.yml +++ b/.github/workflows/cmake-gcc.yml @@ -7,8 +7,7 @@ on: branches: [ "main" ] env: - CXX_COMPILER: g++-14 - C_COMPILER: gcc-14 + GCC_VERSION: "14" jobs: build: @@ -25,14 +24,14 @@ jobs: submodules: recursive - name: Configure CMake - run: cmake -B ${{env.BUILD_DIR}} -DCMAKE_CXX_COMPILER=${{env.CXX_COMPILER}} -DCMAKE_C_COMPILER=${{env.C_COMPILER}} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} + run: cmake -B ${{env.BUILD_DIR}} -DCMAKE_CXX_COMPILER=g++-${GCC_VERSION} -DCMAKE_C_COMPILER=gcc-${GCC_VERSION} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} - name: Build - run: cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} + run: cmake --build ${{env.BUILD_DIR}} - name: Test working-directory: ${{env.BUILD_DIR}} - run: ctest -C ${{matrix.build_type}} + run: ctest - name: Generate coverage report if: ${{matrix.build_type == 'Debug'}} @@ -41,10 +40,8 @@ jobs: set -eux python3 -m pip install --upgrade pip python3 -m pip install gcovr - g++-14 --version - gcov-14 --version gcovr --version - gcovr -r . --gcov-executable gcov-14 --object-directory ${{env.BUILD_DIR}} --exclude 'test/.*' --exclude '3p/.*' --lcov -o coverage.info + gcovr -r . --gcov-executable gcov-${GCC_VERSION} --object-directory ${{env.BUILD_DIR}} --exclude 'test/.*' --exclude '3p/.*' --lcov -o coverage.info - name: Upload coverage to Codecov if: ${{matrix.build_type == 'Debug'}} From ea761d8d2d9d8efe04ba0e4117cb7d82c291acd5 Mon Sep 17 00:00:00 2001 From: vvish Date: Fri, 4 Sep 2026 12:33:32 +0200 Subject: [PATCH 9/9] Review fixes --- .github/workflows/cmake-clang.yml | 4 ++-- .github/workflows/cmake-gcc.yml | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cmake-clang.yml b/.github/workflows/cmake-clang.yml index d57908c..51dd17b 100644 --- a/.github/workflows/cmake-clang.yml +++ b/.github/workflows/cmake-clang.yml @@ -26,10 +26,10 @@ jobs: - name: Prepare environment run: | sudo apt-get update - sudo apt-get install -y clang-${CLANG_VERSION} lld-${CLANG_VERSION} libc++-${CLANG_VERSION}-dev libc++abi-${CLANG_VERSION}-dev + sudo apt-get install -y clang-${{env.CLANG_VERSION}} lld-${{env.CLANG_VERSION}} libc++-${{env.CLANG_VERSION}}-dev libc++abi-${{env.CLANG_VERSION}}-dev - name: Configure CMake - run: cmake -B ${{env.BUILD_DIR}} -DCMAKE_CXX_COMPILER=clang++-${CLANG_VERSION} -DCMAKE_C_COMPILER=clang-${CLANG_VERSION} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} + run: cmake -B ${{env.BUILD_DIR}} -DCMAKE_CXX_COMPILER=clang++-${{env.CLANG_VERSION}} -DCMAKE_C_COMPILER=clang-${{env.CLANG_VERSION}} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} - name: Build run: cmake --build ${{env.BUILD_DIR}} diff --git a/.github/workflows/cmake-gcc.yml b/.github/workflows/cmake-gcc.yml index 4a45777..e831a5c 100644 --- a/.github/workflows/cmake-gcc.yml +++ b/.github/workflows/cmake-gcc.yml @@ -23,8 +23,13 @@ jobs: with: submodules: recursive + - name: Prepare environment + run: | + sudo apt-get update + sudo apt-get install -y gcc-${{env.GCC_VERSION}} g++-${{env.GCC_VERSION}} + - name: Configure CMake - run: cmake -B ${{env.BUILD_DIR}} -DCMAKE_CXX_COMPILER=g++-${GCC_VERSION} -DCMAKE_C_COMPILER=gcc-${GCC_VERSION} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} + run: cmake -B ${{env.BUILD_DIR}} -DCMAKE_CXX_COMPILER=g++-${{env.GCC_VERSION}} -DCMAKE_C_COMPILER=gcc-${{env.GCC_VERSION}} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} - name: Build run: cmake --build ${{env.BUILD_DIR}} @@ -41,7 +46,7 @@ jobs: python3 -m pip install --upgrade pip python3 -m pip install gcovr gcovr --version - gcovr -r . --gcov-executable gcov-${GCC_VERSION} --object-directory ${{env.BUILD_DIR}} --exclude 'test/.*' --exclude '3p/.*' --lcov -o coverage.info + gcovr -r . --gcov-executable gcov-${{env.GCC_VERSION}} --object-directory ${{env.BUILD_DIR}} --exclude 'test/.*' --exclude '3p/.*' --lcov -o coverage.info - name: Upload coverage to Codecov if: ${{matrix.build_type == 'Debug'}}