From 58bce46f4ea558e6c6cdaa8ea0d206ba997fe754 Mon Sep 17 00:00:00 2001 From: "liang.he@intel.com" Date: Thu, 30 Oct 2025 03:05:36 +0000 Subject: [PATCH 1/4] Enhance unit test workflow to include code coverage analysis --- .github/workflows/compilation_on_android_ubuntu.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/compilation_on_android_ubuntu.yml b/.github/workflows/compilation_on_android_ubuntu.yml index 98d4b1b723..f731c84b1f 100644 --- a/.github/workflows/compilation_on_android_ubuntu.yml +++ b/.github/workflows/compilation_on_android_ubuntu.yml @@ -366,10 +366,14 @@ jobs: - name: Build and run unit tests run: | - mkdir build && cd build - cmake .. -DWAMR_BUILD_TARGET=${{ matrix.build_target }} - cmake --build . --config Release --parallel 4 - ctest + rm -rf build + cmake -S . -B build -DWAMR_BUILD_TARGET=${{ matrix.build_target }} -DCOLLECT_CODE_COVERAGE=1 + cmake --build build --config Release --parallel 4 + ctest --test-dir build --output-on-failure + + lcov --capture --directory build --output-file coverage.all.info + lcov --extract coverage.all.info "*/core/iwasm/*" "*/core/shared/*" --output-file coverage.info + lcov --summary coverage.info working-directory: tests/unit build_regression_tests: From 4f6620ebe31b2ee55f477d8c33d06479ad7cfbdc Mon Sep 17 00:00:00 2001 From: "liang.he@intel.com" Date: Thu, 30 Oct 2025 06:28:13 +0000 Subject: [PATCH 2/4] install lcov --- .github/workflows/compilation_on_android_ubuntu.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/compilation_on_android_ubuntu.yml b/.github/workflows/compilation_on_android_ubuntu.yml index f731c84b1f..9ff32f840c 100644 --- a/.github/workflows/compilation_on_android_ubuntu.yml +++ b/.github/workflows/compilation_on_android_ubuntu.yml @@ -363,6 +363,11 @@ jobs: run: | sudo apt-get update sudo apt-get install -y g++-multilib + + - name: Install lcov + run: | + sudo apt-get update + sudo apt-get install -y lcov - name: Build and run unit tests run: | From 4f94cede1606f7b7c1ba65cfd78657d56f3d135c Mon Sep 17 00:00:00 2001 From: "liang.he@intel.com" Date: Thu, 30 Oct 2025 06:53:41 +0000 Subject: [PATCH 3/4] Put lcov in quiet mode --- .github/workflows/compilation_on_android_ubuntu.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/compilation_on_android_ubuntu.yml b/.github/workflows/compilation_on_android_ubuntu.yml index 9ff32f840c..bb633b2564 100644 --- a/.github/workflows/compilation_on_android_ubuntu.yml +++ b/.github/workflows/compilation_on_android_ubuntu.yml @@ -376,9 +376,9 @@ jobs: cmake --build build --config Release --parallel 4 ctest --test-dir build --output-on-failure - lcov --capture --directory build --output-file coverage.all.info - lcov --extract coverage.all.info "*/core/iwasm/*" "*/core/shared/*" --output-file coverage.info - lcov --summary coverage.info + lcov --quiet --capture --directory build --output-file coverage.all.info + lcov --quiet --extract coverage.all.info "*/core/iwasm/*" "*/core/shared/*" --output-file coverage.info + lcov --summary coverage.info >> $GITHUB_STEP_SUMMARY working-directory: tests/unit build_regression_tests: From ff5c480eaa8b0f5435b4e7010f41af8a5900db85 Mon Sep 17 00:00:00 2001 From: "liang.he@intel.com" Date: Fri, 31 Oct 2025 05:11:19 +0000 Subject: [PATCH 4/4] Only coverage collection for X86_64 targets --- .github/workflows/compilation_on_android_ubuntu.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/compilation_on_android_ubuntu.yml b/.github/workflows/compilation_on_android_ubuntu.yml index bb633b2564..752fdbf1e9 100644 --- a/.github/workflows/compilation_on_android_ubuntu.yml +++ b/.github/workflows/compilation_on_android_ubuntu.yml @@ -370,6 +370,15 @@ jobs: sudo apt-get install -y lcov - name: Build and run unit tests + if: matrix.build_target == 'X86_32' + run: | + rm -rf build + cmake -S . -B build -DWAMR_BUILD_TARGET=${{ matrix.build_target }} + cmake --build build --config Release --parallel 4 + ctest --test-dir build --output-on-failure + + - name: Build and run unit tests and collect coverage-data + if: matrix.build_target == 'X86_64' run: | rm -rf build cmake -S . -B build -DWAMR_BUILD_TARGET=${{ matrix.build_target }} -DCOLLECT_CODE_COVERAGE=1 @@ -377,6 +386,7 @@ jobs: ctest --test-dir build --output-on-failure lcov --quiet --capture --directory build --output-file coverage.all.info + # only keep coverage data for platform independent code lcov --quiet --extract coverage.all.info "*/core/iwasm/*" "*/core/shared/*" --output-file coverage.info lcov --summary coverage.info >> $GITHUB_STEP_SUMMARY working-directory: tests/unit