Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 55 additions & 22 deletions tests/test-prj-running.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,70 @@
#
# SPDX-License-Identifier: GPL-3.0-or-later

set -u

builddir=build
reportdir=build-ut
# rm -rf $builddir
# rm -rf ../$builddir
# rm -rf $reportdir
# rm -rf ../$reportdir
# mkdir ../$builddir
# mkdir ../$reportdir
cd ../$builddir
#编译(启用单元测试构建)
# cmake -DCMAKE_SAFETYTEST_ARG="CMAKE_SAFETYTEST_ARG_ON" -DDOTEST=ON -DBUILD_TESTS=ON -DUSE_PDFIUM_BUNDLE=ON -DCMAKE_BUILD_TYPE=Debug ..
make -j8
#生成asan日志和ut测试xml结果
./tests/test-deepin-reader --gtest_output=xml:./report/report_deepin-reader.xml

workdir=$(cd ../$(dirname $0)/$builddir; pwd)
# Resolve project root (parent of the tests/ directory that holds this script)
script_dir="$(cd "$(dirname "$0")" && pwd)"
project_root="$(cd "${script_dir}/.." && pwd)"

build_path="${project_root}/${builddir}"
report_path="${project_root}/${reportdir}"

# Fresh build directory to ensure a clean coverage run
rm -rf "${build_path}"
mkdir -p "${build_path}"

# Fresh report directory
rm -rf "${report_path}"
mkdir -p "${report_path}"

cd "${build_path}"

# Configure project with unit tests and coverage instrumentation enabled
cmake -DCMAKE_SAFETYTEST_ARG="CMAKE_SAFETYTEST_ARG_ON" \
-DDOTEST=ON \
-DBUILD_TESTS=ON \
-DUSE_PDFIUM_BUNDLE=ON \
-DCMAKE_BUILD_TYPE=Debug \
"${project_root}"

mkdir -p report
#统计代码覆盖率并生成html报告
lcov -d $workdir -c -o ./coverage.info
# Compile tests target
make -j"$(nproc)" test-deepin-reader

lcov --extract ./coverage.info '*/reader/*' -o ./coverage.info
# Ensure report directory used by gtest exists inside the build tree
mkdir -p "${build_path}/report"

lcov --remove ./coverage.info '*/tests/*' -o ./coverage.info
# Run tests and produce XML report
./tests/test-deepin-reader --gtest_output=xml:"${build_path}/report/report_deepin-reader.xml"

# Directory that holds coverage artifacts (build tree of the project)
workdir="${build_path}"

# Reset any stale coverage counters before recapture
lcov --directory "${workdir}" --zerocounters || true

# Re-run tests so .gcda files reflect a clean run
./tests/test-deepin-reader --gtest_output=xml:"${build_path}/report/report_deepin-reader.xml"

# Collect coverage data
lcov -d "${workdir}" -c -o ./coverage.info

# Keep only reader sources, drop tests themselves
lcov --extract ./coverage.info '*/reader/*' -o ./coverage.info
lcov --remove ./coverage.info '*/tests/*' -o ./coverage.info

# Generate HTML report
genhtml -o ./html ./coverage.info

# Rename main index for downstream tooling
mv ./html/index.html ./html/cov_deepin-reader.html
#对asan、ut、代码覆盖率结果收集至指定文件夹
cp -r html ../$reportdir/
cp -r report ../$reportdir/
cp -r asan*.log* ../$reportdir/asan_deepin-reader.log 2>/dev/null || true

# Publish artifacts into project report dir
cp -r html "${report_path}/"
cp -r "${build_path}/report" "${report_path}/"
cp -r asan*.log* "${report_path}/asan_deepin-reader.log" 2>/dev/null || true

exit 0
Loading