diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index a64bbc75..fb962b5e 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -63,7 +63,9 @@ jobs: - name: Install Packages run: | sudo apt-get update - sudo apt-get install ninja-build gcc-multilib g++-multilib libgtest-dev meson cmake cmake-data + sudo apt-get install ninja-build gcc-multilib g++-multilib libgtest-dev meson cmake cmake-data libasan5 valgrind + sudo apt-get install curl jq + sudo apt-get install software-properties-common - name: Install TurboJPEG library run: sudo apt-get install libturbojpeg0-dev libjpeg8-dev @@ -86,3 +88,12 @@ jobs: with: name: UnitTestReport path: build/meson-logs/testlog.txt + + - name: Run memcheck Script(valgrind) + run: | + export PATH=$PATH:~/.local/bin/ + chmod +x "${GITHUB_WORKSPACE}/.github/workflows/memcheck_valgrind.sh" + "${GITHUB_WORKSPACE}/.github/workflows/memcheck_valgrind.sh" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + diff --git a/.github/workflows/memcheck_valgrind.sh b/.github/workflows/memcheck_valgrind.sh new file mode 100755 index 00000000..3dd59c80 --- /dev/null +++ b/.github/workflows/memcheck_valgrind.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +echo "Run Valgrind" +echo "valgrind --leak-check=yes ./tvgUnitTests" +cd ./build/test + +valgrind --leak-check=yes ./tvgUnitTests > memcheck_valgrind.txt 2>&1 + + +PAYLOAD_MEMCHECK=`cat memcheck_valgrind.txt` +COMMENTS_URL=$(cat $GITHUB_EVENT_PATH | jq -r .pull_request.comments_url) + +echo $COMMENTS_URL +echo "MEMCHECK errors:" +echo $PAYLOAD_MEMCHECK + +if [[ $PAYLOAD_MEMCHECK == *"definitely lost:"* || $PAYLOAD_MEMCHECK == *"Invalid read "* || $PAYLOAD_MEMCHECK == *"Invalid write "* ]]; then + OUTPUT+=$'\n**MEMCHECK(VALGRIND) RESULT**:\n' + OUTPUT+=$'\n`valgrind --leak-check=yes ./tvgUnitTests`\n' + OUTPUT+=$'\n```\n' + OUTPUT+="$PAYLOAD_MEMCHECK" + OUTPUT+=$'\n```\n' +fi + +PAYLOAD=$(echo '{}' | jq --arg body "$OUTPUT" '.body = $body') + +curl -s -S -H "Authorization: token $GITHUB_TOKEN" --header "Content-Type: application/vnd.github.VERSION.text+json" --data "$PAYLOAD" "$COMMENTS_URL"